次の方法で共有


ハイパフォーマンス インターフェイスの実装

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 リフレッシャーを作成します

 

インスタンス プロバイダーをハイパフォーマンス プロバイダーにする