Retrieves extended information about the type, size, and nature of a disk
partition.
To perform this operation, call the DeviceIoControl
function with the following parameters.
BOOL DeviceIoControl(
(HANDLE) hDevice, // handle to a partition
IOCTL_DISK_GET_PARTITION_INFO_EX, // dwIoControlCode
NULL, // lpInBuffer
0, // nInBufferSize
(LPVOID) lpOutBuffer, // output buffer
(DWORD) nOutBufferSize, // size of output buffer
(LPDWORD) lpBytesReturned, // number of bytes returned
(LPOVERLAPPED) lpOverlapped // OVERLAPPED structure
);
Parameters
- hDevice
A handle to the disk device from which partition information is retrieved. To retrieve a device
handle, call the CreateFile function.
- dwIoControlCode
The control code for the operation. Use
IOCTL_DISK_GET_PARTITION_INFO_EX for
this operation.
- lpInBuffer
Not used with this operation. Set to NULL.
- nInBufferSize
Not used with this operation. Set to 0 (zero).
- lpOutBuffer
A pointer to a buffer that receives the partition information. For more information, see
PARTITION_INFORMATION_EX.
- nOutBufferSize
The size of the output buffer, in bytes.
- lpBytesReturned
A pointer to a variable that receives the size of the data stored in the output buffer, in bytes.
- If the output buffer is too small, the call fails,
GetLastError returns
ERROR_INSUFFICIENT_BUFFER, and lpBytesReturned is 0 (zero).
- If lpOverlapped is NULL,
lpBytesReturned cannot be NULL. Even when an operation
does not return output data and lpOutBuffer is NULL,
DeviceIoControl makes use of
lpBytesReturned. After such an operation, the value of
lpBytesReturned is meaningless.
- If lpOverlapped is not NULL,
lpBytesReturned can be NULL. If this parameter is not
NULL and the operation returns data, lpBytesReturned is
meaningless until the overlapped operation is complete. To retrieve the number of bytes returned, call
GetOverlappedResult. If
hDevice is associated with an I/O completion port, you can retrieve the number of
bytes returned by calling
GetQueuedCompletionStatus.
- lpOverlapped
A pointer to an OVERLAPPED structure.
- If hDevice is opened without specifying
FILE_FLAG_OVERLAPPED, lpOverlapped is ignored.
- If hDevice is opened with the FILE_FLAG_OVERLAPPED
flag, the operation is performed as an overlapped (asynchronous) operation. In this case,
lpOverlapped must point to a valid
OVERLAPPED structure that contains a handle to an
event object. Otherwise, the function fails in unpredictable ways.
- For overlapped operations, DeviceIoControl
returns immediately, and the event object is signaled when the operation is complete. Otherwise, the
function does not return until the operation is complete or an error occurs.
Return Value
If the operation completes successfully, DeviceIoControl
returns a nonzero value.
If the operation fails or is pending, DeviceIoControl returns
0 (zero). To get extended error information, call
GetLastError.
Remarks
The IOCTL_DISK_GET_PARTITION_INFO_EX
control code is supported on basic disks. It is only supported on dynamic disksthat are boot or system disks, or have retained
entries in the partition table. The DiskPart.exe command RETAIN can be used to do
this for other dynamic simple partitions.
The disk support can be summarized as follows.
| Disk type | IOCTL_DISK_GET_PARTITION_INFO | IOCTL_DISK_GET_PARTITION_INFO_EX |
| Basic master boot record (MBR) | Yes | Yes |
| Basic GUID partition table (GPT) | No | Yes |
| Dynamic MBR boot/system | Yes | Yes |
| Dynamic MBR data | Yes | No |
| Dynamic GPT boot/system | No | Yes |
| Dynamic GPT data | No | No |
Currently, GPT is supported only on 64-bit systems.
If the partition is on a disk formatted as type master boot record (MBR), partition size totals cannot exceed 2 TB per MBR disk. For example, a disk of type MBR can have a single 2-TB partition, two 1-TB partitions, or any combination that does not total more than 2 TB. If more space is required, a disk formatted as type GUID partition table (GPT) should be used. If third-party partitioning tools are used to work around this limitation on disks of type MBR larger than 2 TB, configuration operations via the disk partitioning IOCTL control codes will be limited.
Requirements
| Minimum supported client | Windows XP |
| Minimum supported server | Windows Server 2003 |
| Header | WinIoCtl.h |
See Also
- DeviceIoControl
- Disk Management Control Codes
- File System Recognition
- IOCTL_DISK_SET_PARTITION_INFO_EX
- PARTITION_INFORMATION_EX
Send comments about this topic to Microsoft
Build date: 10/22/2009