// ntddstor.h
typedef struct _STORAGE_HW_FIRMWARE_INFO {
ULONG Version;
ULONG Size;
UCHAR SupportUpgrade : 1;
UCHAR Reserved0 : 7;
UCHAR SlotCount;
UCHAR ActiveSlot;
UCHAR PendingActivateSlot;
BOOLEAN FirmwareShared;
UCHAR Reserved[3];
ULONG ImagePayloadAlignment;
ULONG ImagePayloadMaxSize;
STORAGE_HW_FIRMWARE_SLOT_INFO Slot[ANYSIZE_ARRAY];
} STORAGE_HW_FIRMWARE_INFO, *PSTORAGE_HW_FIRMWARE_INFO;
View the official Windows Driver Kit DDI reference// winioctl.h
typedef struct _STORAGE_HW_FIRMWARE_INFO {
DWORD Version;
DWORD Size;
BYTE SupportUpgrade :1;
BYTE Reserved0 :7;
BYTE SlotCount;
BYTE ActiveSlot;
BYTE PendingActivateSlot;
BOOLEAN FirmwareShared;
BYTE Reserved[3];
DWORD ImagePayloadAlignment;
DWORD ImagePayloadMaxSize;
STORAGE_HW_FIRMWARE_SLOT_INFO Slot[ANYSIZE_ARRAY];
} STORAGE_HW_FIRMWARE_INFO, *PSTORAGE_HW_FIRMWARE_INFO;
View the official Win32 development documentationNo description available.
This structure contains information about the device firmware.
VersionThe version of this structure. This should be set to sizeof(STORAGE_HW_FIRMWARE_INFO)
SizeThe size of this structure as a buffer including slot.
SupportUpgradeIndicates that this firmware supports an upgrade.
Reserved0Reserved for future use.
SlotCountThe number of firmware slots on the device. This is the dimension of the Slot array.
Note Some devices can store more than 1 firmware image, if they have more than 1 firmware slot.
ActiveSlotThe firmware slot containing the currently active/running firmware image.
PendingActivateSlotThe firmware slot that is pending activation.
FirmwareSharedIndicates that the firmware applies to both the device and controller/adapter, e.g. NVMe SSD.
ReservedReserved for future use.
ImagePayloadAlignmentThe alignment of the image payload, in number of bytes. The maximum is PAGE_SIZE. The transfer size is a multiple of this size. Some protocols require at least sector size. When this value is set to 0, this means that this value is invalid.
ImagePayloadMaxSizeThe image payload maximum size, this is used for a single command.
SlotContains the slot information for each slot on the device.
This structure contains information about the device firmware.
Version
The version of this structure. This should be set to sizeof(STORAGE_HW_FIRMWARE_INFO)
Size
The size of this structure as a buffer including slot.
SupportUpgrade
Indicates that this firmware supports an upgrade.
Reserved0
Reserved for future use.
SlotCount
The number of firmware slots on the device. This is the dimension of the Slot array.
[!Note] Some devices can store more than 1 firmware image, if they have more than 1 firmware slot.
ActiveSlot
The firmware slot containing the currently active/running firmware image.
PendingActivateSlot
The firmware slot that is pending activation.
FirmwareShared
Indicates that the firmware applies to both the device and controller/adapter, e.g. NVMe SSD.
Reserved
Reserved for future use.
ImagePayloadAlignment
The alignment of the image payload, in number of bytes. The maximum is PAGE_SIZE. The transfer size is a mutliple of this size. Some protocols require at least sector size. When this value is set to 0, this means that this value is invalid.
ImagePayloadMaxSize
The image payload maximum size, this is used for a single command.
Slot
Contains the slot information for each slot on the device, of type STORAGE_HW_FIRMWARE_SLOT_INFO.
| Requirement | Value |
|---|---|
| Minimum supported client |
Windows 10 [desktop apps only] |
| Minimum supported server |
Windows Server 2016 [desktop apps only] |
| Header |
Winioctl.h (include Windows.h) |
IOCTL_STORAGE_FIRMWARE_ACTIVATE
IOCTL_STORAGE_FIRMWARE_DOWNLOAD
IOCTL_STORAGE_FIRMWARE_GET_INFO
STORAGE_HW_FIRMWARE_INFO_QUERY