// ntddstor.h
typedef struct _STORAGE_ADAPTER_DESCRIPTOR {
ULONG Version;
ULONG Size;
ULONG MaximumTransferLength;
ULONG MaximumPhysicalPages;
ULONG AlignmentMask;
BOOLEAN AdapterUsesPio;
BOOLEAN AdapterScansDown;
BOOLEAN CommandQueueing;
BOOLEAN AcceleratedTransfer;
#if ...
BOOLEAN BusType;
#else
UCHAR BusType;
#endif
USHORT BusMajorVersion;
USHORT BusMinorVersion;
UCHAR SrbType;
UCHAR AddressType;
} STORAGE_ADAPTER_DESCRIPTOR, *PSTORAGE_ADAPTER_DESCRIPTOR;
View the official Windows Driver Kit DDI reference
// winioctl.h
typedef struct _STORAGE_ADAPTER_DESCRIPTOR {
DWORD Version;
DWORD Size;
DWORD MaximumTransferLength;
DWORD MaximumPhysicalPages;
DWORD AlignmentMask;
BOOLEAN AdapterUsesPio;
BOOLEAN AdapterScansDown;
BOOLEAN CommandQueueing;
BOOLEAN AcceleratedTransfer;
#if ...
BOOLEAN BusType;
#else
BYTE BusType;
#endif
WORD BusMajorVersion;
WORD BusMinorVersion;
BYTE SrbType;
BYTE AddressType;
} STORAGE_ADAPTER_DESCRIPTOR, *PSTORAGE_ADAPTER_DESCRIPTOR;
View the official Win32 API reference
No description available.
The STORAGE_ADAPTER_DESCRIPTOR structure is used in conjunction with the IOCTL_STORAGE_QUERY_PROPERTY request to retrieve the storage adapter descriptor data for a device.
Version
Contains the version of the structure STORAGE_ADAPTER_DESCRIPTOR. The value of this member will change as members are added to the structure.
Size
Specifies the total size of the descriptor, in bytes.
MaximumTransferLength
Specifies the maximum number of bytes the host bus adapter (HBA) can transfer in a single operation.
MaximumPhysicalPages
Specifies the maximum number of discontinuous physical pages the HBA can manage in a single transfer (in other words, the extent of its scatter/gather support).
AlignmentMask
Specifies the HBA's alignment requirements for transfers. A storage class driver sets the AlignmentRequirement field in its device objects to this value. The alignment mask indicates alignment restrictions for buffers required by the HBA for transfer operations. The valid mask values are 0 (byte aligned), 1 (word aligned), 3 (DWORD aligned), and 7 (double DWORD aligned).
AdapterUsesPio
Indicates when TRUE that the HBA uses Programmed Input/Output (PIO) and requires the use of system-space virtual addresses mapped to physical memory for data buffers. When FALSE, the HBA does not use PIO.
AdapterScansDown
Indicates when TRUE that the HBA scans down for BIOS devices, that is, the HBA begins scanning with the highest device number rather than the lowest. When FALSE, the HBA begins scanning with the lowest device number. This member is reserved for legacy miniport drivers.
CommandQueueing
Indicates when TRUE that the HBA supports SCSI-tagged queuing and/or per-logical-unit internal queues, or the non-SCSI equivalent. When FALSE, the HBA neither supports SCSI-tagged queuing nor per-logical-unit internal queues.
AcceleratedTransfer
Indicates when TRUE that the HBA supports synchronous transfers as a way of speeding up I/O. When FALSE, the HBA does not support synchronous transfers as a way of speeding up I/O.
BusType
Specifies a value of type STORAGE_BUS_TYPE that indicates the type of bus to which the device is connected.
BusMajorVersion
Specifies the major version number, if any, of the HBA.
BusMinorVersion
Specifies the minor version number, if any, of the HBA.
SrbType
Specifies the SCSI request block (SRB) type used by the HBA. This member is valid starting with Windows 8.
Value | Meaning |
---|---|
SRB_TYPE_SCSI_REQUEST_BLOCK | The HBA uses SCSI request blocks. |
SRB_TYPE_STORAGE_REQUEST_BLOCK | The HBA uses extended SCSI request blocks. |
AddressType
Specifies the address type of the HBA. This member is valid starting with Windows 8.
Value | Meaning |
---|---|
STORAGE_ADDRESS_TYPE_BTL8 | The HBA uses 8-bit bus, target, and LUN addressing. |
Storage class drivers issue a device-control request with the I/O control code IOCTL_STORAGE_QUERY_PROPERTY to retrieve this structure, which contains configuration information from the HBA for data transfer operations. The structure can be retrieved either from the device object for the bus or from a functional device object (FDO), which forwards the request to the underlying bus.
If excessive protocol errors occur on an HBA that supports synchronous transfers (AcceleratedTransfer is TRUE), the storage class driver can disable synchronous transfers by setting SRB_FLAGS_DISABLE_SYNCH_TRANSFER in SRBs.
STORAGE_ADAPTER_DESCRIPTOR
Used with the IOCTL_STORAGE_QUERY_PROPERTY control code to retrieve the storage adapter descriptor data for a device.
Version
Contains the size of this structure, in bytes. The value of this member will change as members are added to the structure.
Size
Specifies the total size of the data returned, in bytes. This may include data that follows this structure.
MaximumTransferLength
Specifies the maximum number of bytes the storage adapter can transfer in a single operation.
MaximumPhysicalPages
Specifies the maximum number of discontinuous physical pages the storage adapter can manage in a single transfer (in other words, the extent of its scatter/gather support).
AlignmentMask
Specifies the storage adapter's alignment requirements for transfers. The alignment mask indicates alignment restrictions for buffers required by the storage adapter for transfer operations. Valid mask values are also restricted by characteristics of the memory managers on different versions of Windows.
Value | Meaning |
---|---|
0 | Buffers must be aligned on BYTE boundaries. |
1 | Buffers must be aligned on WORD boundaries. |
3 | Buffers must be aligned on DWORD32 boundaries. |
7 | Buffers must be aligned on DWORD64 boundaries. |
AdapterUsesPio
If this member is TRUE, the storage adapter uses programmed I/O (PIO) and requires the use of system-space virtual addresses mapped to physical memory for data buffers. When this member is FALSE, the storage adapter does not use PIO.
AdapterScansDown
If this member is TRUE, the storage adapter scans down for BIOS devices, that is, the storage adapter begins scanning with the highest device number rather than the lowest. When this member is FALSE, the storage adapter begins scanning with the lowest device number. This member is reserved for legacy miniport drivers.
CommandQueueing
If this member is TRUE, the storage adapter supports SCSI tagged queuing and/or per-logical-unit internal queues, or the non-SCSI equivalent. When this member is FALSE, the storage adapter neither supports SCSI-tagged queuing nor per-logical-unit internal queues.
AcceleratedTransfer
If this member is TRUE, the storage adapter supports synchronous transfers as a way of speeding up I/O. When this member is FALSE, the storage adapter does not support synchronous transfers as a way of speeding up I/O.
BusType
Specifies a value of type STORAGE_BUS_TYPE that indicates the type of the bus to which the device is connected.
BusMajorVersion
Specifies the major version number, if any, of the storage adapter.
BusMinorVersion
Specifies the minor version number, if any, of the storage adapter.
SrbType
Specifies the SCSI request block (SRB) type used by the HBA.
Value | Meaning |
---|---|
SRB_TYPE_SCSI_REQUEST_BLOCK | The HBA uses SCSI request blocks. |
SRB_TYPE_STORAGE_REQUEST_BLOCK | The HBA uses extended SCSI request blocks. |
This member is valid starting with Windows 8.
AddressType
Specifies the address type of the HBA.
Value | Meaning |
---|---|
STORAGE_ADDRESS_TYPE_BTL8 | The HBA uses 8-bit bus, target, and LUN addressing. |
This member is valid starting with Windows 8.
STORAGE_ADAPTER_DESCRIPTOR