Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

164 lines
3.8 KiB

/*++
Copyright (c) 1991 - 1993 Microsoft Corporation
Module Name:
sffdisk.h
Abstract:
Author:
Neil Sandlin (neilsa) 26-Apr-99
Environment:
Kernel mode only.
Notes:
--*/
#ifndef _SFFDISK_H_
#define _SFFDISK_H_
#ifdef POOL_TAGGING
#ifdef ExAllocatePool
#undef ExAllocatePool
#endif
#define ExAllocatePool(a,b) ExAllocatePoolWithTag(a,b,'cmeM')
#endif
//
// The byte in the boot sector that specifies the type of media, and
// the values that it can assume. We can often tell what type of media
// is in the drive by seeing which controller parameters allow us to read
// the diskette, but some different densities are readable with the same
// parameters so we use this byte to decide the media type.
//
#pragma pack(1)
typedef struct _BOOT_SECTOR_INFO {
UCHAR JumpByte;
UCHAR Ignore1[2];
UCHAR OemData[8];
USHORT BytesPerSector;
UCHAR SectorsPerCluster;
USHORT ReservedSectors;
UCHAR NumberOfFATs;
USHORT RootEntries;
USHORT TotalSectors;
UCHAR MediaDescriptor;
USHORT SectorsPerFAT;
USHORT SectorsPerTrack;
USHORT Heads;
ULONG BigHiddenSectors;
ULONG BigTotalSectors;
} BOOT_SECTOR_INFO, *PBOOT_SECTOR_INFO;
#pragma pack()
//
// Runtime device structures
//
//
struct _SFFDISK_EXTENSION;
//
// function block to support different technologies
//
typedef struct _SFFDISK_FUNCTION_BLOCK {
NTSTATUS
(*Initialize)(
IN struct _SFFDISK_EXTENSION *sffdiskExtension
);
NTSTATUS
(*DeleteDevice)(
IN struct _SFFDISK_EXTENSION *sffdiskExtension
);
NTSTATUS
(*GetDiskParameters)(
IN struct _SFFDISK_EXTENSION *sffdiskExtension
);
BOOLEAN
(*IsWriteProtected)(
IN struct _SFFDISK_EXTENSION *sffdiskExtension
);
NTSTATUS
(*ReadProc)(
IN struct _SFFDISK_EXTENSION *sffdiskExtension,
IN PIRP Irp
);
NTSTATUS
(*WriteProc)(
IN struct _SFFDISK_EXTENSION *sffdiskExtension,
IN PIRP Irp
);
} SFFDISK_FUNCTION_BLOCK, *PSFFDISK_FUNCTION_BLOCK;
//
// There is one SFFDISK_EXTENSION attached to the device object of each
// SFFDISKpy drive. Only data directly related to that drive (and the media
// in it) is stored here; common data is in CONTROLLER_DATA. So the
// SFFDISK_EXTENSION has a pointer to the CONTROLLER_DATA.
//
typedef struct _SFFDISK_EXTENSION {
PDEVICE_OBJECT UnderlyingPDO;
PDEVICE_OBJECT TargetObject;
PDEVICE_OBJECT DeviceObject;
PSFFDISK_FUNCTION_BLOCK FunctionBlock;
UNICODE_STRING DeviceName;
// UNICODE_STRING LinkName;
UNICODE_STRING InterfaceString;
ULONGLONG ByteCapacity;
ULONGLONG Cylinders;
ULONG TracksPerCylinder;
ULONG SectorsPerTrack;
ULONG BytesPerSector;
BOOLEAN IsStarted;
BOOLEAN IsRemoved;
BOOLEAN IsMemoryMapped;
BOOLEAN NoDrive;
ULONGLONG RelativeOffset;
UCHAR SystemId;
//
// Type of bus we are on
//
INTERFACE_TYPE InterfaceType;
//
// PcCard specific
//
ULONGLONG HostBase;
PCHAR MemoryWindowBase;
ULONG MemoryWindowSize;
PCMCIA_INTERFACE_STANDARD PcmciaInterface;
BUS_INTERFACE_STANDARD PcmciaBusInterface;
//
// SdCard specific
//
PVOID SdbusInterfaceContext;
} SFFDISK_EXTENSION, *PSFFDISK_EXTENSION;
#endif // _SFFDISK_H_