IMofCompiler
COM公式ドキュメント
IMofCompiler インターフェイスは Mofd.dll によって実装され、Managed Object Format (MOF) コンパイラや MOF ファイルをコンパイルするその他のアプリケーションが使用する COM インターフェイスを提供します。
解説(Remarks)
Windows 8: IMofCompiler インターフェイスは、プロバイダーをインストールする際、[Key] および [Static] 修飾子が存在すれば実際の値にかかわらず true として扱います。その他の修飾子は、存在していても明示的に true に設定されていない場合は false として扱われます。
例
次のコードは、IMofCompiler オブジェクトへのポインターを作成する例です。
IMofCompiler *pMof = NULL;
CoCreateInstance(
CLSID_MofCompiler,
0,
CLSCTX_INPROC_SERVER,
IID_IMofCompiler,
(LPVOID *) &pMof);
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
IMofCompiler::CompileFile メソッドは、MOF ファイル (バイナリ MOF を含む) をコンパイルし、その情報を WMI リポジトリに格納します。
| FileName | LPWSTR | in | コンパイルするファイルの名前。 |
| ServerAndNamespace | LPWSTR | in | クラスまたはインスタンスの書き込み先となる既定の名前空間へのパス。 リモートコンピューター上の名前空間を指定することもできます (例: "\computer\root")。この値は #pragma コマンドによって上書きされる場合があるため、自動回復を利用する場合は指定しないでください。NULL の場合は、ローカルコンピューターの root\default 名前空間が既定になります。 |
| User | LPWSTR | in | リモートコンピューター上でコンパイルする際に使用する資格情報を指定する値。NULL の場合、ユーザーコンテキストは呼び出し元プロセスが使用しているものになります。ローカルコンピューターに接続する場合、この値は常に無視されます。詳細については「解説」を参照してください。 |
| Authority | LPWSTR | in | リモートコンピューター上でコンパイルする際の資格情報を指定する値。NULL の場合、機関 (authority) コンテキストは呼び出し元プロセスが使用しているものになります。ローカルコンピューターに接続する場合、この値は常に無視されます。詳細については「解説」を参照してください。 |
| Password | LPWSTR | in | リモートコンピューター上でコンパイルする際の資格情報を指定する値。NULL の場合、現在のコンテキストのパスワードが使用されます。ローカルコンピューターに接続する場合、この値は常に無視されます。 |
| lOptionFlags | INT | in | CompileFile メソッドを使用する際に、次のフラグを 1 つ以上組み合わせて指定できるパラメーターです。 WBEM_FLAG_CHECK_ONLY構文チェックのみを行います。 WBEM_FLAG_AUTORECOVERメソッドが成功した場合、データベースの自動回復時にコンパイルされるファイルの一覧にそのファイル名を追加します。 このフラグは、名前空間、クラス、インスタンスの各フラグと組み合わせることはできません。 WBEM_FLAG_CONSOLE_PRINT各種の有用なメッセージをコンソールに出力します。 WBEM_FLAG_DONT_ADD_TO_LISTデータベースの自動回復時にコンパイルされるファイルの一覧に、そのファイルが追加されないようにします。 このフラグは WBEM_FLAG_AUTORECOVER と併用できません。 |
| lClassFlags | INT | in | クラスの作成を制御するフラグ。 0 または次の値の組み合わせを指定できます。 WBEM_FLAG_UPDATE_ONLYクラスの作成を禁止します。 このフラグは WBEM_FLAG_UPDATE_SAFE_MODE または WBEM_FLAG_UPDATE_FORCE_MODE と組み合わせられます。 WBEM_FLAG_CREATE_ONLYクラスの作成のみを許可します。 このフラグは他のフラグと組み合わせられません。 WBEM_FLAG_UPDATE_SAFE_MODE競合が存在しない限り、クラスを更新します。 このフラグは WBEM_FLAG_UPDATE_ONLY と組み合わせられます。 WBEM_FLAG_UPDATE_FORCE_MODE可能な限り競合を解決して更新します。強制モードで静的クラスを更新すると、そのクラスのすべてのインスタンスが削除されます。プロバイダークラスに対する強制更新では、クラスのインスタンスは削除されません。 このフラグは llnstanceFlags と組み合わせられます。 |
| lInstanceFlags | INT | in | インスタンスの作成を制御するフラグ。 0 または次のいずれかのフラグを指定できます。 WBEM_FLAG_UPDATE_ONLY更新のみを許可します。 WBEM_FLAG_CREATE_ONLY新規インスタンスのみを許可します。 |
| pInfo | WBEM_COMPILE_STATUS_INFO* | inout | エラーを表す WBEM_COMPILE_STATUS_INFO へのポインター。 このパラメーターの値が NULL でない場合はエラーが発生しており、構造体にエラー情報が格納されます。 |
戻り値
このメソッドは次の値のいずれかを返すことがあります。
2
#pragma autorecover ステートメントが存在しないことを示す警告です。このステートメントは MOF ファイルの先頭行に記述する必要があります。
解説(Remarks)
User パラメーターを <domain\user> の形式で指定する場合、Authority パラメーターは NULL にする必要があります。
IMofCompiler::CompileBuffer メソッドは、バイナリ MOF データを含むバッファー、または ASCII 形式のテキストバッファーをコンパイルします。
| BuffSize | INT | in | pBuffer パラメーターが指すデータのサイズ。 |
| pBuffer | BYTE* | in | バイナリ MOF ファイルのデータ、または ASCII 形式のテキストバッファーへのポインター。 |
| ServerAndNamespace | LPWSTR | in | サーバー名と名前空間。 このパラメーターは、pBuffer パラメーターがテキストバッファーを指している場合を除いて無視されます。テキスト MOF が #pragma ステートメントなしで渡された場合、MOF ファイルは既定の名前空間にコンパイルされます。pBuffer がバイナリ MOF ファイルを指している場合、ServerAndNamespace パラメーターは NULL にする必要があります。 |
| User | LPWSTR | in | サービスを要求するユーザーの名前。 このパラメーターは、リモートコンピューター上でコンパイルする際の資格情報を指定します。NULL の場合、ユーザーコンテキストは現在のプロセスが使用しているものになります。ローカルコンピューターに接続する場合、この値は常に無視されます。詳細については「解説」を参照してください。 |
| Authority | LPWSTR | in | リモートコンピューター上でコンパイルする際の資格情報を指定します。NULL の場合、機関 (authority) コンテキストは現在のプロセスが使用しているものになります。このパラメーターは、ローカルコンピューターに接続する場合は常に無視されます。詳細については「解説」を参照してください。 |
| Password | LPWSTR | in | リモートコンピューター上でコンパイルする際の資格情報を指定します。NULL の場合、現在のコンテキストのパスワードが使用されます。このパラメーターは、ローカルコンピューターに接続する場合は常に無視されます。 |
| lOptionFlags | INT | in | 次のフラグを 1 つ以上組み合わせて指定できます。 WBEM_FLAG_CHECK_ONLY構文チェックのみを行います。 WBEM_FLAG_AUTORECOVERメソッドが成功した場合、データベースの自動回復時にコンパイルされるファイルの一覧にそのファイル名を追加します。 このフラグは、名前空間、クラス、インスタンスの各フラグと組み合わせることはできません。 WBEM_FLAG_CONSOLE_PRINT各種の有用なメッセージをコンソールに出力します。 WBEM_FLAG_DONT_ADD_TO_LISTデータベースの自動回復時にコンパイルされるファイルの一覧に、そのファイルが追加されないようにします。 このフラグは WBEM_FLAG_AUTORECOVER と併用できません。 |
| lClassFlags | INT | in | バイナリ MOF ファイルには既に情報が含まれているため、このパラメーターは無視されます。値は 0 を指定してください。 |
| lInstanceFlags | INT | in | バイナリ MOF ファイルには既に情報が含まれているため無視されます。値は 0 を指定してください。 |
| pInfo | WBEM_COMPILE_STATUS_INFO* | inout | エラーを表す WBEM_COMPILE_STATUS_INFO へのポインター。 このパラメーターの値が NULL でない場合はエラーが発生しており、構造体にエラー情報が格納されます。 |
戻り値
成功した場合、このメソッドは WBEM_S_NO_ERROR を返します。失敗した場合は WBEM_S_FALSE を返します。
解説(Remarks)
User パラメーターが <domain\user> の形式である場合、Authority パラメーターは NULL にする必要があります。
バイナリ MOF データは CreateBMOF メソッドで生成できます。このメソッドはバイナリ MOF データをファイルに格納するため、 CompileBuffer メソッドを呼び出す前にそのファイルを読み込むことができます。
IMofCompiler::CreateBMOF メソッドは、バイナリ MOF ファイルを作成します。
| TextFileName | LPWSTR | in | 解析するテキストファイルの名前。 |
| BMOFFileName | LPWSTR | in | バイナリ MOF ファイルの場合: 生成されたバイナリ MOF データを格納するファイルの名前。 ローカライズされた MOF ファイルの場合: BMOFFileName 文字列には、次のカンマ区切りの値を含める必要があります。
|
| ServerAndNamespace | LPWSTR | in | クラスまたはインスタンスの書き込み先となる既定の名前空間のパス。 このパラメーターでリモートコンピューター上の名前空間を指定できます (例: "\computer\root")。この値は #pragma コマンドによって上書きされる場合があるため、自動回復を使用する場合は指定しないでください。値が NULL の場合、ローカルコンピューターの root\default 名前空間が既定になります。 |
| lOptionFlags | INT | in | 次のフラグを 1 つ以上組み合わせて指定できます。 WBEM_FLAG_CHECK_ONLY構文チェックのみを行います。 WBEM_FLAT_CONSOLE_PRINT各種の有用なメッセージをコンソールに出力します。 WBEM_FLAG_WMI_CHECKWindows SDK の WMI セクションに含まれる WMIMOFCHK プログラムを使用して、生成されたバイナリ MOF ファイルに対して追加のチェックを実行します。 |
| lClassFlags | INT | in | クラスの作成を制御するフラグ。値は 0 または次のフラグの組み合わせを指定できます。 WBEM_FLAG_UPDATE_ONLYクラスの作成を禁止します。 このフラグは WBEM_FLAG_UPDATE_SAFE_MODE または WBEM_FLAG_UPDATE_FORCE_MODE と組み合わせられます。 WBEM_FLAG_CREATE_ONLYクラスの作成のみを許可します。 このフラグは他のフラグと組み合わせられません。 WBEM_FLAG_UPDATE_SAFE_MODE競合が存在しない限り、クラスを更新します。 このフラグは WBEM_FLAG_UPDATE_ONLY と組み合わせられます。 WBEM_FLAG_UPDATE_FORCE_MODE可能な場合は競合を解決して更新します。強制モードで静的クラスを更新すると、そのクラスのすべてのインスタンスが削除されます。プロバイダークラスに対する強制更新では、クラスのインスタンスは削除されません。 このフラグは lInstanceFlags と組み合わせられます。 |
| lInstanceFlags | INT | in | インスタンスの作成を制御するフラグ。 値は 0 または次のいずれかのフラグを指定できます。 WBEM_FLAG_UPDATE_ONLY更新のみを許可します。 WBEM_FLAG_CREATE_ONLY新規インスタンスのみを許可します。 |
| pInfo | WBEM_COMPILE_STATUS_INFO* | inout | エラーを表す WBEM_COMPILE_STATUS_INFO へのポインター。 このパラメーターの値が NULL でない場合はエラーが発生しており、構造体にエラー情報が格納されます。 |
戻り値
成功した場合、このメソッドは WBEM_S_NO_ERROR を返します。失敗した場合は WBEM_S_FALSE を返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IMofCompiler "{6DAF974E-2E37-11D2-AEC9-00C04FB68820}" #usecom global IMofCompiler IID_IMofCompiler "{6DAF9757-2E37-11D2-AEC9-00C04FB68820}" #comfunc global IMofCompiler_CompileFile 3 wstr,wstr,wstr,wstr,wstr,int,int,int,var #comfunc global IMofCompiler_CompileBuffer 4 int,var,wstr,wstr,wstr,wstr,int,int,int,var #comfunc global IMofCompiler_CreateBMOF 5 wstr,wstr,wstr,int,int,int,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IMofCompiler "{6DAF974E-2E37-11D2-AEC9-00C04FB68820}" #usecom global IMofCompiler IID_IMofCompiler "{6DAF9757-2E37-11D2-AEC9-00C04FB68820}" #comfunc global IMofCompiler_CompileFile 3 wstr,wstr,wstr,wstr,wstr,int,int,int,sptr #comfunc global IMofCompiler_CompileBuffer 4 int,sptr,wstr,wstr,wstr,wstr,int,int,int,sptr #comfunc global IMofCompiler_CreateBMOF 5 wstr,wstr,wstr,int,int,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。