次の方法で共有


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

WMI は、ハイパフォーマンス プロバイダーを WMI またはクライアント アプリケーションに対してインプロセスでロードするため、ハイパフォーマンス プロバイダーをインプロセス サーバーとして設計する必要があります。 さらに、IWbemHiPerfProvider および IWbemRefresher インターフェイスにハイパフォーマンス プロバイダー メソッドを実装する必要があります。

ハイパフォーマンス プロバイダーをインプロセス サーバーとして実装する必要があります。 インプロセス サーバーのセキュリティを実装する際に注意する必要がある特性の 1 つは、プロバイダーが自身の場所をどのように特定するかということです。 WMI にインプロセスでロードされると、WMI は CLSID を使用してプロバイダーをインスタンス化します。 クライアント アプリケーションにインプロセスでロードされると、クライアント アプリケーションは ClientLoadableCLSID プロパティを使用してプロバイダーをインスタンス化します。 CLSID と ClientLoadableCLSID に異なる値を指定すると、プロバイダーは、インプロセスで WMI またはクライアント アプリケーションのどちらにロードされるかを判断できます。 WMI プロセス内に配置された場合、プロバイダーは ClientLoadableCLSID を使用して必要なクライアントの偽装を行う必要があります。 クライアント プロセス内に配置された場合、プロバイダーは呼び出されたスレッドのアクセス トークンを継承します。 インプロセス サーバーの実装の詳細については、MSDN の COM セクションを参照してください。

インプロセス サーバーとして、ハイパフォーマンス プロバイダーはリフレッシャー オブジェクトを使用して、リモート クライアントのデータを最新の状態に保ちます。 次の表に、ハイパフォーマンス プロバイダー用に実装する必要があるメソッドをリストしています。

メソッド 特徴量
IWbemHiPerfProvider::QueryInstances クエリ
IWbemHiPerfProvider::GetObjects オブジェクトの取得
IWbemHiPerfProvider::CreateRefresher リフレッシャーの作成
IWbemHiPerfProvider::CreateRefreshableObject 更新可能なインスタンス オブジェクトの作成
IWbemHiPerfProvider::CreateRefreshableEnum 更新可能な列挙子の作成
IWbemHiPerfProvider::StopRefreshing 列挙子またはインスタンス オブジェクトの更新の停止
IWbemRefresher::Refresh リフレッシャーの作成

 

インスタンス プロバイダーを High-Performance プロバイダーに変換する