HW_UNIT_CONTROL回调函数 (storport.h)

调用微型端口驱动程序的 HwStorUnitControl 例程来执行同步作来控制存储设备的状态。

语法

HW_UNIT_CONTROL HwUnitControl;

SCSI_UNIT_CONTROL_STATUS HwUnitControl(
  [in] PVOID DeviceExtension,
  [in] SCSI_UNIT_CONTROL_TYPE ControlType,
  [in] PVOID Parameters
)
{...}

参数

[in] DeviceExtension

指向微型端口驱动程序的每单元存储区域的指针。

[in] ControlType

一个 SCSI_UNIT_CONTROL_TYPE 值,该值指定单元控件作,其中每个控件类型都由微型端口驱动程序启动作。 有关详细信息,请参阅 SCSI_UNIT_CONTROL_TYPE

[in] Parameters

指向包含与 controlType 相关的信息的结构或值的指针。 所有结构都是调用方分配的。 有关详细信息,请参阅 SCSI_UNIT_CONTROL_TYPE

地址

为其指定控制作的单元的地址。

返回值

根据控件类型,HwStorUnitControl 返回以下 SCSI_UNIT_CONTROL_STATUS 值之一:

返回代码 描述
ScsiUnitControlSuccess 微型端口驱动程序已成功完成请求的作。
ScsiUnitControlUnsuccessful 单元控制作未成功。

言论

Storport 调用微型端口的 HwStorUnitControl,该 ScsiQuerySupportedControlTypes HBA 初始化后,但在第一个 I/O 之前。 微型端口驱动程序在 参数 填充 SCSI_SUPPORTED_CONTROL_TYPE_LIST 结构,其中包含它支持的作。 HwStorUnitControl 从此调用返回后,Storport 驱动程序将调用微型端口驱动程序的 HwStorAdapterControl 回调,仅针对微型端口支持的作。

Storport 调用 HwStorUnitControl,以通知微型端口驱动程序对 地址标识的单元设备的更改,或者微型端口应在该单元上执行查询或设置作,例如启动单元或处理单元的电源控制作。

下表列出了发出控件类型时获取的当前 IRQL 和旋转锁。

控件类型 IRQL 旋转锁
ScsiQuerySupportedControlTypes PASSIVE_LEVEL 没有
ScsiUnitUsage PASSIVE_LEVEL 没有
ScsiUnitStart PASSIVE_LEVEL 没有
ScsiUnitPower DISPATCH_LEVEL 没有
ScsiUnitPoFxPowerInfo PASSIVE_LEVEL 没有
ScsiUnitPoFxPowerRequired DISPATCH_LEVEL 没有
ScsiUnitPoFxPowerActive DISPATCH_LEVEL 没有
ScsiUnitPoFxPowerSetFState DISPATCH_LEVEL 没有
ScsiUnitPoFxPowerControl DISPATCH_LEVEL 没有
ScsiUnitRemove PASSIVE_LEVEL 没有
ScsiUnitSurpriseRemoval PASSIVE_LEVEL 没有
ScsiUnitRichDescription PASSIVE_LEVEL 没有
ScsiUnitQueryBusType PASSIVE_LEVEL 没有
ScsiUnitQueryFruId PASSIVE_LEVEL 没有

HwStorUnitControl 的名称只是占位符。 此例程的实际原型在 storport.h 中定义,如下所示:

typedef
SCSI_UNIT_CONTROL_STATUS
HW_UNIT_CONTROL (
  _In_ PVOID  DeviceExtension,
  _In_ SCSI_UNIT_CONTROL_TYPE  ControlType,
  _In_ PVOID  Parameters
  );

要求

要求 价值
最低支持的客户端 Windows 8
目标平台 普遍
标头 storport.h (包括 Storport.h)
IRQL 请参阅“备注”。

另请参阅

HwStorAdapterControl

SCSI_SUPPORTED_CONTROL_TYPE_LIST

SCSI_UNIT_CONTROL_TYPE