https://git.reactos.org/?p=reactos.git;a=commitdiff;h=7ae3d530dbd5ec7f5adff…
commit 7ae3d530dbd5ec7f5adffdd14da6863c95f0af2c
Author: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
AuthorDate: Sun Dec 6 23:42:58 2020 +0100
Commit: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
CommitDate: Sun Dec 6 23:44:10 2020 +0100
[PSDK] Re-arrange DISK/DRIVE/PARTITION layout-related structures in ntdddisk.h and
winioctl.h. Add few missing structures in winioctl.h.
---
sdk/include/psdk/ntdddisk.h | 226 ++++++++++++++++----------------
sdk/include/psdk/winioctl.h | 309 +++++++++++++++++++++++++-------------------
2 files changed, 295 insertions(+), 240 deletions(-)
diff --git a/sdk/include/psdk/ntdddisk.h b/sdk/include/psdk/ntdddisk.h
index 3fe648c4cc3..b1b22d53f40 100644
--- a/sdk/include/psdk/ntdddisk.h
+++ b/sdk/include/psdk/ntdddisk.h
@@ -355,7 +355,10 @@ extern "C" {
((PartitionType) == PARTITION_XINT13))
#endif
-#if(_WIN32_WINNT >= 0x0500)
+#if (_WIN32_WINNT >= 0x0500)
+/* Actually it should be > 0x0500, since this is not present in Windows 2000;
+ * however we keep >= 0x0500 for compatibility with MS PSDK. */
+
#define GPT_ATTRIBUTE_PLATFORM_REQUIRED 0x00000001
#define GPT_BASIC_DATA_ATTRIBUTE_READ_ONLY 0x10000000
#define GPT_BASIC_DATA_ATTRIBUTE_SHADOW_COPY 0x20000000
@@ -398,6 +401,69 @@ typedef enum _MEDIA_TYPE {
F3_32M_512
} MEDIA_TYPE, *PMEDIA_TYPE;
+typedef struct _DISK_GEOMETRY {
+ LARGE_INTEGER Cylinders;
+ MEDIA_TYPE MediaType;
+ ULONG TracksPerCylinder;
+ ULONG SectorsPerTrack;
+ ULONG BytesPerSector;
+} DISK_GEOMETRY, *PDISK_GEOMETRY;
+
+typedef struct _PARTITION_INFORMATION {
+ LARGE_INTEGER StartingOffset;
+ LARGE_INTEGER PartitionLength;
+ ULONG HiddenSectors;
+ ULONG PartitionNumber;
+ UCHAR PartitionType;
+ BOOLEAN BootIndicator;
+ BOOLEAN RecognizedPartition;
+ BOOLEAN RewritePartition;
+} PARTITION_INFORMATION, *PPARTITION_INFORMATION;
+
+typedef struct _DRIVE_LAYOUT_INFORMATION {
+ ULONG PartitionCount;
+ ULONG Signature;
+ PARTITION_INFORMATION PartitionEntry[1];
+} DRIVE_LAYOUT_INFORMATION, *PDRIVE_LAYOUT_INFORMATION;
+
+typedef struct _SET_PARTITION_INFORMATION {
+ UCHAR PartitionType;
+} SET_PARTITION_INFORMATION, *PSET_PARTITION_INFORMATION;
+
+#if (_WIN32_WINNT >= 0x0500)
+/* Actually it should be > 0x0500, since this is not present in Windows 2000;
+ * however we keep >= 0x0500 for compatibility with MS PSDK. */
+
+typedef enum _PARTITION_STYLE {
+ PARTITION_STYLE_MBR,
+ PARTITION_STYLE_GPT,
+ PARTITION_STYLE_RAW,
+#ifdef __REACTOS__
+ /* ReactOS custom partition handlers */
+ PARTITION_STYLE_BRFR = 128 /* Xbox-BRFR partitioning scheme */
+#endif
+} PARTITION_STYLE;
+
+typedef struct _CREATE_DISK_GPT
+{
+ GUID DiskId;
+ ULONG MaxPartitionCount;
+} CREATE_DISK_GPT, *PCREATE_DISK_GPT;
+
+typedef struct _CREATE_DISK_MBR
+{
+ ULONG Signature;
+} CREATE_DISK_MBR, *PCREATE_DISK_MBR;
+
+typedef struct _CREATE_DISK
+{
+ PARTITION_STYLE PartitionStyle;
+ union {
+ CREATE_DISK_MBR Mbr;
+ CREATE_DISK_GPT Gpt;
+ };
+} CREATE_DISK, *PCREATE_DISK;
+
typedef enum _DETECTION_TYPE {
DetectNone,
DetectInt13,
@@ -434,13 +500,19 @@ typedef struct _DISK_DETECTION_INFO {
} DUMMYUNIONNAME;
} DISK_DETECTION_INFO, *PDISK_DETECTION_INFO;
-typedef struct _DISK_GEOMETRY {
- LARGE_INTEGER Cylinders;
- MEDIA_TYPE MediaType;
- ULONG TracksPerCylinder;
- ULONG SectorsPerTrack;
- ULONG BytesPerSector;
-} DISK_GEOMETRY, *PDISK_GEOMETRY;
+typedef struct _DISK_PARTITION_INFO {
+ ULONG SizeOfPartitionInfo;
+ PARTITION_STYLE PartitionStyle;
+ _ANONYMOUS_UNION union {
+ struct {
+ ULONG Signature;
+ ULONG CheckSum;
+ } Mbr;
+ struct {
+ GUID DiskId;
+ } Gpt;
+ } DUMMYUNIONNAME;
+} DISK_PARTITION_INFO, *PDISK_PARTITION_INFO;
typedef struct _DISK_GEOMETRY_EX {
DISK_GEOMETRY Geometry;
@@ -464,17 +536,6 @@ typedef struct _DISK_GEOMETRY_EX {
DiskGeometryGetPartition(Geometry)->SizeOfPartitionInfo)))
#endif
-typedef struct _PARTITION_INFORMATION {
- LARGE_INTEGER StartingOffset;
- LARGE_INTEGER PartitionLength;
- ULONG HiddenSectors;
- ULONG PartitionNumber;
- UCHAR PartitionType;
- BOOLEAN BootIndicator;
- BOOLEAN RecognizedPartition;
- BOOLEAN RewritePartition;
-} PARTITION_INFORMATION, *PPARTITION_INFORMATION;
-
typedef struct _PARTITION_INFORMATION_GPT {
GUID PartitionType;
GUID PartitionId;
@@ -482,45 +543,6 @@ typedef struct _PARTITION_INFORMATION_GPT {
WCHAR Name [36];
} PARTITION_INFORMATION_GPT, *PPARTITION_INFORMATION_GPT;
-typedef enum _PARTITION_STYLE {
- PARTITION_STYLE_MBR,
- PARTITION_STYLE_GPT,
- PARTITION_STYLE_RAW,
-#ifdef __REACTOS__
- /* ReactOS custom partition handlers */
- PARTITION_STYLE_BRFR = 128 /* Xbox-BRFR partitioning scheme */
-#endif
-} PARTITION_STYLE;
-
-typedef struct _DISK_PARTITION_INFO {
- ULONG SizeOfPartitionInfo;
- PARTITION_STYLE PartitionStyle;
- _ANONYMOUS_UNION union {
- struct {
- ULONG Signature;
- ULONG CheckSum;
- } Mbr;
- struct {
- GUID DiskId;
- } Gpt;
- } DUMMYUNIONNAME;
-} DISK_PARTITION_INFO, *PDISK_PARTITION_INFO;
-
-typedef struct _DISK_PERFORMANCE {
- LARGE_INTEGER BytesRead;
- LARGE_INTEGER BytesWritten;
- LARGE_INTEGER ReadTime;
- LARGE_INTEGER WriteTime;
- LARGE_INTEGER IdleTime;
- ULONG ReadCount;
- ULONG WriteCount;
- ULONG QueueDepth;
- ULONG SplitCount;
- LARGE_INTEGER QueryTime;
- ULONG StorageDeviceNumber;
- WCHAR StorageManagerName[8];
-} DISK_PERFORMANCE, *PDISK_PERFORMANCE;
-
typedef struct _PARTITION_INFORMATION_MBR {
UCHAR PartitionType;
BOOLEAN BootIndicator;
@@ -543,19 +565,6 @@ typedef struct _PARTITION_INFORMATION_EX {
} DUMMYUNIONNAME;
} PARTITION_INFORMATION_EX, *PPARTITION_INFORMATION_EX;
-typedef struct _DRIVE_LAYOUT_INFORMATION {
- ULONG PartitionCount;
- ULONG Signature;
- PARTITION_INFORMATION PartitionEntry[1];
-} DRIVE_LAYOUT_INFORMATION, *PDRIVE_LAYOUT_INFORMATION;
-
-typedef struct _DRIVE_LAYOUT_INFORMATION_MBR {
- ULONG Signature;
-#if (NTDDI_VERSION >= NTDDI_WIN10_RS1)
- ULONG CheckSum;
-#endif
-} DRIVE_LAYOUT_INFORMATION_MBR, *PDRIVE_LAYOUT_INFORMATION_MBR;
-
typedef struct _DRIVE_LAYOUT_INFORMATION_GPT {
GUID DiskId;
LARGE_INTEGER StartingUsableOffset;
@@ -563,6 +572,13 @@ typedef struct _DRIVE_LAYOUT_INFORMATION_GPT {
ULONG MaxPartitionCount;
} DRIVE_LAYOUT_INFORMATION_GPT, *PDRIVE_LAYOUT_INFORMATION_GPT;
+typedef struct _DRIVE_LAYOUT_INFORMATION_MBR {
+ ULONG Signature;
+#if (NTDDI_VERSION >= NTDDI_WIN10_RS1)
+ ULONG CheckSum;
+#endif
+} DRIVE_LAYOUT_INFORMATION_MBR, *PDRIVE_LAYOUT_INFORMATION_MBR;
+
typedef struct _DRIVE_LAYOUT_INFORMATION_EX {
ULONG PartitionStyle;
ULONG PartitionCount;
@@ -573,6 +589,34 @@ typedef struct _DRIVE_LAYOUT_INFORMATION_EX {
PARTITION_INFORMATION_EX PartitionEntry[1];
} DRIVE_LAYOUT_INFORMATION_EX, *PDRIVE_LAYOUT_INFORMATION_EX;
+typedef SET_PARTITION_INFORMATION SET_PARTITION_INFORMATION_MBR;
+typedef PARTITION_INFORMATION_GPT SET_PARTITION_INFORMATION_GPT;
+
+typedef struct _SET_PARTITION_INFORMATION_EX {
+ PARTITION_STYLE PartitionStyle;
+ _ANONYMOUS_UNION union {
+ SET_PARTITION_INFORMATION_MBR Mbr;
+ SET_PARTITION_INFORMATION_GPT Gpt;
+ } DUMMYUNIONNAME;
+} SET_PARTITION_INFORMATION_EX, *PSET_PARTITION_INFORMATION_EX;
+
+#endif // (_WIN32_WINNT >= 0x0500)
+
+typedef struct _DISK_PERFORMANCE {
+ LARGE_INTEGER BytesRead;
+ LARGE_INTEGER BytesWritten;
+ LARGE_INTEGER ReadTime;
+ LARGE_INTEGER WriteTime;
+ LARGE_INTEGER IdleTime;
+ ULONG ReadCount;
+ ULONG WriteCount;
+ ULONG QueueDepth;
+ ULONG SplitCount;
+ LARGE_INTEGER QueryTime;
+ ULONG StorageDeviceNumber;
+ WCHAR StorageManagerName[8];
+} DISK_PERFORMANCE, *PDISK_PERFORMANCE;
+
typedef struct _FORMAT_EX_PARAMETERS {
MEDIA_TYPE MediaType;
ULONG StartCylinderNumber;
@@ -608,21 +652,6 @@ typedef struct _REASSIGN_BLOCKS_EX {
LARGE_INTEGER BlockNumber[1];
} REASSIGN_BLOCKS_EX, *PREASSIGN_BLOCKS_EX;
-typedef struct _SET_PARTITION_INFORMATION {
- UCHAR PartitionType;
-} SET_PARTITION_INFORMATION, *PSET_PARTITION_INFORMATION;
-
-typedef SET_PARTITION_INFORMATION SET_PARTITION_INFORMATION_MBR;
-typedef PARTITION_INFORMATION_GPT SET_PARTITION_INFORMATION_GPT;
-
-typedef struct _SET_PARTITION_INFORMATION_EX {
- PARTITION_STYLE PartitionStyle;
- _ANONYMOUS_UNION union {
- SET_PARTITION_INFORMATION_MBR Mbr;
- SET_PARTITION_INFORMATION_GPT Gpt;
- } DUMMYUNIONNAME;
-} SET_PARTITION_INFORMATION_EX, *PSET_PARTITION_INFORMATION_EX;
-
typedef struct _VERIFY_INFORMATION {
LARGE_INTEGER StartingOffset;
ULONG Length;
@@ -733,30 +762,7 @@ typedef struct _MAPPED_ADDRESS {
} MAPPED_ADDRESS, *PMAPPED_ADDRESS;
-
-#if(_WIN32_WINNT >= 0x0500)
-
-typedef struct _CREATE_DISK_GPT
-{
- GUID DiskId;
- ULONG MaxPartitionCount;
-} CREATE_DISK_GPT, *PCREATE_DISK_GPT;
-
-typedef struct _CREATE_DISK_MBR
-{
- ULONG Signature;
-} CREATE_DISK_MBR, *PCREATE_DISK_MBR;
-
-
-typedef struct _CREATE_DISK
-{
- PARTITION_STYLE PartitionStyle;
- union {
- CREATE_DISK_MBR Mbr;
- CREATE_DISK_GPT Gpt;
- };
-} CREATE_DISK, *PCREATE_DISK;
-
+#if (_WIN32_WINNT >= 0x0500)
typedef enum {
EqualPriority,
diff --git a/sdk/include/psdk/winioctl.h b/sdk/include/psdk/winioctl.h
index 0ba8f1be885..f10c4b41678 100644
--- a/sdk/include/psdk/winioctl.h
+++ b/sdk/include/psdk/winioctl.h
@@ -237,50 +237,87 @@ typedef struct _BIN_RESULTS {
DWORD NumberOfBins;
BIN_COUNT BinCounts[1];
} BIN_RESULTS,*PBIN_RESULTS;
+
+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,
+ 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;
+typedef struct _PARTITION_INFORMATION {
+ 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];
+} DRIVE_LAYOUT_INFORMATION, *PDRIVE_LAYOUT_INFORMATION;
+typedef struct _SET_PARTITION_INFORMATION {
+ BYTE PartitionType;
+} SET_PARTITION_INFORMATION,*PSET_PARTITION_INFORMATION;
+
+#if (_WIN32_WINNT >= 0x0500)
+/* Actually it should be > 0x0500, since this is not present in Windows 2000;
+ * however we keep >= 0x0500 for compatibility with MS PSDK. */
+
typedef enum _PARTITION_STYLE {
PARTITION_STYLE_MBR,
PARTITION_STYLE_GPT,
PARTITION_STYLE_RAW
} PARTITION_STYLE;
-typedef struct {
+
+typedef struct _CREATE_DISK_GPT {
GUID DiskId;
DWORD MaxPartitionCount;
} CREATE_DISK_GPT,*PCREATE_DISK_GPT;
-typedef struct {
+typedef struct _CREATE_DISK_MBR {
DWORD Signature;
} CREATE_DISK_MBR,*PCREATE_DISK_MBR;
-typedef struct {
+typedef struct _CREATE_DISK {
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,
@@ -313,62 +350,133 @@ typedef struct _DISK_DETECTION_INFO {
};
};
} 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,
- 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;
+typedef struct _DISK_PARTITION_INFO {
+ DWORD SizeOfPartitionInfo;
+ PARTITION_STYLE PartitionStyle;
+ _ANONYMOUS_UNION union {
+ struct {
+ DWORD Signature;
+ DWORD CheckSum;
+ } Mbr;
+ struct {
+ GUID DiskId;
+ } Gpt;
+ };
+} DISK_PARTITION_INFO,*PDISK_PARTITION_INFO;
typedef struct _DISK_GEOMETRY_EX {
DISK_GEOMETRY Geometry;
LARGE_INTEGER DiskSize;
BYTE Data[1];
} DISK_GEOMETRY_EX,*PDISK_GEOMETRY_EX;
+
+#if (NTDDI_VERSION < NTDDI_WS03)
+#define DiskGeometryGetPartition(Geometry) \
+ ((PDISK_PARTITION_INFO)((Geometry) + 1))
+
+#define DiskGeometryGetDetect(Geometry)\
+ ((PDISK_DETECTION_INFO)(((PBYTE)DiskGeometryGetPartition(Geometry) + \
+ DiskGeometryGetPartition(Geometry)->SizeOfPartitionInfo)))
+#else
+#define DiskGeometryGetPartition(Geometry) \
+ ((PDISK_PARTITION_INFO)((Geometry)->Data))
+
+#define DiskGeometryGetDetect(Geometry)\
+ ((PDISK_DETECTION_INFO)(((ULONG_PTR)DiskGeometryGetPartition(Geometry) + \
+ DiskGeometryGetPartition(Geometry)->SizeOfPartitionInfo)))
+#endif
+
+typedef struct _PARTITION_INFORMATION_GPT {
+ GUID PartitionType;
+ GUID PartitionId;
+ DWORD64 Attributes;
+ WCHAR Name[36];
+} PARTITION_INFORMATION_GPT;
+typedef struct _PARTITION_INFORMATION_MBR {
+ BYTE PartitionType;
+ BOOLEAN BootIndicator;
+ BOOLEAN RecognizedPartition;
+ DWORD HiddenSectors;
+} PARTITION_INFORMATION_MBR;
+typedef struct _PARTITION_INFORMATION_EX {
+ PARTITION_STYLE PartitionStyle;
+ LARGE_INTEGER StartingOffset;
+ LARGE_INTEGER PartitionLength;
+ DWORD PartitionNumber;
+ BOOLEAN RewritePartition;
+#if (NTDDI_VERSION >= NTDDI_WIN10_RS3)
+ BOOLEAN IsServicePartition;
+#endif
+ _ANONYMOUS_UNION union {
+ PARTITION_INFORMATION_MBR Mbr;
+ PARTITION_INFORMATION_GPT Gpt;
+ };
+} PARTITION_INFORMATION_EX;
+
+typedef struct _DRIVE_LAYOUT_INFORMATION_GPT {
+ GUID DiskId;
+ LARGE_INTEGER StartingUsableOffset;
+ LARGE_INTEGER UsableLength;
+ DWORD MaxPartitionCount;
+} DRIVE_LAYOUT_INFORMATION_GPT,*PDRIVE_LAYOUT_INFORMATION_GPT;
+typedef struct _DRIVE_LAYOUT_INFORMATION_MBR {
+ DWORD Signature;
+#if (NTDDI_VERSION >= NTDDI_WIN10_RS1)
+ DWORD CheckSum;
+#endif
+} DRIVE_LAYOUT_INFORMATION_MBR, *PDRIVE_LAYOUT_INFORMATION_MBR;
+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 SET_PARTITION_INFORMATION SET_PARTITION_INFORMATION_MBR;
+typedef PARTITION_INFORMATION_GPT SET_PARTITION_INFORMATION_GPT;
+
+typedef struct _SET_PARTITION_INFORMATION_EX {
+ PARTITION_STYLE PartitionStyle;
+ _ANONYMOUS_UNION union {
+ SET_PARTITION_INFORMATION_MBR Mbr;
+ SET_PARTITION_INFORMATION_GPT Gpt;
+ } DUMMYUNIONNAME;
+} SET_PARTITION_INFORMATION_EX, *PSET_PARTITION_INFORMATION_EX;
+
+#endif // (_WIN32_WINNT >= 0x0500)
+
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;
+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 {
- DWORD Signature;
- } Mbr;
+ WORD Minimum;
+ WORD Maximum;
+ WORD MaximumBlocks;
+ } ScalarPrefetch;
struct {
- GUID DiskId;
- } Gpt;
+ WORD Minimum;
+ WORD Maximum;
+ } BlockPrefetch;
};
-} DISK_PARTITION_INFO,*PDISK_PARTITION_INFO;
+} DISK_CACHE_INFORMATION,*PDISK_CACHE_INFORMATION;
+
typedef struct _DISK_PERFORMANCE {
LARGE_INTEGER BytesRead;
LARGE_INTEGER BytesWritten;
@@ -448,62 +556,6 @@ 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;
-} PARTITION_INFORMATION,*PPARTITION_INFORMATION;
-typedef struct _DRIVE_LAYOUT_INFORMATION {
- 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;
@@ -535,9 +587,6 @@ typedef struct _REASSIGN_BLOCKS {
WORD Count;
DWORD BlockNumber[1];
} REASSIGN_BLOCKS,*PREASSIGN_BLOCKS;
-typedef struct _SET_PARTITION_INFORMATION {
- BYTE PartitionType;
-} SET_PARTITION_INFORMATION,*PSET_PARTITION_INFORMATION;
typedef struct {
LARGE_INTEGER StartingLcn;
} STARTING_LCN_INPUT_BUFFER,*PSTARTING_LCN_INPUT_BUFFER;