PSCSIWMI_FUNCTION_CONTROL回呼函式 (scsiwmi.h)
會呼叫迷你埠驅動程式的 HwScsiWmiFunctionControl 例程來啟用或停用事件的通知。 也會呼叫它來啟用或停用迷你埠驅動程式指定為成本高昂的數據區塊數據收集。 此例程是選擇性的。
語法
PSCSIWMI_FUNCTION_CONTROL PscsiwmiFunctionControl;
BOOLEAN PscsiwmiFunctionControl(
[in] PVOID DeviceContext,
[in] PSCSIWMI_REQUEST_CONTEXT RequestContext,
[in] ULONG GuidIndex,
[in] SCSIWMI_ENABLE_DISABLE_CONTROL Function,
[in] BOOLEAN Enable
)
{...}
參數
[in] DeviceContext
指向傳遞至 ScsiPortWmiDispatchFunction 的迷你埠驅動程式定義內容值。
[in] RequestContext
指向值,其中包含類型 為 SCSIWMI_REQUEST_CONTEXT 迷你埠驅動程序傳遞至 ScsiPortWmiDispatchFunction 的列舉值。
[in] GuidIndex
依其索引將區塊指定到迷你埠驅動程序傳遞至 ScsiPortWmiDispatchFunction 之SCSI_WMILIB_CONTEXT結構中的 GUID 清單。
[in] Function
指定 ScsiWmiEventControl 來啟用或停用事件,或 ScsiWmiDataBlockControl 來啟用或停用註冊為 (昂貴區塊的數據收集,也就是迷你埠驅動程式在 SCSIWMIGUIDREGINFO 結構旗 標中設定 WMIREG_FLAG_EXPENSIVE的區塊,用來註冊區塊) 。
[in] Enable
指定 TRUE 以啟用事件或數據收集,或 指定 FALSE 加以停用。
傳回值
HwScsiWmiFunctionControl 會在要求擱置時傳回SRB_STATUS_PENDING,如果要求已完成,則傳回非零 SRB 狀態值。 此例程所傳回的SRB狀態值與傳入 ScsiPortWmiPostProcess的內容相同。 雖然傳回值數據類型是 BOOLEAN, 但 HwScsiWmiFunctionControl 例程實際上會傳回 SRB 狀態值。
備註
當迷你埠驅動程式收到將 Function 成員設定為 SRB_FUNCTION_WMI 的 SRB 時,它會使用初始化SCSI_WMILIB_CONTEXT結構的指標呼叫 ScsiPortWmiDispatchFunction,並將 MinorFunction 設定為 Srb-WmiSubFunction>。 如果 MinorFunction 指出啟用或停用事件的要求,則 SCSI 埠驅動程式會呼叫迷你埠驅動程式的 HwScsiWmiFunctionControl 例程,或啟用或停用迷你埠驅動程式註冊為昂貴收集的數據區塊收集。
如果迷你埠驅動程式未實作 HwScsiWmiFunctionControl 例程,則必須 SCSI_WMILIB_CONTEXT在迷你埠驅動程序傳遞至 ScsiPortWmiDispatchFunction 時,將 WmiFunctionControl 設定為 NULL。 埠驅動程式會將SRB_STATUS_SUCCESS傳回給呼叫端。
迷你埠驅動程式不需要檢查事件或數據收集是否已啟用區塊,因為埠驅動程式會在第一個數據取用者啟用區塊時傳送單一啟用要求,並在最後一個數據取用者停用區塊時傳送單一停用要求。 埠驅動程式不會多次呼叫 HwScsiWmiFunctionControl 來啟用區塊,而不需執行介入呼叫來停用它。
如果在 HwScsiWmiFunctionControl 回呼中完成 SRB,迷你埠驅動程式會使用適當的 SrbStatus 呼叫 ScsiPortWmiPostProcess。 如果迷你埠驅動程序畫上此 SRB,則當 SRB 完成且完成 SRB 之前,它應該呼叫 ScsiPortWmiPostProcess 。
規格需求
需求 | 值 |
---|---|
目標平台 | 桌面 |
標頭 | scsiwmi.h (包含 Scsiwmi.h) |