プロバイダ フレームワーク ユーティリティ クラス

[WMI プロバイダー フレームワークの一部である WMI C++ クラスは、現在、最終的な状態であると考えられており、これらのライブラリに影響するセキュリティ関連ではない問題に対して、これ以上の開発、機能強化、または更新は提供されなくなります。 すべての新規開発には、MI API を使用する必要があります。]

プロバイダー フレームワーク ライブラリである Framedyd.dll (デバッグ バージョン) および Framedyn.dll (リリース バージョン) は、いくつかのプロバイダー ヘルパー クラスを実装します。 Framedyn.dll の一部の関数がヘッダー ファイルから削除されました。 これらの関数を引き続き使用するには、Fwcommon.h を含める前にコードに #define FRAMEWORK_ALLOW_DEPRECATED を追加します。

不要になった個々のプロバイダーをアンロードできます。

この機能を使用するには、MainDll.cpp でプロバイダーに次の 3 つの変更を加える必要があります。

  • CWbemProviderGlue::FrameworkLoginDLL を呼び出す関数 DllMain に、long へのポインターである 2 番目のパラメーターを追加する必要があります。
  • CWbemProviderGlue::FrameworkLogoffDLL を呼び出す関数 DllCanUnloadNow に、long へのポインターである 2 番目のパラメーターを追加する必要があります。
  • CWbemGlueFactory のインスタンスを作成する関数 DllGetClassObject では、long へのポインターであるパラメーターを追加する必要があります。

3 つのすべての場合において、long へのポインターは同じポインターである必要があります。

Note

Maindll.cpp では、DllGetClassObjectDllCanUnloadNowDllRegisterServerDllUnregisterServer、および DllMain の各ルーチンを try/catch ブロックにラップする必要があります。

 

注意事項

Framedyd.dll 用の Framedyd.lib を使用したプロバイダー デバッグ ビルドのリンク。 Framedyd.dll は、システム パスに含まれていない Microsoft Windows ソフトウェア開発キット (SDK) \bin ディレクトリにあります。 プロバイダーのデバッグ ビルドを Windows Management サービスを使用してテストすると、Framedyd.dll、またはその依存関係の 1 つが見つからないため、フレームワーク プロバイダーの読み込みに失敗します。 そのため、Windows SDK \bin ディレクトリから \system32\wbem ディレクトリに Framedyd.dll をコピーするか、Windows SDK \bin ディレクトリをシステム検索パスに追加する必要があります。

 

次の表に、プロバイダー フレームワーク ユーティリティ クラスを一覧表示します。

ユーティリティ クラス 説明
CHString WMI の文字列比較関数および操作関数を提供します。
CHStringArray CHString の配列を作成および操作するために含まれます。
TRefPointerCollection ポインターのコンテナー クラスへのアクセスを許可します。
WBEMTime Windows と ANSI C のさまざまなランタイム形式間での変換を容易にします。
WBEMTimeSpan 2 つの WBEMTime オブジェクト間の時間間隔の差を計算して保持するために使用されるヘルパー関数が含まれています。

 

Note

CHString クラスと CHStringArray クラスは、Microsoft Foundation Classes (MFC) の CStringCStringArray に似ています。 WMI バージョンが存在するため、開発者は MFC にアクセスしなくても文字列操作メソッドと文字列比較メソッドにアクセスできます。 WBEMTime クラスと WBEMTimeSpan クラスは、MFC CTime クラスと CTimeSpan クラスにも似ています。 WMI バージョンは、ナノ秒の精度で時間を保存でき、BSTR との間で変換することもできます。 CString、CStringArray、CTime、および CTimeSpan の各クラスの詳細については、MFC デスクトップ アプリケーションのドキュメントを参照してください。

 

WBEMTime メソッドによって返される BSTR 値は、日付と時刻の形式 ("yyyymmddHHMMSS.mmmmmmsUUU") です。

WBEMTimeSpan メソッドによって返される BSTR 値は、間隔の形式 ("ddddddddHHMMSS.mmmmmm:000") です。

時間と期間はナノ秒として内部的に格納されますが、必ずしもナノ秒の精度で格納されるとは限りません。 その理由は、WBEMTime オブジェクトは、秒単位で正確な時刻形式 (struct tm、および time_t) を使用して構築できるためです。 人為的に小数点を追加しても精度は向上しません。