STORAGE_ADAPTER_DESCRIPTOR structure (winioctl.h)

Used with the IOCTL_STORAGE_QUERY_PROPERTY control code to retrieve the storage adapter descriptor data for a device.

Syntax

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;

Members

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.

Requirements

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

Disk Management Structures

IOCTL_STORAGE_QUERY_PROPERTY

STORAGE_ADAPTER_DESCRIPTOR

STORAGE_DESCRIPTOR_HEADER

STORAGE_DEVICE_ID_DESCRIPTOR