WdfWmiProviderCreate 関数 (wdfwmi.h)
[KMDF にのみ適用]
WdfWmiProviderCreate メソッドは、WMI データ ブロックを表す WMI プロバイダー オブジェクトを作成します。
構文
NTSTATUS WdfWmiProviderCreate(
[in] WDFDEVICE Device,
[in] PWDF_WMI_PROVIDER_CONFIG WmiProviderConfig,
[in, optional] PWDF_OBJECT_ATTRIBUTES ProviderAttributes,
[out] WDFWMIPROVIDER *WmiProvider
);
パラメーター
[in] Device
新しいプロバイダー オブジェクトの親オブジェクトとなるフレームワーク デバイス オブジェクトへのハンドル。 デバイス オブジェクトを コントロール デバイス オブジェクトすることはできません。
[in] WmiProviderConfig
WMI データ ブロックに関する構成情報を含む呼び出し元で初期化された WDF_WMI_PROVIDER_CONFIG 構造体へのポインター。
[in, optional] ProviderAttributes
新しい WMI プロバイダー オブジェクトのドライバー指定のオブジェクト属性を含む呼び出し元によって割り当てられた WDF_OBJECT_ATTRIBUTES 構造体へのポインター。 (構造体の ParentObject メンバーは NULL する必要があります)。このパラメーターは省略可能であり、WDF_NO_OBJECT_ATTRIBUTESできます。
[out] WmiProvider
新しい WMI プロバイダー オブジェクトへのハンドルを受け取る場所へのポインター。
戻り値
WdfWmiProviderCreate は、操作が成功した場合にSTATUS_SUCCESSを返します。 それ以外の場合、このメソッドは次のいずれかの値を返す可能性があります。
リターン コード | 形容 |
---|---|
|
無効なパラメーターが検出されました。 |
|
WmiProviderConfig パラメーターが指す WDF_WMI_PROVIDER_CONFIG 構造体のサイズが正しくありません。 |
|
操作を完了するためのメモリが不足していました。 |
|
ドライバーは、指定したデバイスと WMI データ ブロック WdfWmiProviderCreate を既に呼び出しています。 |
WdfWmiProviderCreate メソッドが返す可能性があるその他の戻り値の一覧については、「Framework オブジェクト作成エラー」を参照してください。
このメソッドは、他のNTSTATUS 値を返す場合もあります。
ドライバーが無効なオブジェクト ハンドルを提供すると、バグ チェックが発生します。
備考
ドライバー WdfWmiProviderCreate を呼び出して、ドライバーがプロバイダーの複数のインスタンスを作成する場合は、WMI プロバイダー オブジェクトを作成する必要があります。 ドライバーがプロバイダーのインスタンスを 1 つだけ作成する場合は、最初に WdfWmiProviderCreate を呼び出さずに、WdfWmiInstanceCreate呼び出すことができます。
ドライバーはいつでも WdfWmiProviderCreate 呼び出すことができますが、ドライバーは通常、EvtDriverDeviceAdd コールバック関数内から WdfWmiProviderCreate を呼び出します。
各 WMI プロバイダー オブジェクトの親は、デバイスのフレームワーク デバイス オブジェクトです。 ドライバーはこの親を変更できません。また、ParentObject メンバーまたは WDF_OBJECT_ATTRIBUTES 構造体は NULL する必要があります。
ドライバーが WdfWmiProviderCreate 呼び出した後、ドライバーは WdfWmiProviderGetDevice を呼び出して、プロバイダー オブジェクトの親デバイス オブジェクトへのハンドルを取得できます。
ドライバーが WMI プロバイダー オブジェクトを作成した後、ドライバーはオブジェクトを削除できません。 フレームワークは、デバイスを表すフレームワーク デバイス オブジェクトを削除すると、デバイスの WMI プロバイダー オブジェクトを削除します。 WMI プロバイダー オブジェクトは、最小限のシステム リソースを使用します。
WdfWmiProviderCreate メソッドの詳細については、「Framework-Based ドライバー での WMI のサポート」を参照してください。
例
次のコード例では、WDF_WMI_PROVIDER_CONFIG 構造体を初期化し、WdfWmiProviderCreate 呼び出します。
WDF_WMI_PROVIDER_CONFIG config;
WDFWMIPROVIDER provider;
GUID providerGuid = MY_WMI_DATA_BLOCK_GUID;
NTSTATUS status;
WDF_WMI_PROVIDER_CONFIG_INIT(
&config,
providerGuid
);
config.Flags = WdfWmiProviderTracing;
config.EvtWmiProviderFunctionControl = MyProviderFunctionControl;
status = WdfWmiProviderCreate(
Device,
&config,
WDF_NO_OBJECT_ATTRIBUTES,
&provider
);
必要条件
要件 | 価値 |
---|---|
ターゲット プラットフォーム の | 万国 |
最小 KMDF バージョン | 1.0 |
ヘッダー | wdfwmi.h (Wdf.h を含む) |
ライブラリ | Wdf01000.sys (フレームワーク ライブラリのバージョン管理を参照)。 |
IRQL | <=DISPATCH_LEVEL |
DDI コンプライアンス規則 を する | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |
関連項目
EvtDriverDeviceAdd の
WdfWmiProviderGetDevice の