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
將區塊的索引指定至SCSI_WMILIB_CONTEXT結構中迷你埠驅動程序傳遞給 ScsiPortWmiDispatchFunction的 GUID 清單。
[in] Function
指定 ScsiWmiEventControl 來啟用或停用事件,或 ScsiWmiDataBlockControl 啟用或停用註冊為昂貴之區塊的數據收集(也就是迷你埠驅動程式在 旗標 用來註冊區塊的 SCSIWMIGUIDREGINFO 結構WMIREG_FLAG_EXPENSIVE區塊)。
[in] Enable
指定 TRUE 來啟用事件或數據收集,或 FALSE 停用它。
傳回值
HwScsiWmiFunctionControl 如果要求擱置,則傳回SRB_STATUS_PENDING;如果要求已完成,則傳回非零 SRB 狀態值。 這個例程傳回的SRB狀態值與傳入 ScsiPortWmiPostProcess相同。 雖然傳回值數據類型是 BOOLEAN,但 HwScsiWmiFunctionControl 例程實際上會傳回 SRB 狀態值。
言論
當迷你埠驅動程式收到 SRB 時,函式 成員會設定為 SRB_FUNCTION_WMI,它會呼叫 ScsiPortWmiDispatchFunction,並將指標指向初始化的 SCSI_WMILIB_CONTEXT 結構,並將 MinorFunction 設為 Srb->WmiSubFunction。 如果 MinorFunction 表示啟用或停用事件的要求,SCSI 埠驅動程式會呼叫迷你埠驅動程式的 HwScsiWmiFunctionControl 例程,或啟用或停用小型埠驅動程式註冊為昂貴收集的數據區塊收集。
如果迷你埠驅動程式未實作 HwScsiWmiFunctionControl 例程,則必須將 WmiFunctionControl 設定為 NULL,SCSI_WMILIB_CONTEXT迷你埠驅動程式傳遞給 ScsiPortWmiDispatchFunction。 埠驅動程式會將SRB_STATUS_SUCCESS傳回給呼叫端。
迷你埠驅動程式不需要檢查是否已啟用區塊的事件或數據收集,因為埠驅動程式會在第一個數據取用者啟用區塊時傳送單一啟用要求,並在最後一個數據取用者停用區塊時傳送單一停用要求。 埠驅動程式不會呼叫 HwScsiWmiFunctionControl 多次啟用區塊,而不需介入呼叫即可停用它。
如果在 HwScsiWmiFunctionControl 回呼中完成 SRB,則迷你埠驅動程式會使用適當的 SrbStatus呼叫 ScsiPortWmiPostProcess。 如果迷你埠驅動程式貼上此 SRB,則當 SRB 完成且完成 SRB 之前,應該呼叫 ScsiPortWmiPostProcess。
要求
要求 | 價值 |
---|---|
目標平臺 | 桌面 |
標頭 | scsiwmi.h (包括 Scsiwmi.h) |