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
);

持续时间 [in]

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

Srb [in]

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

LinkDown 指示链接已关闭,并且可能已关闭一段时间。 StorPort 将暂停适配器以响应此通知。
衔接 指示链接已还原。 StorPort 重新启动适配器,以便它可以恢复作以响应此通知。 微型端口驱动程序不应发送此通知,除非链接已关闭。
QueryTickCount 此通知类型返回一个LARGE_INTEGER,用于保存来自 KeQueryTickCount的值。 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, 可选]

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

Lun [in, 可选]

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

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, 可选]

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

Lun [in, 可选]

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

HwDeviceExtension

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

...

其他参数。

返回值

没有。

言论

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

要求

要求 价值
目标平台 普遍
标头 storport.h (包括 Storport.h)
Storport.lib
DDI 符合性规则 StorPortNotification2(storport)、StorPortStatusPending、StorPortTimer(storport)

另请参阅

StorPortInitialize