HW_ADAPTER_CONTROL回调函数 (storport.h)

调用微型端口驱动程序的 HwStorAdapterControl 例程来执行同步作来控制适配器的状态或行为,例如停止或重启主机总线适配器(HBA)进行电源管理。

语法

HW_ADAPTER_CONTROL HwAdapterControl;

SCSI_ADAPTER_CONTROL_STATUS HwAdapterControl(
  [in] PVOID DeviceExtension,
  [in] SCSI_ADAPTER_CONTROL_TYPE ControlType,
  [in] PVOID Parameters
)
{...}

参数

[in] DeviceExtension

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

[in] ControlType

一个指定适配器控制作的 SCSI_ADAPTER_CONTROL_TYPE 值,其中每个控件类型都由微型端口驱动程序启动作。 有关详细信息,请参阅 SCSI_ADAPTER_CONTROL_TYPE

[in] Parameters

指向包含与 ControlType相关的信息的结构或值的指针,如果控件类型不使用结构,则为 NULL。 所有结构都是调用方分配的。 有关详细信息,请参阅 SCSI_ADAPTER_CONTROL_TYPE

返回值

根据控件类型,HwStorAdapterControl 返回以下SCSI_ADAPTER_CONTROL_STATUS值之一:

返回代码 描述
ScsiAdapterControlSuccess 微型端口驱动程序已成功完成请求的作。 目前,HwStorAdapterControl 必须为所有控件类型返回此值。
ScsiAdapterControlUnsuccessful 适配器控制作未成功。

言论

HwStorAdapterControl 是必需的函数。

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

由于使用 Storport 驱动程序的微型端口驱动程序必须支持即插即用(PnP),微型端口必须支持 ScsiStopAdapterScsiRestartAdapter 控制类型。

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

控件类型 IRQL 旋转锁
ScsiQuerySupportedControlTypes PASSIVE_LEVEL 没有
ScsiStopAdapter DIRQL InterruptLock
ScsiRestartAdapter DIRQL InterruptLock
ScsiSetBootConfig PASSIVE_LEVEL 没有
ScsiSetRunningConfig PASSIVE_LEVEL 没有
ScsiPowerSettingNotification PASSIVE_LEVEL 没有
ScsiAdapterPower <= DISPATCH_LEVEL 没有
ScsiAdapterPoFxPowerRequired <= DISPATCH_LEVEL 没有
ScsiAdapterPoFxPowerActive <= DISPATCH_LEVEL 没有
ScsiAdapterPoFxPowerSetFState <= DISPATCH_LEVEL 没有
ScsiAdapterPoFxPowerControl <= DISPATCH_LEVEL 没有
ScsiAdapterPrepareForBusReScan PASSIVE_LEVEL 没有
ScsiAdapterSystemPowerHints PASSIVE_LEVEL 没有
ScsiAdapterFilterResourceRequirements < DISPATCH_LEVEL 没有
ScsiAdapterPoFxMaxOperationalPower PASSIVE_LEVEL 没有
ScsiAdapterPoFxSetPerfState <= DISPATCH_LEVEL 没有
ScsiAdapterSurpriseRemoval < DISPATCH_LEVEL 没有
ScsiAdapterSerialNumber < DISPATCH_LEVEL 没有
ScsiAdapterCryptoOperation PASSIVE_LEVEL 没有
ScsiAdapterQueryFruId PASSIVE_LEVEL 没有
ScsiAdapterSetEventLogging PASSIVE_LEVEL 没有

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

typedef
SCSI_ADAPTER_CONTROL_STATUS
HW_ADAPTER_CONTROL (
  _In_ PVOID  DeviceExtension,
  _In_ SCSI_ADAPTER_CONTROL_TYPE  ControlType,
  _In_ PVOID  Parameters
  );

例子

若要定义 HwStorAdapterControl 回调函数,必须先提供一个函数声明来标识要定义的回调函数的类型。 Windows 为驱动程序提供一组回调函数类型。 使用回调函数类型声明函数有助于 驱动程序代码分析静态驱动程序验证程序(SDV)和其他验证工具查找错误,这是为 Windows作系统编写驱动程序的要求。

例如,若要定义 HwStorAdapterControl 名为 MyHwAdapterControl 的回调例程,请使用 HW_ADAPTER_CONTROL 类型,如以下代码示例所示:

HW_ADAPTER_CONTROL MyHwAdapterControl;

然后,按如下所示实现回调例程:

_Use_decl_annotations_
SCSI_ADAPTER_CONTROL_STATUS
MyHwAdapterControl (
  _In_ PVOID  DeviceExtension,
  _In_ SCSI_ADAPTER_CONTROL_TYPE  ControlType,
  _In_ PVOID  Parameters
  );
  {
      ...
  }

HW_ADAPTER_CONTROL 函数类型在 storport.h 头文件中 定义。 若要在运行代码分析工具时更准确地识别错误,请务必将 Use_decl_annotations 注释添加到函数定义。 Use_decl_annotations 批注可确保使用应用于头文件中 HW_ADAPTER_CONTROL 函数类型的批注。 有关函数声明要求的详细信息,请参阅 使用 Storport 驱动程序的函数角色类型声明函数。 有关 Use_decl_annotations的信息,请参阅 批注函数行为

要求

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

另请参阅

HwStorFindAdapter

HwStorInitialize

HwStorUnitControl

SCSI_ADAPTER_CONTROL_TYPE

SCSI_SUPPORTED_CONTROL_TYPE_LIST