SCSI_UNIT_CONTROL_TYPE enumeration (storport.h)

The SCSI_UNIT_CONTROL_TYPE enumeration contains unit control operations, where each control type initiates an action on a unit by the miniport driver. Storport specifies the control type when it calls a miniport's HwStorUnitControl routine.

Syntax

typedef enum _SCSI_UNIT_CONTROL_TYPE {
  ScsiQuerySupportedUnitControlTypes,
  ScsiUnitUsage,
  ScsiUnitStart,
  ScsiUnitPower,
  ScsiUnitPoFxPowerInfo,
  ScsiUnitPoFxPowerRequired,
  ScsiUnitPoFxPowerActive,
  ScsiUnitPoFxPowerSetFState,
  ScsiUnitPoFxPowerControl,
  ScsiUnitRemove,
  ScsiUnitSurpriseRemoval,
  ScsiUnitRichDescription,
  ScsiUnitQueryBusType,
  ScsiUnitQueryFruId,
  ScsiUnitReportInternalData,
  ScsiUnitControlMax,
  MakeUnitControlTypeSizeOfUlong
} SCSI_UNIT_CONTROL_TYPE, *PSCSI_UNIT_CONTROL_TYPE;

Constants

 
ScsiQuerySupportedUnitControlTypes
Reports the unit-control operations implemented by the miniport driver. A miniport must support this control type.

The Storport driver calls HwStorUnitControl with this control type and Parameters pointing to a SCSI_SUPPORTED_CONTROL_TYPE_LIST structure after the HBA has been initialized but before the first I/O.

The miniport driver fills in the SCSI_SUPPORTED_CONTROL_TYPE_LIST structure with the operations that it supports. After HwStorUnitControl returns from this call, the Storport driver calls the miniport driver's HwStorUnitControl only for operations supported by the miniport.
ScsiUnitUsage
Notifies the miniport whether the logical unit is used for any supported usage types. Storport calls HwStorUnitControl with this control type and Parameters pointing to a STOR_UC_DEVICE_USAGE structure. Storport will call HwStorUnitControl separately for each usage type supported.
ScsiUnitStart
Notifies the miniport to start a unit device. Storport calls HwStorUnitControl with this control type and Parameters pointing to the STOR_ADDR_BTL8 address of the unit to start.
ScsiUnitPower
Reports the unit power on or power off states. Storport calls HwStorUnitControl with this control type and Parameters pointing to a STOR_UNIT_CONTROL_POWER structure. If the miniport supports this control type, it will not receive a storage request block with SRB_FUNCTION_POWER.
ScsiUnitPoFxPowerInfo
Notifies the miniport if idle power management is enabled or disabled on the unit component. Storport calls HwStorUnitControl with this control type and Parameters pointing to a STOR_POFX_UNIT_POWER_INFO structure. The miniport should call StorPortInitializePoFxPower within this unit control if idle power management was enabled and if it supports runtime power management for the unit device.
ScsiUnitPoFxPowerRequired
Notifies the miniport whether power is required for the unit component. Storport calls HwStorUnitControl with this control type and Parameters pointing to aSTOR_POFX_POWER_REQUIRED_CONTEXT structure.
ScsiUnitPoFxPowerActive
Notifies the miniport that the unit component is either active or idle. Storport calls HwStorUnitControl with this control type and Parameters pointing to a STOR_POFX_ACTIVE_CONTEXT structure.
ScsiUnitPoFxPowerSetFState
Notifies the miniport to set the unit component to the given functional power state (F-state). Storport calls HwStorUnitControl with this control type and Parameters pointing to a STOR_POFX_FSTATE_CONTEXT structure. The miniport must support this control type if is specifies more than one F-state in the call to StorPortInitializePoFxPower.
ScsiUnitPoFxPowerControl
Requests that the miniport execute a private power control operation that was initiated for the unit by a power engine plug-in (PEP). Storport calls HwStorUnitControl with this control type and Parameters pointing to a STOR_POFX_POWER_CONTROL structure.
ScsiUnitRemove
Notifies the miniport that the unit has been removed. Storport calls HwStorUnitControl with this control type and Parameters pointing to the STOR_ADDR_BTL8 address of the unit that was removed.
ScsiUnitSurpriseRemoval
Notifies the miniport that the unit has been surprise-removed. Storport calls HwStorUnitControl with this control type and Parameters pointing to the STOR_ADDR_BTL8 address of the unit that was surprise-removed.
ScsiUnitRichDescription
The miniport can choose to support this if the device reports a longer vendor ID, model number, or firmware revision than is defined in the SCSI spec. Storport calls HwStorUnitControl with this control type and Parameters pointing to a STOR_RICH_DEVICE_DESCRIPTION structure.
ScsiUnitQueryBusType
Queries whether the miniport wants to specify a bus type for a given logical unit (LUN). Typically the bus type of a LUN and controller have the same bus type, but not always. Storport calls HwStorUnitControl with this control type and Parameters pointing to a STOR_UNIT_CONTROL_QUERY_BUS_TYPE structure. Available in Windows 10 version 2004 and later.

NOTE

In Windows 10 version 21H1 and later, Storport sends this control only if a miniport has also previously called StorPortSetFeatureList in its HwFindAdapter routine with StorportFeatureBusTypeUnitControl specified.

ScsiUnitQueryFruId
Queries the ID of a fault replacement unit (FRU). If the miniport supports this control type, Storport calls HwStorUnitControl with this control type and Parameters pointing to a STOR_FRU_ID_DESCRIPTION structure. Available in Windows 10 version 21H1 and later.

NOTE

Storport sends this control only if a miniport has also previously called StorPortSetFeatureList in its HwFindAdapter routine with StorportFeatureFruIdUnitControl specified.

ScsiUnitReportInternalData
Reserved for system use. Available starting in Windows 11, version 22H2.
ScsiUnitControlMax
Maximum control type value.
MakeUnitControlTypeSizeOfUlong
Makes this enumeration the size of a ULONG.

Remarks

A miniport reports which control types it supports when Storport calls the miniport's HwStorUnitControl routine with a control type of ScsiQuerySupportedControlTypes. For those control types that the miniport supports, Storport calls HwStorUnitControl with a SCSI_UNIT_CONTROL_TYPE value that specifies the unit control operation to be performed by the miniport.

Requirements

Requirement Value
Minimum supported client Windows 8
Header storport.h

See also

HwStorUnitControl