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

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

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

[in] Address

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

[in] Attributes

与实体关联的属性。 以下是以下 组合:

价值 意义
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 回调,并在回调 HwStateChangeDetected 后再次调用 StorPortStateChangeDetected。 如果微型端口希望同时指示多个状态更改,则微型端口可以调用 StorPortStateChangeDetected 一次,并在包含所有当前状态更改 ChangedEntity 中设置的已更改实体。

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

要求

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

另请参阅

HwStorStateChange