WMI_FUNCTION_CONTROL_CALLBACK コールバック関数 (wmilib.h)
DpWmiFunctionControl ルーチンは、イベントの通知を有効または無効にし、ドライバーが収集にコストがかかるとして登録されたデータ ブロックのデータ収集を有効または無効にします。 このルーチンは省略可能です。
構文
WMI_FUNCTION_CONTROL_CALLBACK WmiFunctionControlCallback;
NTSTATUS WmiFunctionControlCallback(
[in] PDEVICE_OBJECT DeviceObject,
[in] PIRP Irp,
[in] ULONG GuidIndex,
[in] WMIENABLEDISABLECONTROL Function,
[in] BOOLEAN Enable
)
{...}
パラメーター
[in] DeviceObject
ドライバーの WDM DEVICE_OBJECT 構造体へのポインター。
[in] Irp
IRP へのポインター。
[in] GuidIndex
WmiSystemControl に渡された WMILIB_CONTEXT 構造体でドライバーが指定した GUID の一覧に 0 から始まるインデックスを指定して、データ ブロック指定します。
[in] Function
有効または無効にする内容を指定します。 WmiEventControl はイベントを示し、WmiDataBlockControl は、収集コストが高いとして登録されたブロックのデータ収集を示します (つまり、ドライバー セットがブロックの登録に使用される WMIGUIDREGINFO 構造体の フラグ に WMIREG_FLAG_EXPENSIVEするブロック)。
[in] Enable
イベントまたはデータ収集 有効にする TRUE を指定するか、FALSE を して無効にします。
戻り値
DpWmiFunctionControl は、STATUS_SUCCESSまたは次のような適切なエラー状態を返します。
備考
WMI は、次のいずれかの要求に応答して WmiSystemControl 呼び出した後、ドライバーの DpWmiFunctionControl ルーチンを呼び出します。
ドライバーが DpWmiFunctionControl ルーチンを実装する場合、ドライバーは、WmiSystemControlに渡す WMILIB_CONTEXT 構造体の WmiFunctionControl メンバーにルーチンのアドレスを配置する必要があります。 ドライバーは、DpWmiFunctionControl ルーチンを実装していない場合は、WmiFunctionControl を NULL をに設定する必要があります。 後者の場合、WMI は呼び出し元にSTATUS_SUCCESSを返します。
ドライバーは、すべての入力引数の検証を担当します。 具体的には、ドライバーは次の操作を行う必要があります。
- WMILIB_CONTEXT 構造体の GuidCount メンバーに基づいて、GuidIndex 値が 0 から GuidCount-1 の間にあることを確認します。
- ドライバーが、指定されたデータ ブロックに削除のフラグが設定されていないことを確認します。 ドライバーが最近、WMILIB_CONTEXT 構造体に含まれている WMIGUIDREGINFO 構造体でWMIREG_FLAG_REMOVE_GUID フラグを指定した場合、削除が発生する前に追加の要求が到着する可能性があります。
ブロックのイベントまたはデータ収集を有効または無効にすると、ドライバーは WmiCompleteRequest 呼び出して要求を完了します。
このルーチンはページング可能です。
このルーチンの実装の詳細については、「 WmiSystemControl を呼び出して WMI IRPを処理する」を参照してください。
必要条件
要件 | 価値 |
---|---|
ターゲット プラットフォーム の | デスクトップ |
ヘッダー | wmilib.h (Wmilib.h を含む) |
IRQL | PASSIVE_LEVELで呼び出されます。 |
関連項目
WmiSystemControl の