#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_CONTROLLER_NUMBER CTL_CODE(FILE_DEVICE_DISK, 17, 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_GET_LENGTH_INFO CTL_CODE(FILE_DEVICE_DISK, 23, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_DISK_CHECK_VERIFY CTL_CODE(FILE_DEVICE_DISK, 0x200, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_DISK_MEDIA_REMOVAL CTL_CODE(FILE_DEVICE_DISK, 0x201, METHOD_BUFFERED, FILE_READ_ACCESS)
DWORD BytesPerSector;
} DISK_GEOMETRY, *PDISK_GEOMETRY;
+typedef struct _DISK_CONTROLLER_NUMBER {
+ ULONG ControllerNumber;
+ ULONG DiskNumber;
+} DISK_CONTROLLER_NUMBER, *PDISK_CONTROLLER_NUMBER;
+
+typedef struct _GET_LENGTH_INFORMATION {
+ LARGE_INTEGER Length; /* length of disk/partition/volume in bytes */
+} GET_LENGTH_INFORMATION, *PGET_LENGTH_INFORMATION;
+
#ifndef __USE_W32API
typedef struct _DRIVE_LAYOUT_INFORMATION