次の方法で共有


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 ルーチンを呼び出します。

IRP_MN_ENABLE_COLLECTION

IRP_MN_DISABLE_COLLECTION

IRP_MN_ENABLE_EVENTS

IRP_MN_DISABLE_EVENTS

ドライバーが 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 フラグを指定した場合、削除が発生する前に追加の要求が到着する可能性があります。
最初のデータ コンシューマーがブロックを有効にしたときに WMI は単一の有効化要求を送信し、最後のデータ コンシューマーがブロックを無効にしたときに単一の無効化要求を送信するため、ドライバーがブロックに対してイベントまたはデータ収集が既に有効になっているかどうかを確認する必要があります。 WMI は DpWmiFunctionControl 呼び出してブロックを無効にする中間呼び出しなしでブロックを有効にしません。

ブロックのイベントまたはデータ収集を有効または無効にすると、ドライバーは WmiCompleteRequest 呼び出して要求を完了します。

このルーチンはページング可能です。

このルーチンの実装の詳細については、「 WmiSystemControl を呼び出して WMI IRPを処理する」を参照してください。

必要条件

要件 価値
ターゲット プラットフォーム デスクトップ
ヘッダー wmilib.h (Wmilib.h を含む)
IRQL PASSIVE_LEVELで呼び出されます。

関連項目

IRP_MN_DISABLE_COLLECTION

IRP_MN_DISABLE_EVENTS

IRP_MN_ENABLE_COLLECTION

IRP_MN_ENABLE_EVENTS

WMILIB_CONTEXT

WmiSystemControl