StorPortNotification 函数 (storport.h)

微型端口驱动程序使用 StorPortNotification 例程向 Storport 驱动程序通知某些事件和条件。

StorPortNotification 采用可变数量的参数,具体取决于指定的通知类型。

语法

STORPORT_API VOID StorPortNotification(
  SCSI_NOTIFICATION_TYPE NotificationType,
  PVOID                  HwDeviceExtension,
  ...                    
);

参数

NotificationType

指定通知类型,可以是以下值之一。

通知类型 描述
BufferOverrunDetected 此通知类型没有参数,使微型端口驱动程序有机会在检测到损坏时对系统进行 bug 检查。
BusChangeDetected 指示目标设备可能已从动态总线添加或删除。 若要使用此通知类型,请包含可选的 PathId 参数,以指示检测到更改的 SCSI 端口或总线。
VOID StorPortNotification(
  _In_     SCSI_NOTIFICATION_TYPE NotificationType,
  _In_     PVOID                  HwDeviceExtension,
  _In_opt_ UCHAR                  PathId
);
IoTargetRequestServiceTime 向 Storport 指示处理指定请求所需的时间。
VOID StorPortNotification(
  _In_ SCSI_NOTIFICATION_TYPE NotificationType,
  _In_ PVOID                  HwDeviceExtension,
  _In_ ULONGLONG              Duration,
  _In_ PSCSI_REQUEST_BLOCK    Srb
);

Duration [in]

Srb 所需的服务时间持续时间(以 100 纳秒为单位)。

Srb [in]

要为其设置服务时间的请求块。

LinkDown 指示链接已关闭,可能会关闭一段时间。 StorPort 将暂停适配器以响应此通知。
衔接 指示链接已还原。 StorPort 会重启适配器,以便它可以继续操作以响应此通知。 除非链接关闭,否则微型端口驱动程序不应发送此通知。
QueryTickCount 此通知类型返回保存 KeQueryTickCount 中的值的LARGE_INTEGER。 TickCount 中返回的值是自系统启动以来发生的间隔计时器中断的计数
VOID StorPortNotification(
  _In_    SCSI_NOTIFICATION_TYPE NotificationType,
  _In_    PVOID                  HwDeviceExtension,
  _Inout_ PLARGE_INTEGER         TickCount
);
RequestComplete 指示给定的 SRB 已完成。 发送此通知后,端口驱动程序拥有该请求。 Srb 参数表示指向已完成的 SCSI 请求块的指针。 微型端口驱动程序不得尝试访问 Srb 中的请求,并且不得将 Srb 传递给另一个例程。
VOID StorPortNotification(
  _In_ SCSI_NOTIFICATION_TYPE NotificationType,
  _In_ PVOID                  HwDeviceExtension,
  _In_ PSCSI_REQUEST_BLOCK    Srb
);
RequestTimerCall 指示微型端口驱动程序要求端口驱动程序以请求的微秒数调用微型端口驱动程序的 HwStorTimer 例程。
VOID StorPortNotification(
  _In_ SCSI_NOTIFICATION_TYPE NotificationType,
  _In_ PVOID                  HwDeviceExtension,
  _In_ PHW_TIMER              HwStorTimer,
  _In_ ULONG                  MiniportTimerValue
);

HwStorTimer [in]

指向在 MiniportTimerValue 中指定的时间间隔后调用的计时器例程的指针。

MiniportTimerValue [in]

指示调用 HwStorTimer 指向的计时器例程的时间间隔。 这是以微秒为单位指定的正值。 值为 0 将取消计时器。 系统计时器分辨率约为 10 毫秒。

ResetDetected 指示 HBA 在总线上检测到重置。 发送此通知后,微型端口驱动程序仍负责完成任何活动请求。 端口驱动程序将管理所有必需的总线重置延迟。
WMIEvent 指示微型端口驱动程序已检测到为其注册了一个或多个 WMI 数据使用者的事件。 请注意, WmiEvent 参数限制为最多 128 个字节。 如果 WmiEvent 大于 128 个字节,则将忽略它。
VOID StorPortNotification(
  _In_     SCSI_NOTIFICATION_TYPE NotificationType,
  _In_     PVOID                  HwDeviceExtension,
  _In_     PWNODE_EVENT_ITEM      WMIEvent,
  _In_     UCHAR                  PathId,
  _In_opt_ UCHAR                  TargetId,
  _In_opt_ UCHAR                  Lun
);

WMIEvent [in]

指向事件结构的指针,该事件结构包含微型端口驱动程序检测到的 WMI 事件的相关信息。

PathId [in]

指示请求的 SCSI 端口或总线。 将此参数设置为适配器设备的0xff。 否则,将 设置为有效的路径 ID。

TargetId [in, optional]

指示总线上的目标控制器或设备。 当 事件用于适配器时,不使用此参数。

Lun [in, optional]

指示设备的逻辑单元号。 当 事件用于适配器时,不使用此参数。

WMIReregister 指示微型端口驱动程序已更改之前通过调用 IoWMIRegistrationControl 注册的给定数据块的数据项或实例数。
VOID StorPortNotification(
  _In_     SCSI_NOTIFICATION_TYPE NotificationType,
  _In_     PVOID                  HwDeviceExtension,
  _In_     UCHAR                  PathId,
  _In_opt_ UCHAR                  TargetId,
  _In_opt_ UCHAR                  Lun
);

PathId [in]

指示请求的 SCSI 端口或总线。 将此参数设置为适配器设备的0xff。 否则,将 设置为有效的路径 ID。

TargetId [in, optional]

指示总线上的目标控制器或设备。 注册适用于适配器时,不使用此参数。

Lun [in, optional]

指示设备的逻辑单元号。 注册适用于适配器时,不使用此参数。

HwDeviceExtension

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

...

其他参数。

返回值

无。

备注

StorPortNotification 是一个多态函数,用于处理许多不同类型的请求,因此很难以涵盖所有可能用途的方式进行批注。 由于 StorPortNotification 返回 VOID,因此扫描引擎应假定已按要求获取 LockHandle。

要求

要求
目标平台 通用
标头 storport.h (包括 Storport.h)
Library Storport.lib
DDI 符合性规则 StorPortNotification2 (storport) 、StorPortStatusPending、 StorPortTimer (storport)

另请参阅

StorPortInitialize