IOCTL_DISK_GET_DRIVE_LAYOUT control code
Returns information about the number of partitions, disk signature, and features of each partition on a disk. (Floppy drivers need not handle this request.)
Parameters.DeviceIoControl.OutputBufferLength in the I/O stack location of the IRP indicates the size, in bytes, of the buffer, which must be >= sizeof(DRIVE_LAYOUT_INFORMATION). Note that this structure contains a variable-sized array of PARTITION_INFORMATION elements.
The driver returns the DRIVE_LAYOUT_INFORMATION data in the buffer at Irp->AssociatedIrp.SystemBuffer.
The Information field is set to the size, in bytes, of the returned data. The Status field can be set to STATUS_SUCCESS, or possibly to STATUS_DEVICE_OFF_LINE, STATUS_INFO_LENGTH_MISMATCH, STATUS_INSUFFICIENT_RESOURCES, or STATUS_BUFFER_TOO_SMALL.