// ntddstor.h
typedef struct _STORAGE_HW_FIRMWARE_DOWNLOAD {
ULONG Version;
ULONG Size;
ULONG Flags;
UCHAR Slot;
UCHAR Reserved[3];
ULONGLONG Offset;
ULONGLONG BufferSize;
UCHAR ImageBuffer[ANYSIZE_ARRAY];
} STORAGE_HW_FIRMWARE_DOWNLOAD, *PSTORAGE_HW_FIRMWARE_DOWNLOAD;
View the official Windows Driver Kit DDI reference// winioctl.h
typedef struct _STORAGE_HW_FIRMWARE_DOWNLOAD {
DWORD Version;
DWORD Size;
DWORD Flags;
BYTE Slot;
BYTE Reserved[3];
DWORDLONG Offset;
DWORDLONG BufferSize;
BYTE ImageBuffer[ANYSIZE_ARRAY];
} STORAGE_HW_FIRMWARE_DOWNLOAD, *PSTORAGE_HW_FIRMWARE_DOWNLOAD;
View the official Win32 API referenceNo description available.
This structure contains a firmware image payload to be downloaded to the target.
VersionThe version of this structure. This should be set to sizeof(STORAGE_HW_FIRMWARE_DOWNLOAD).
SizeThe size of this structure and the download image buffer.
FlagsFlags associated with this download. The following are valid flags that this member can hold.
| Flag | Description |
|---|---|
| STORAGE_HW_FIRMWARE_REQUEST_FLAG_CONTROLLER | Indicates that the target of the request is a controller or adapter, different than the device handle or object itself (e.g. NVMe SSD or HBA). |
| STORAGE_HW_FIRMWARE_REQUEST_FLAG_LAST_SEGMENT | Indicates that the current firmware image segment is the last one. |
SlotThe slot number that the firmware image will be downloaded to.
ReservedReserved for future use.
OffsetThe offset in this buffer of where the Image file begins. This should be aligned to ImagePayloadAlignment from STORAGE_HW_FIRMWARE_INFO.
BufferSizeThe buffer size of the ImageBuffer. This should be a multiple of ImagePayloadAlignment from STORAGE_HW_FIRMWARE_INFO.
ImageBufferThe firmware image file.
This structure contains a firmware image payload to be downloaded to the target.
VersionThe version of this structure. This should be set to sizeof(STORAGE_HW_FIRMWARE_DOWNLOAD).
SizeThe size of this structure and the download image buffer.
FlagsFlags associated with this download. The following are valid flags that this member can hold.
| Flag | Description |
|---|---|
| STORAGE_HW_FIRMWARE_REQUEST_FLAG_CONTROLLER | Indicates that the target of the request is a controller or adapter, different than the device handler or object itself (e.g. NVMe SSD or HBA). |
| STORAGE_HW_FIRMWARE_REQUEST_FLAG_LAST_SEGMENT | Indicates that the current firmware image segment is the last one. |
SlotThe slot number that the firmware image will be downloaded to.
ReservedReserved for future use.
OffsetThe offset in this buffer of where the Image file begins. This should be aligned to ImagePayloadAlignment from STORAGE_HW_FIRMWARE_INFO.
BufferSizeThe buffer size of the ImageBuffer. This should be a multiple of ImagePayloadAlignment from STORAGE_HW_FIRMWARE_INFO.
ImageBufferThe firmware image file.
IOCTL_STORAGE_FIRMWARE_ACTIVATE
IOCTL_STORAGE_FIRMWARE_DOWNLOAD
IOCTL_STORAGE_FIRMWARE_GET_INFO
STORAGE_HW_FIRMWARE_INFO_QUERY