diff options
author | Danny Smith <dannysmith@users.sourceforge.net> | 2003-04-26 08:31:29 +0000 |
---|---|---|
committer | Danny Smith <dannysmith@users.sourceforge.net> | 2003-04-26 08:31:29 +0000 |
commit | d9d35a454bdb2220e7b4b56bfca7120c37bd72dc (patch) | |
tree | a6fdda4720be585bc9a9899b37a26ee4b506c41e /winsup/w32api/include/winioctl.h | |
parent | f615d74b72e21d964771c3b0a0fe186561684a3b (diff) | |
download | cygnal-d9d35a454bdb2220e7b4b56bfca7120c37bd72dc.tar.gz cygnal-d9d35a454bdb2220e7b4b56bfca7120c37bd72dc.tar.bz2 cygnal-d9d35a454bdb2220e7b4b56bfca7120c37bd72dc.zip |
2003-04-26 Danny Smith <dannysmith@users.sourceforge.net>
* include/winioctl.h: Clean up formatting.
(RETRIEVAL_POINTERS_BUFFER): Add fields to Extents[1] struct.
(CREATE_DISK): Add _ANONYMOUS_UNION macro.
(DISK_CACHE_INFORMATION): Likewise.
(DISK_DETECTION_INFO): Likewise.
(DISK_PARTITION_INFO): Likewise.
(PARTITION_INFORMATION_EX): Likewise.
(DRIVE_LAYOUT_INFORMATION_EX): Likewise.
2003-04-26 Casper S. Hornstrup <chorns@users.sourceforge.net>
* include/winbase.h (DeleteVolumeMountPoint[AW],
FindFirstVolumeMountPoint[AW], FindNextVolumeMountPoint[AW],
FindVolumeMountPointClose, GetVolumeNameForVolumeMountPoint[AW],
GetVolumePathName[AW], GetVolumePathNamesForVolumeName[AW],
SetVolumeMountPoint[AW]): Add prototypes.
* include/winioctl.h (IOCTL_DISK_GET_PARTITION_INFO_EX,
IOCTL_DISK_SET_PARTITION_INFO_EX,
IOCTL_DISK_GET_DRIVE_LAYOUT_EX,
IOCTL_DISK_SET_DRIVE_LAYOUT_EX, IOCTL_DISK_CREATE_DISK,
IOCTL_DISK_GET_LENGTH_INFO, IOCTL_DISK_PERFORMANCE_OFF,
IOCTL_DISK_GET_DRIVE_GEOMETRY_EX, IOCTL_DISK_GROW_PARTITION,
IOCTL_DISK_GET_CACHE_INFORMATION,
IOCTL_DISK_SET_CACHE_INFORMATION,
IOCTL_DISK_DELETE_DRIVE_LAYOUT, IOCTL_DISK_UPDATE_PROPERTIES,
FSCTL_GET_VOLUME_BITMAP, FSCTL_GET_RETRIEVAL_POINTERS,
FSCTL_MOVE_FILE): Define.
(CREATE_DISK_GPT, CREATE_DISK_MBR, CREATE_DISK,
DISK_CACHE_INFORMATION,
DETECTION_TYPE, DISK_INT13_INFO, DISK_EX_INT13_INFO,
DISK_DETECTION_INFO, DISK_GEOMETRY_EX, DISK_GROW_PARTITION,
DISK_PARTITION_INFO, DISKQUOTA_USER_INFORMATION,
GET_LENGTH_INFORMATION, DISK_EXTENT, VOLUME_DISK_EXTENTS,
DRIVE_LAYOUT_INFORMATION_GPT, DRIVE_LAYOUT_INFORMATION_MBR,
PARTITION_INFORMATION_MBR, PARTITION_INFORMATION_GPT,
PARTITION_INFORMATION_EX, DRIVE_LAYOUT_INFORMATION_EX,
MOVE_FILE_DATA,
RETRIEVAL_POINTERS_BUFFER, STARTING_LCN_INPUT_BUFFER,
STARTING_VCN_INPUT_BUFFER, VOLUME_BITMAP_BUFFER): Add structs
(PARTITION_STYLE, DISK_CACHE_RETENTION_PRIORITY): Add enums.
(MEDIA_TYPE): Add F3_120M_512, F3_640_512, F5_640_512,
F5_720_512,
F3_1Pt2_512, F3_1Pt23_1024, F5_1Pt23_1024, F3_128Mb_512,
F3_230Mb_512,
F8_256_128, F3_200Mb_512, F3_240M_512, and F3_32M_512.
* lib/kernel32.def (GetVolumePathNamesForVolumeName[AW]): Add
stubs.
Diffstat (limited to 'winsup/w32api/include/winioctl.h')
-rw-r--r-- | winsup/w32api/include/winioctl.h | 363 |
1 files changed, 286 insertions, 77 deletions
diff --git a/winsup/w32api/include/winioctl.h b/winsup/w32api/include/winioctl.h index 7d988490b..ed1a47155 100644 --- a/winsup/w32api/include/winioctl.h +++ b/winsup/w32api/include/winioctl.h @@ -47,6 +47,19 @@ extern "C" { #define IOCTL_DISK_HISTOGRAM_RESET CTL_CODE(IOCTL_DISK_BASE,14,METHOD_BUFFERED,FILE_ANY_ACCESS) #define IOCTL_DISK_REQUEST_STRUCTURE CTL_CODE(IOCTL_DISK_BASE,15,METHOD_BUFFERED,FILE_ANY_ACCESS) #define IOCTL_DISK_REQUEST_DATA CTL_CODE(IOCTL_DISK_BASE,16,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_GET_PARTITION_INFO_EX CTL_CODE(IOCTL_DISK_BASE,0x12,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_SET_PARTITION_INFO_EX CTL_CODE(IOCTL_DISK_BASE,0x13,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_DISK_GET_DRIVE_LAYOUT_EX CTL_CODE(IOCTL_DISK_BASE,0x14,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_SET_DRIVE_LAYOUT_EX CTL_CODE(IOCTL_DISK_BASE,0x15,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_DISK_CREATE_DISK CTL_CODE(IOCTL_DISK_BASE,0x16,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_DISK_GET_LENGTH_INFO CTL_CODE(IOCTL_DISK_BASE,0x17,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_DISK_PERFORMANCE_OFF CTL_CODE(IOCTL_DISK_BASE,0x18,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_GET_DRIVE_GEOMETRY_EX CTL_CODE(IOCTL_DISK_BASE,0x28,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_GROW_PARTITION CTL_CODE(IOCTL_DISK_BASE,0x34,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_DISK_GET_CACHE_INFORMATION CTL_CODE(IOCTL_DISK_BASE,0x35,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_DISK_SET_CACHE_INFORMATION CTL_CODE(IOCTL_DISK_BASE,0x36,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_DISK_DELETE_DRIVE_LAYOUT CTL_CODE(IOCTL_DISK_BASE,0x40,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_DISK_UPDATE_PROPERTIES CTL_CODE(IOCTL_DISK_BASE,0x50,METHOD_BUFFERED,FILE_ANY_ACCESS) #define IOCTL_DISK_CHECK_VERIFY CTL_CODE(IOCTL_DISK_BASE,0x200,METHOD_BUFFERED,FILE_READ_ACCESS) #define IOCTL_DISK_MEDIA_REMOVAL CTL_CODE(IOCTL_DISK_BASE,0x201,METHOD_BUFFERED,FILE_READ_ACCESS) #define IOCTL_DISK_EJECT_MEDIA CTL_CODE(IOCTL_DISK_BASE,0x202,METHOD_BUFFERED,FILE_READ_ACCESS) @@ -66,6 +79,9 @@ extern "C" { #define FSCTL_SET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,16,METHOD_BUFFERED,FILE_READ_DATA|FILE_WRITE_DATA) #define FSCTL_READ_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,17,METHOD_NEITHER,FILE_READ_DATA) #define FSCTL_WRITE_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,18,METHOD_NEITHER,FILE_WRITE_DATA) +#define FSCTL_GET_VOLUME_BITMAP CTL_CODE(FILE_DEVICE_FILE_SYSTEM,27,METHOD_NEITHER,FILE_ANY_ACCESS) +#define FSCTL_GET_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM,28,METHOD_NEITHER,FILE_ANY_ACCESS) +#define FSCTL_MOVE_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,29,METHOD_BUFFERED,FILE_ANY_ACCESS) #define FSCTL_GET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS) #define FSCTL_SET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 41, METHOD_BUFFERED, FILE_ANY_ACCESS) #define FSCTL_DELETE_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 43, METHOD_BUFFERED, FILE_ANY_ACCESS) @@ -175,28 +191,138 @@ typedef struct _BIN_RESULTS { DWORD NumberOfBins; BIN_COUNT BinCounts[1]; } BIN_RESULTS,*PBIN_RESULTS; +typedef enum _PARTITION_STYLE { + PARTITION_STYLE_MBR, + PARTITION_STYLE_GPT, + PARTITION_STYLE_RAW +} PARTITION_STYLE; +typedef struct { + GUID DiskId; + DWORD MaxPartitionCount; +} CREATE_DISK_GPT,*PCREATE_DISK_GPT; +typedef struct { + DWORD Signature; +} CREATE_DISK_MBR,*PCREATE_DISK_MBR; +typedef struct { + PARTITION_STYLE PartitionStyle; + _ANONYMOUS_UNION union { + CREATE_DISK_MBR Mbr; + CREATE_DISK_GPT Gpt; + }; +} CREATE_DISK,*PCREATE_DISK; +typedef enum { + EqualPriority, + KeepPrefetchedData, + KeepReadData +} DISK_CACHE_RETENTION_PRIORITY; +typedef struct _DISK_CACHE_INFORMATION { + BOOLEAN ParametersSavable; + BOOLEAN ReadCacheEnabled; + BOOLEAN WriteCacheEnabled; + DISK_CACHE_RETENTION_PRIORITY ReadRetentionPriority; + DISK_CACHE_RETENTION_PRIORITY WriteRetentionPriority; + WORD DisablePrefetchTransferLength; + BOOLEAN PrefetchScalar; + _ANONYMOUS_UNION union { + struct { + WORD Minimum; + WORD Maximum; + WORD MaximumBlocks; + } ScalarPrefetch; + struct { + WORD Minimum; + WORD Maximum; + } BlockPrefetch; + }; +} DISK_CACHE_INFORMATION,*PDISK_CACHE_INFORMATION; +typedef enum _DETECTION_TYPE { + DetectNone, + DetectInt13, + DetectExInt13 +} DETECTION_TYPE; +typedef struct _DISK_INT13_INFO { + WORD DriveSelect; + DWORD MaxCylinders; + WORD SectorsPerTrack; + WORD MaxHeads; + WORD NumberDrives; +} DISK_INT13_INFO,*PDISK_INT13_INFO; +typedef struct _DISK_EX_INT13_INFO { + WORD ExBufferSize; + WORD ExFlags; + DWORD ExCylinders; + DWORD ExHeads; + DWORD ExSectorsPerTrack; + DWORD64 ExSectorsPerDrive; + WORD ExSectorSize; + WORD ExReserved; +} DISK_EX_INT13_INFO,*PDISK_EX_INT13_INFO; +typedef struct _DISK_DETECTION_INFO { + DWORD SizeOfDetectInfo; + DETECTION_TYPE DetectionType; + _ANONYMOUS_UNION union { + _ANONYMOUS_STRUCT struct { + DISK_INT13_INFO Int13; + DISK_EX_INT13_INFO ExInt13; + }; + }; +} DISK_DETECTION_INFO,*PDISK_DETECTION_INFO; typedef enum _MEDIA_TYPE { - Unknown, - F5_1Pt2_512, - F3_1Pt44_512, - F3_2Pt88_512, - F3_20Pt8_512, - F3_720_512, - F5_360_512, - F5_320_512, - F5_320_1024, - F5_180_512, - F5_160_512, - RemovableMedia, - FixedMedia -} MEDIA_TYPE, *PMEDIA_TYPE ; + Unknown, + F5_1Pt2_512, + F3_1Pt44_512, + F3_2Pt88_512, + F3_20Pt8_512, + F3_720_512, + F5_360_512, + F5_320_512, + F5_320_1024, + F5_180_512, + F5_160_512, + RemovableMedia, + FixedMedia, + F3_120M_512, + F3_640_512, + F5_640_512, + F5_720_512, + F3_1Pt2_512, + F3_1Pt23_1024, + F5_1Pt23_1024, + F3_128Mb_512, + F3_230Mb_512, + F8_256_128, + F3_200Mb_512, + F3_240M_512, + F3_32M_512 +} MEDIA_TYPE,*PMEDIA_TYPE; typedef struct _DISK_GEOMETRY { - LARGE_INTEGER Cylinders; - MEDIA_TYPE MediaType; - DWORD TracksPerCylinder; - DWORD SectorsPerTrack; - DWORD BytesPerSector; -} DISK_GEOMETRY, *PDISK_GEOMETRY; + LARGE_INTEGER Cylinders; + MEDIA_TYPE MediaType; + DWORD TracksPerCylinder; + DWORD SectorsPerTrack; + DWORD BytesPerSector; +} DISK_GEOMETRY,*PDISK_GEOMETRY; +typedef struct _DISK_GEOMETRY_EX { + DISK_GEOMETRY Geometry; + LARGE_INTEGER DiskSize; + BYTE Data[1]; +} DISK_GEOMETRY_EX,*PDISK_GEOMETRY_EX; +typedef struct _DISK_GROW_PARTITION { + DWORD PartitionNumber; + LARGE_INTEGER BytesToGrow; +} DISK_GROW_PARTITION, *PDISK_GROW_PARTITION; +typedef struct _DISK_PARTITION_INFO { + DWORD SizeOfPartitionInfo; + PARTITION_STYLE PartitionStyle; + _ANONYMOUS_UNION union { + struct { + DWORD Signature; + } Mbr; + struct { + GUID DiskId; + } Gpt; + }; +} DISK_PARTITION_INFO,*PDISK_PARTITION_INFO; typedef struct _DISK_PERFORMANCE { LARGE_INTEGER BytesRead; LARGE_INTEGER BytesWritten; @@ -207,88 +333,171 @@ typedef struct _DISK_PERFORMANCE { DWORD QueueDepth; } DISK_PERFORMANCE, *PDISK_PERFORMANCE; typedef struct _DISK_RECORD { - LARGE_INTEGER ByteOffset; - LARGE_INTEGER StartTime; - LARGE_INTEGER EndTime; - PVOID VirtualAddress; - DWORD NumberOfBytes; - BYTE DeviceNumber; - BOOLEAN ReadRequest; + LARGE_INTEGER ByteOffset; + LARGE_INTEGER StartTime; + LARGE_INTEGER EndTime; + PVOID VirtualAddress; + DWORD NumberOfBytes; + BYTE DeviceNumber; + BOOLEAN ReadRequest; } DISK_RECORD,*PDISK_RECORD; typedef struct _DISK_LOGGING { - BYTE Function; - PVOID BufferAddress; - DWORD BufferSize; + BYTE Function; + PVOID BufferAddress; + DWORD BufferSize; } DISK_LOGGING,*PDISK_LOGGING; +typedef struct DiskQuotaUserInformation { + LONGLONG QuotaUsed; + LONGLONG QuotaThreshold; + LONGLONG QuotaLimit; +} DISKQUOTA_USER_INFORMATION,*PDISKQUOTA_USER_INFORMATION; typedef struct _FORMAT_PARAMETERS { - MEDIA_TYPE MediaType; - DWORD StartCylinderNumber; - DWORD EndCylinderNumber; - DWORD StartHeadNumber; - DWORD EndHeadNumber; + MEDIA_TYPE MediaType; + DWORD StartCylinderNumber; + DWORD EndCylinderNumber; + DWORD StartHeadNumber; + DWORD EndHeadNumber; } FORMAT_PARAMETERS,*PFORMAT_PARAMETERS; typedef struct _FORMAT_EX_PARAMETERS { - MEDIA_TYPE MediaType; - DWORD StartCylinderNumber; - DWORD EndCylinderNumber; - DWORD StartHeadNumber; - DWORD EndHeadNumber; - WORD FormatGapLength; - WORD SectorsPerTrack; - WORD SectorNumber[1]; + MEDIA_TYPE MediaType; + DWORD StartCylinderNumber; + DWORD EndCylinderNumber; + DWORD StartHeadNumber; + DWORD EndHeadNumber; + WORD FormatGapLength; + WORD SectorsPerTrack; + WORD SectorNumber[1]; } FORMAT_EX_PARAMETERS,*PFORMAT_EX_PARAMETERS; +typedef struct { + LARGE_INTEGER Length; +} GET_LENGTH_INFORMATION; typedef struct _HISTOGRAM_BUCKET { - DWORD Reads; - DWORD Writes; + DWORD Reads; + DWORD Writes; } HISTOGRAM_BUCKET,*PHISTOGRAM_BUCKET; typedef struct _DISK_HISTOGRAM { - LARGE_INTEGER DiskSize; - LARGE_INTEGER Start; - LARGE_INTEGER End; - LARGE_INTEGER Average; - LARGE_INTEGER AverageRead; - LARGE_INTEGER AverageWrite; - DWORD Granularity; - DWORD Size; - DWORD ReadCount; - DWORD WriteCount; - PHISTOGRAM_BUCKET Histogram; + LARGE_INTEGER DiskSize; + LARGE_INTEGER Start; + LARGE_INTEGER End; + LARGE_INTEGER Average; + LARGE_INTEGER AverageRead; + LARGE_INTEGER AverageWrite; + DWORD Granularity; + DWORD Size; + DWORD ReadCount; + DWORD WriteCount; + PHISTOGRAM_BUCKET Histogram; } DISK_HISTOGRAM,*PDISK_HISTOGRAM; +typedef struct _DISK_EXTENT { + DWORD DiskNumber; + LARGE_INTEGER StartingOffset; + LARGE_INTEGER ExtentLength; +} DISK_EXTENT,*PDISK_EXTENT; +typedef struct _VOLUME_DISK_EXTENTS { + DWORD NumberOfDiskExtents; + DISK_EXTENT Extents[1]; +} VOLUME_DISK_EXTENTS,*PVOLUME_DISK_EXTENTS; typedef struct _PARTITION_INFORMATION { - LARGE_INTEGER StartingOffset; - LARGE_INTEGER PartitionLength; - DWORD HiddenSectors; - DWORD PartitionNumber; - BYTE PartitionType; - BOOLEAN BootIndicator; - BOOLEAN RecognizedPartition; - BOOLEAN RewritePartition; + LARGE_INTEGER StartingOffset; + LARGE_INTEGER PartitionLength; + DWORD HiddenSectors; + DWORD PartitionNumber; + BYTE PartitionType; + BOOLEAN BootIndicator; + BOOLEAN RecognizedPartition; + BOOLEAN RewritePartition; } PARTITION_INFORMATION,*PPARTITION_INFORMATION; typedef struct _DRIVE_LAYOUT_INFORMATION { - DWORD PartitionCount; - DWORD Signature; - PARTITION_INFORMATION PartitionEntry[1]; + DWORD PartitionCount; + DWORD Signature; + PARTITION_INFORMATION PartitionEntry[1]; } DRIVE_LAYOUT_INFORMATION, *PDRIVE_LAYOUT_INFORMATION; +typedef struct _DRIVE_LAYOUT_INFORMATION_GPT { + GUID DiskId; + LARGE_INTEGER StartingUsableOffset; + LARGE_INTEGER UsableLength; + ULONG MaxPartitionCount; +} DRIVE_LAYOUT_INFORMATION_GPT,*PDRIVE_LAYOUT_INFORMATION_GPT; +typedef struct _DRIVE_LAYOUT_INFORMATION_MBR { + ULONG Signature; +} DRIVE_LAYOUT_INFORMATION_MBR, *PDRIVE_LAYOUT_INFORMATION_MBR; +typedef struct _PARTITION_INFORMATION_MBR { + BYTE PartitionType; + BOOLEAN BootIndicator; + BOOLEAN RecognizedPartition; + DWORD HiddenSectors; +} PARTITION_INFORMATION_MBR; +typedef struct _PARTITION_INFORMATION_GPT { + GUID PartitionType; + GUID PartitionId; + DWORD64 Attributes; + WCHAR Name[36]; +} PARTITION_INFORMATION_GPT; +typedef struct _PARTITION_INFORMATION_EX { + PARTITION_STYLE PartitionStyle; + LARGE_INTEGER StartingOffset; + LARGE_INTEGER PartitionLength; + DWORD PartitionNumber; + BOOLEAN RewritePartition; + _ANONYMOUS_UNION union { + PARTITION_INFORMATION_MBR Mbr; + PARTITION_INFORMATION_GPT Gpt; + }; +} PARTITION_INFORMATION_EX; +typedef struct _DRIVE_LAYOUT_INFORMATION_EX { + DWORD PartitionStyle; + DWORD PartitionCount; + _ANONYMOUS_UNION union { + DRIVE_LAYOUT_INFORMATION_MBR Mbr; + DRIVE_LAYOUT_INFORMATION_GPT Gpt; + }; + PARTITION_INFORMATION_EX PartitionEntry[1]; +} DRIVE_LAYOUT_INFORMATION_EX,*PDRIVE_LAYOUT_INFORMATION_EX; +typedef struct { + HANDLE FileHandle; + LARGE_INTEGER StartingVcn; + LARGE_INTEGER StartingLcn; + DWORD ClusterCount; +} MOVE_FILE_DATA,*PMOVE_FILE_DATA; typedef struct _PERF_BIN { - DWORD NumberOfBins; - DWORD TypeOfBin; - BIN_RANGE BinsRanges[1]; + DWORD NumberOfBins; + DWORD TypeOfBin; + BIN_RANGE BinsRanges[1]; } PERF_BIN,*PPERF_BIN; typedef struct _PREVENT_MEDIA_REMOVAL { - BOOLEAN PreventMediaRemoval; + BOOLEAN PreventMediaRemoval; } PREVENT_MEDIA_REMOVAL,*PPREVENT_MEDIA_REMOVAL; +typedef struct RETRIEVAL_POINTERS_BUFFER { + DWORD ExtentCount; + LARGE_INTEGER StartingVcn; + struct { + LARGE_INTEGER NextVcn; + LARGE_INTEGER Lcn; + } Extents[1]; +} RETRIEVAL_POINTERS_BUFFER,*PRETRIEVAL_POINTERS_BUFFER; typedef struct _REASSIGN_BLOCKS { - WORD Reserved; - WORD Count; - DWORD BlockNumber[1]; + WORD Reserved; + WORD Count; + DWORD BlockNumber[1]; } REASSIGN_BLOCKS,*PREASSIGN_BLOCKS; typedef struct _SET_PARTITION_INFORMATION { - BYTE PartitionType; + BYTE PartitionType; } SET_PARTITION_INFORMATION,*PSET_PARTITION_INFORMATION; +typedef struct { + LARGE_INTEGER StartingLcn; +} STARTING_LCN_INPUT_BUFFER,*PSTARTING_LCN_INPUT_BUFFER; +typedef struct { + LARGE_INTEGER StartingVcn; +} STARTING_VCN_INPUT_BUFFER,*PSTARTING_VCN_INPUT_BUFFER; typedef struct _VERIFY_INFORMATION { - LARGE_INTEGER StartingOffset; - DWORD Length; + LARGE_INTEGER StartingOffset; + DWORD Length; } VERIFY_INFORMATION,*PVERIFY_INFORMATION; +typedef struct { + LARGE_INTEGER StartingLcn; + LARGE_INTEGER BitmapSize; + BYTE Buffer[1]; +} VOLUME_BITMAP_BUFFER,*PVOLUME_BITMAP_BUFFER; #define IsRecognizedPartition(t)\ (((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_FAT_12))||\ ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_FAT_16))||\ |