ScsiPortWmiDispatchFunction 函式 (scsiwmi.h)

ScsiPortWmiDispatchFunction 例程是支援 WMI 的迷你埠驅動程式分派例程。

注意 SCSI 埠驅動程式和 SCSI 迷你埠驅動程式模型未來可能會改變或無法使用。 相反地,我們建議使用 Storport 驅動程式Storport 迷你埠 驅動程式模型。
 

語法

BOOLEAN ScsiPortWmiDispatchFunction(
  [in] PSCSI_WMILIB_CONTEXT     WmiLibInfo,
  [in] UCHAR                    MinorFunction,
  [in] PVOID                    DeviceContext,
  [in] PSCSIWMI_REQUEST_CONTEXT RequestContext,
  [in] PVOID                    DataPath,
  [in] ULONG                    BufferSize,
  [in] PVOID                    Buffer
);

參數

[in] WmiLibInfo

SCSI_WMILIB_CONTEXT結構的指標,其中包含迷你埠驅動程序數據區塊和事件區塊的註冊資訊,並定義迷你埠驅動程式 WMI 連結庫回呼例程的進入點。

[in] MinorFunction

表示要執行的 WMI 動作。 迷你埠驅動程式會從輸入 SRB 將 MinorFunction 設定為 Srb-WmiSubFunction>

[in] DeviceContext

迷你埠驅動程式定義的內容值的指標。 埠驅動程式會將 DeviceContext 傳遞至迷你埠驅動程式的 HwScsiWmiXxx 回呼例程。 這個值通常會指向HW_DEVICE_EXTENSION結構。

[in] RequestContext

包含 WMI SRB 內容資訊的SCSIWMI_REQUEST_CONTEXT結構的指標。 如果 SRB 可以畫筆,迷你埠驅動程式必須從 SRB 延伸模組配置此結構,因為要求內容必須維持有效狀態,直到 ScsiPortWmiPostProcess 傳回後,最後的 SRB 傳回狀態和緩衝區大小。 ScsiPortWmiDispatchFunction 會將 RequestContext 傳遞至處理此要求的迷你埠驅動程式回呼例程。

[in] DataPath

GUID 的指標,表示與要求相關聯的數據區塊。 迷你埠驅動程式會從輸入 SRB 將 DataPath 設定為 Srb-DataPath>

[in] BufferSize

指定數據緩衝區的位元組大小。 迷你埠驅動程式會從輸入 SRB 將 BufferSize 設定為 Srb-DataTransferLength>

[in] Buffer

資料緩衝區的指標。 迷你埠驅動程式會從輸入 SRB 將 Buffer 設定為 Srb-DataBuffer>

傳回值

如果要求擱置中,ScsiPortWmiDispatchFunction 會傳回 TRUE,如果要求已完成則傳回 FALSE

備註

當迷你埠驅動程式收到將 Function 成員設定為 SRB_FUNCTION_WMI 的 SRB 時,它會使用要求參數呼叫 ScsiPortWmiDispatchFunction ,包括初始化SCSI_WMILIB_CONTEXT結構的指標。 此結構包含迷你埠驅動程序的數據區塊和事件區塊的相關信息,並定義迷你埠驅動程式 HwScsiWmiXxx 回呼例程的進入點。

ScsiPortWmiDispatchFunction 會確認 SRB 是 WMI 要求,並判斷要求指定的區塊是否對迷你埠驅動程式有效。 如果符合這些條件, ScsiPortWmiDispatchFunction 會呼叫迷你埠驅動程式SCSI_WMILIB_CONTEXT結構中的適當 HwScsiWmiXxx 進入點,以處理 SRB。 如果迷你埠驅動程式未定義選擇性 HwScsiWmiXxx 例程的進入點,埠驅動程式會處理要求。

不論是哪一種情況, 在 ScsiPortWmiDispatchFunction 傳回之後,迷你埠驅動程式應該針對未畫筆的要求執行下列動作:

  • Srb->DataTransferLength 設定為 ScsiPortWmiGetReturnSize 所傳回的值
  • Srb->SrbStatus 設定為 ScsiPortWmiGetReturnStatus 所傳回的值
  • 使用 RequestComplete 呼叫 ScsiPortNotification,並使用 NextRequest 再次呼叫

規格需求

需求
目標平台 桌面
標頭 scsiwmi.h (包括 Miniport.h、Scsi.h)

另請參閱

SCSIWMI_REQUEST_CONTEXT

SCSI_WMILIB_CONTEXT

ScsiPortNotification

ScsiPortWmiGetReturnSize

ScsiPortWmiGetReturnStatus

ScsiPortWmiPostProcess