storPortNotification 函式 (storport.h)

迷你埠驅動程式會使用 StorPortNotification 例程來通知 Storport 驅動程式特定事件和條件。

StorPortNotification 會根據指定的通知類型,採用可變數目的參數。

語法

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

參數

NotificationType

指定通知類型,可以是下列其中一個值。

通知類型 描述
BufferOverrunDetected 此通知類型沒有自變數,並讓迷你埠驅動程式有機會在系統偵測到損毀時發生錯誤檢查。
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 此通知類型會傳回保留 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。 否則,請將 設定為有效的路徑標識碼。

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。 否則,請將 設定為有效的路徑標識碼。

TargetId [in, optional]

指出總線上的目標控制器或裝置。 註冊為適配卡時,不會使用此參數。

Lun [in, optional]

指出裝置的邏輯單元編號。 註冊為適配卡時,不會使用此參數。

HwDeviceExtension

硬體裝置擴充功能的指標。 這是每個 HBA 儲存區域,埠驅動程式會代表迷你埠驅動程式配置和初始化。 迷你埠驅動程式通常會在此延伸模組中儲存 HBA 特定資訊,例如 HBA 的狀態和 HBA 的對應存取範圍。 迷你埠驅動程式會在迷你埠驅動程式呼叫 StorPortInitialize 之後立即提供此區域。 埠驅動程式會在移除裝置時釋放此記憶體。

...

其他參數。

傳回值

無。

備註

StorPortNotification 是一種多型函式,可處理許多不同類型的要求,因此難以以涵蓋所有可能用途的方式來標註。 由於 StorPortNotification 會傳回 VOID,因此掃描引擎應該假設已依照要求取得 LockHandle。

規格需求

需求
目標平台 Universal
標頭 storport.h (包含 Storport.h)
程式庫 Storport.lib
DDI 合規性規則 StorPortNotification2 (storport) 、StorPortStatusPending、 StorPortTimer (storport)

另請參閱

StorPortInitialize