Windows applications can use this control code to return the properties of a storage device or adapter. The request indicates the kind of information to retrieve, such as the inquiry data for a device or the capabilities and limitations of an adapter. IOCTL_STORAGE_QUERY_PROPERTY can also be used to determine whether the port driver supports a particular property or which fields in the property descriptor can be modified with a subsequent change-property request.

BOOL DeviceIoControl(
     _In_        (HANDLE)       hDevice,                // handle to a partition
     _In_        (DWORD) IOCTL_STORAGE_QUERY_PROPERTY,  // dwIoControlCode
     _In_        (LPVOID)       lpInBuffer,             // input buffer - STORAGE_PROPERTY_QUERY structure
     _In_        (DWORD)        nInBufferSize,          // size of input buffer
     _Out_opt_   (LPVOID)       lpOutBuffer,            // output buffer - see Remarks
     _In_        (DWORD)        nOutBufferSize,         // size of output buffer
     _Out_opt_   (LPDWORD)      lpBytesReturned,        // number of bytes returned
     _Inout_opt_ (LPOVERLAPPED) lpOverlapped            // OVERLAPPED structure


The optional output buffer returned through the lpOutBuffer parameter can be one of several structures depending on the value of the PropertyId member of the STORAGE_PROPERTY_QUERY structure pointed to by the lpInBuffer parameter. These values are enumerated by the STORAGE_PROPERTY_ID enumeration. If the QueryType member of the STORAGE_PROPERTY_QUERY is set to PropertyExistsQuery then no structure is returned.


Requirement Value
Minimum supported client Windows XP [desktop apps only]
Minimum supported server Windows Server 2003 [desktop apps only]
Header winioctl.h (include Windows.h)

See also