+IOCTL_DISK_GET_PARTITION_INFO_EX
authorshort <>
Thu, 16 Jan 2003 03:25:55 +0000 (03:25 +0000)
committershort <>
Thu, 16 Jan 2003 03:25:55 +0000 (03:25 +0000)
+IOCTL_STORAGE_GET_HOTPLUG_INFO
+PARTITION_INFORMATION_EX

include/ntos/disk.h

index 4e16cbd..4872406 100644 (file)
 #define __INCLUDE_DISK_H
 
 
-#define IOCTL_DISK_GET_DRIVE_GEOMETRY   CTL_CODE(FILE_DEVICE_DISK,  0, METHOD_BUFFERED, FILE_ANY_ACCESS)
-#define IOCTL_DISK_GET_PARTITION_INFO   CTL_CODE(FILE_DEVICE_DISK,  1, METHOD_BUFFERED, FILE_READ_ACCESS)
-#define IOCTL_DISK_SET_PARTITION_INFO   CTL_CODE(FILE_DEVICE_DISK,  2, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
-#define IOCTL_DISK_GET_DRIVE_LAYOUT     CTL_CODE(FILE_DEVICE_DISK,  3, METHOD_BUFFERED, FILE_READ_ACCESS)
-#define IOCTL_DISK_SET_DRIVE_LAYOUT     CTL_CODE(FILE_DEVICE_DISK,  4, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
-#define IOCTL_DISK_VERIFY               CTL_CODE(FILE_DEVICE_DISK,  5, METHOD_BUFFERED, FILE_ANY_ACCESS)
-#define IOCTL_DISK_FORMAT_TRACKS        CTL_CODE(FILE_DEVICE_DISK,  6, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
-#define IOCTL_DISK_REASSIGN_BLOCKS      CTL_CODE(FILE_DEVICE_DISK,  7, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
-#define IOCTL_DISK_PERFORMANCE          CTL_CODE(FILE_DEVICE_DISK,  8, METHOD_BUFFERED, FILE_ANY_ACCESS)
-#define IOCTL_DISK_IS_WRITABLE          CTL_CODE(FILE_DEVICE_DISK,  9, METHOD_BUFFERED, FILE_ANY_ACCESS)
-#define IOCTL_DISK_LOGGING              CTL_CODE(FILE_DEVICE_DISK, 10, METHOD_BUFFERED, FILE_ANY_ACCESS)
-#define IOCTL_DISK_FORMAT_TRACKS_EX     CTL_CODE(FILE_DEVICE_DISK, 11, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
-#define IOCTL_DISK_HISTOGRAM_STRUCTURE  CTL_CODE(FILE_DEVICE_DISK, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
-#define IOCTL_DISK_HISTOGRAM_DATA       CTL_CODE(FILE_DEVICE_DISK, 13, METHOD_BUFFERED, FILE_ANY_ACCESS)
-#define IOCTL_DISK_HISTOGRAM_RESET      CTL_CODE(FILE_DEVICE_DISK, 14, METHOD_BUFFERED, FILE_ANY_ACCESS)
-#define IOCTL_DISK_REQUEST_STRUCTURE    CTL_CODE(FILE_DEVICE_DISK, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)
-#define IOCTL_DISK_REQUEST_DATA         CTL_CODE(FILE_DEVICE_DISK, 16, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_GET_DRIVE_GEOMETRY    CTL_CODE(FILE_DEVICE_DISK,     0, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_GET_PARTITION_INFO    CTL_CODE(FILE_DEVICE_DISK,     1, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DISK_SET_PARTITION_INFO    CTL_CODE(FILE_DEVICE_DISK,     2, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_DISK_GET_DRIVE_LAYOUT      CTL_CODE(FILE_DEVICE_DISK,     3, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DISK_SET_DRIVE_LAYOUT      CTL_CODE(FILE_DEVICE_DISK,     4, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_DISK_VERIFY                CTL_CODE(FILE_DEVICE_DISK,     5, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_FORMAT_TRACKS         CTL_CODE(FILE_DEVICE_DISK,     6, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_DISK_REASSIGN_BLOCKS       CTL_CODE(FILE_DEVICE_DISK,     7, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_DISK_PERFORMANCE           CTL_CODE(FILE_DEVICE_DISK,     8, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_IS_WRITABLE           CTL_CODE(FILE_DEVICE_DISK,     9, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_LOGGING               CTL_CODE(FILE_DEVICE_DISK,    10, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_FORMAT_TRACKS_EX      CTL_CODE(FILE_DEVICE_DISK,    11, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_DISK_HISTOGRAM_STRUCTURE   CTL_CODE(FILE_DEVICE_DISK,    12, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_HISTOGRAM_DATA        CTL_CODE(FILE_DEVICE_DISK,    13, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_HISTOGRAM_RESET       CTL_CODE(FILE_DEVICE_DISK,    14, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_REQUEST_STRUCTURE     CTL_CODE(FILE_DEVICE_DISK,    15, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_REQUEST_DATA          CTL_CODE(FILE_DEVICE_DISK,    16, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_GET_PARTITION_INFO_EX CTL_CODE(FILE_DEVICE_DISK,    18, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_CHECK_VERIFY          CTL_CODE(FILE_DEVICE_DISK, 0x200, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+
+#define IOCTL_STORAGE_GET_HOTPLUG_INFO   CTL_CODE(FILE_DEVICE_MASS_STORAGE, 0x305, METHOD_BUFFERED, FILE_ANY_ACCESS)
 
 
 #define PARTITION_ENTRY_UNUSED          0x00
@@ -134,6 +139,62 @@ typedef struct _PARTITION_INFORMATION
   BOOLEAN RewritePartition;
 } PARTITION_INFORMATION, *PPARTITION_INFORMATION;
 
+typedef enum _PARTITION_STYLE
+{
+  PARTITION_STYLE_MBR,
+  PARTITION_STYLE_GPT,
+  PARTITION_STYLE_RAW
+} PARTITION_STYLE;
+
+typedef struct _PARTITION_INFORMATION_MBR
+{
+  BYTE  PartitionType;
+  BOOLEAN BootIndicator;
+  BOOLEAN RecognizedPartition;
+  DWORD HiddenSectors;
+} PARTITION_INFORMATION_MBR, *PPARTITION_INFORMATION_MBR;
+
+#ifndef _GUID_DEFINED
+#define _GUID_DEFINED
+typedef struct _GUID
+{
+    unsigned long  Data1;
+    unsigned short  Data2;
+    unsigned short  Data3;
+    unsigned char Data4[8];
+} GUID, *LPGUID;
+typedef GUID CLSID, *LPCLSID;
+#endif
+
+typedef struct _PARTITION_INFORMATION_GPT
+{
+  GUID PartitionType;
+  GUID PartitionId;
+  DWORD64 Attributes;
+  WCHAR Name [36];
+} PARTITION_INFORMATION_GPT, *PPARTITION_INFORMATION_GPT;
+
+typedef struct _PARTITION_INFORMATION_EX
+{
+  PARTITION_STYLE PartitionStyle;
+  LARGE_INTEGER StartingOffset;
+  LARGE_INTEGER PartitionLength;
+  DWORD PartitionNumber;
+  BOOLEAN RewritePartition;
+  union
+  {
+    PARTITION_INFORMATION_MBR Mbr;
+    PARTITION_INFORMATION_GPT Gpt;
+  } u;
+#ifdef ANONYMOUSUNIONS
+  union
+  {
+    PARTITION_INFORMATION_MBR Mbr;
+    PARTITION_INFORMATION_GPT Gpt;
+  };
+#endif /* ANONYMOUSUNIONS */
+} PARTITION_INFORMATION_EX, *PPARTITION_INFORMATION_EX;
+
 typedef struct _DRIVE_LAYOUT_INFORMATION
 {
   DWORD PartitionCount;