// ntddstor.h
// CTL_CODE(0x002d, 0x700, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_STORAGE_FIRMWARE_GET_INFO 0x002D1C00
View the official Windows Driver Kit DDI reference// winioctl.h
// CTL_CODE(0x002d, 0x700, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_STORAGE_FIRMWARE_GET_INFO 0x002D1C00
View the official Win32 API referenceNo description available.
A driver can use IOCTL_STORAGE_FIRMWARE_GET_INFO to query a storage device for detailed firmware information. A successful call will return information about firmware revisions, activity status, as well as read/write attributes for each slot. The amount of data returned varies based on storage protocol.
Irp->AssociatedIrp.SystemBuffer contains STORAGE_HW_FIRMWARE_INFO_QUERY data that specifies the target of the request.
Parameters.DeviceIoControl.InputBufferLength indicates the size, in bytes, of the parameter buffer at Irp->AssociatedIrp.SystemBuffer, which must be >= sizeof(STORAGE_HW_FIRMWARE_INFO_QUERY).
The driver returns query data to the buffer at Irp->AssociatedIrp.SystemBuffer. The output buffer should contain a STORAGE_HW_FIRMWARE_INFO and STORAGE_HW_FIRMWARE_SLOT_INFO structure for each slot on the device.
Parameters.DeviceIoControl.OutputBufferLength indicates the number of bytes that can be written to Irp->AssociatedIrp.SystemBuffer. OutputBufferLength must be sizeof(STORAGE_HW_FIRMWARE_INFO) + sizeof(STORAGE_HW_FIRMWARE_SLOT_INFO) * (STORAGE_HW_FIRMWARE_INFO.SlotCount -1).
The Information field is set to the number of bytes returned. The Status field is set to STATUS_SUCCESS, or possibly to STATUS_INVALID_DEVICE_REQUEST, STATUS_INVALID_PARAMETER, or STATUS_NOT_SUPPORTED.
IOCTL_STORAGE_FIRMWARE_ACTIVATE
IOCTL_STORAGE_FIRMWARE_DOWNLOAD
STORAGE_HW_FIRMWARE_INFO_QUERY
Windows applications can use this control code to query the storage device for detailed firmware information. A successful call will return information about firmware revisions, activity status, as well as read/write attributes for each slot. The amount of data returned will vary based on storage protocol.
To perform this operation, call the DeviceIoControl function with the following parameters.
BOOL DeviceIoControl(
(HANDLE) hDevice, // handle to device
IOCTL_STORAGE_FIRMWARE_GET_INFO, // dwIoControlCode
(LPDWORD) lpInBuffer, // input buffer
(DWORD) nInBufferSize, // size of input buffer
(LPDWORD) lpOutBuffer, // output buffer
(DWORD) nOutBufferSize, // size of output buffer
(LPDWORD) lpBytesReturned, // number of bytes returned
(LPOVERLAPPED) lpOverlapped // OVERLAPPED structure
);
Irp->IoStatus.Status is set to STATUS_SUCCESS if the request is successful.
Otherwise, Status to the appropriate error condition as a NTSTATUS code.
For more information, see NTSTATUS Values.