StorPortStateChangeDetected 函数 (storport.h)

通知 Storport 端口驱动程序逻辑单元号的状态更改 (LUN) 、主机总线适配器 (HBA) 端口或目标设备。

语法

ULONG StorPortStateChangeDetected(
  [in]           PVOID            HwDeviceExtension,
  [in]           ULONG            ChangedEntity,
  [in]           PSTOR_ADDRESS    Address,
  [in]           ULONG            Attributes,
  [in, optional] PHW_STATE_CHANGE HwStateChange,
  [in, optional] PVOID            HwStateChangeContext
);

参数

[in] HwDeviceExtension

指向硬件设备扩展的指针。 这是端口驱动程序代表微型端口驱动程序分配和初始化的每个 HBA 存储区域。 微型端口驱动程序通常在此扩展中存储特定于 HBA 的信息,例如 HBA 的状态和 HBA 的映射访问范围。 此区域在微型端口驱动程序调用 StorPortInitialize 后立即可供微型端口驱动程序使用。 端口驱动程序在移除设备时释放此内存。

[in] ChangedEntity

指示其状态已更改的实体的标志。 这是这些值的按位 OR 组合:

含义
STATE_CHANGE_LUN
1 (0x1)
LUN 状态已更改。
STATE_CHANGE_TARGET
2 (0x2)
目标状态已更改。
STATE_CHANGE_BUS
4 (0x4)
总线或端口状态已更改。

[in] Address

状态发生更改的实体的地址。 调用 HwStateChange 的回调之前,地址值无法更改。 如果在内存中分配了 Address ,则内存应由回调例程释放。

[in] Attributes

与实体关联的属性。 这些是以下各项的按位 OR 组合:

含义
ATTRIBUTE_VM_PASSTHROUGH_LUN
LUN 保留给虚拟机使用。

[in, optional] HwStateChange

指向微型端口提供的回调例程的指针。 如果存在,当驱动程序处理完此状态更改通知时,Storport 驱动程序将调用此例程。

[in, optional] HwStateChangeContext

在调用 HwStateChange 中设置的例程时包含的微型端口提供的上下文值。

返回值

指示通知结果的状态值。 这可以是以下值之一:

返回代码 说明
STOR_STATUS_SUCCESS
计划处理状态更改通知。
STOR_STATUS_INVALID_PARAMETER
地址类型或实体类型无效。
STOR_STATUS_UNSUCCESSFUL
先前的通知正在处理中,无法计划此通知。

注解

成功调用 StorPortStateChangeDetected 会导致重新枚举已更改的实体。

任何时候只能有一个状态更改请求处于活动状态。 如果微型端口需要进行另一个 StorPortStateChangeDetected 调用,它应提供 HwStateChange 回调,并在 HwStateChange 回调发生后再次调用 StorPortStateChangeDetected 如果微型端口想要同时指示多个状态更改,该微型端口可以调用 StorPortStateChangeDetected 一次,更改后的实体在 ChangedEntity 中设置,其中包括所有当前状态更改。

如果在 ChangedEntity 中指定了多个标志,则具有较大值的标志将优先于较小的标志。

要求

要求
最低受支持的客户端 在 Windows 8 及更高版本的 Windows 中可用。
目标平台 通用
标头 storport.h (包括 Storport.h)
IRQL 任意

另请参阅

HwStorStateChange