ハイパフォーマンス インターフェイスの実装
WMI は、ハイパフォーマンス プロバイダーを WMI またはクライアント アプリケーションのどちらかにインプロセスで読み込むため、ハイパフォーマンス プロバイダーをインプロセス サーバーとして設計する必要があります。 さらに、IWbemHiPerfProvider インターフェイスと IWbemRefresher インターフェイスにハイパフォーマンス プロバイダー メソッドを実装する必要があります。
インプロセス サーバーとしてハイパフォーマンス プロバイダーを実装する必要があります。 インプロセス サーバーのセキュリティを実装する際に注意する必要がある機能の 1 つは、プロバイダーが独自の場所を識別する方法です。 WMI にインプロセスで読み込まれると、WMI は CLSID を使用してプロバイダーをインスタンス化します。 クライアント アプリケーションにインプロセスで読み込まれると、クライアント アプリケーションは ClientLoadableCLSID プロパティを使用してプロバイダーをインスタンス化します。 CLSID と ClientLoadableCLSID に異なる値を指定することで、プロバイダーは、WMI またはクライアント アプリケーションにインプロセスで読み込まれているかどうかを判断できます。 WMI プロセス内にある場合、プロバイダーは、ClientLoadableCLSID を使用して、必要なクライアント偽装を行う必要があります。 クライアント プロセス内にある場合、プロバイダーは呼び出されたスレッドのアクセス トークンを継承します。 インプロセス サーバーの実装の詳細については、コンポーネント オブジェクト モデル (COM) ドキュメントを参照してください。
インプロセス サーバーとして、ハイパフォーマンス プロバイダーは、リモート クライアントのデータを最新状態に保つために、リフレッシャー オブジェクトを使用します。 次の表に、ハイパフォーマンス プロバイダーに実装する必要があるメソッドを一覧表示します。
メソッド | 機能 |
---|---|
IWbemHiPerfProvider::QueryInstances | クエリ |
IWbemHiPerfProvider::GetObjects | オブジェクトの取得 |
IWbemHiPerfProvider::CreateRefresher | リフレッシャーを作成します |
IWbemHiPerfProvider::CreateRefreshableObject | 更新可能なインスタンス オブジェクトを作成します |
IWbemHiPerfProvider::CreateRefreshableEnum | 更新可能な列挙子を作成します |
IWbemHiPerfProvider::StopRefreshing | 列挙子またはインスタンス オブジェクトの更新を停止します |
IWbemRefresher::Refresh | リフレッシャーを作成します |
関連トピック