ScsiPortWmiDispatchFunction 函式 (scsiwmi.h)
ScsiPortWmiDispatchFunction 例程是支援 WMI 的迷你埠驅動程式分派例程。
語法
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) |