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

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

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

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

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

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

long を指すポインターは、3 つすべてのケースで同じポインターである必要があります。

注意

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

 

注意事項

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

 

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

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

 

注意

CHString クラスと CHStringArray クラスは、Microsoft Foundation Classes (MFC) の CStringCStringArray に似ています。 WMI バージョンが存在するため、開発者は、MFC を使用しなくても、文字列操作メソッドと比較メソッドを使用できます。 また、WBEMTime クラスと WBEMTimeSpan クラスは、MFC の CTime クラスと CTimeSpan クラスに似ています。 WMI バージョンでは、時間をナノ秒単位の精度で格納できると同時に、BSTR 間での変換も可能です。 CString クラス、CStringArray クラス、CTime クラス、CTimeSpan クラスの詳細については、MSDN の Microsoft Foundation Classes に関するページを参照してください。

 

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

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

時間と期間は、ナノ秒として内部に格納されますが、ナノ秒の精度で格納されるとは限りません。 これは、WBEMTime オブジェクトが、秒単位の精度を持つ時間の形式 (struct tmtime_t) を使用して構築可能であるという理由からです。 小数点以下の桁数を追加で指定しても、精度は向上しません。