Win32 API 日本語リファレンス
ホームSystem.Wmi › IMofCompiler

IMofCompiler

COM
IID6daf974e-2e37-11d2-aec9-00c04fb68820継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

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。

vtbl 3 HRESULT CompileFile(LPWSTR FileName, LPWSTR ServerAndNamespace, LPWSTR User, LPWSTR Authority, LPWSTR Password, INT lOptionFlags, INT lClassFlags, INT lInstanceFlags, WBEM_COMPILE_STATUS_INFO* pInfo)

IMofCompiler::CompileFile メソッドは、MOF ファイル (バイナリ MOF を含む) をコンパイルし、その情報を WMI リポジトリに格納します。

FileNameLPWSTRinコンパイルするファイルの名前。
ServerAndNamespaceLPWSTRin

クラスまたはインスタンスの書き込み先となる既定の名前空間へのパス。

リモートコンピューター上の名前空間を指定することもできます (例: "\computer\root")。この値は #pragma コマンドによって上書きされる場合があるため、自動回復を利用する場合は指定しないでください。NULL の場合は、ローカルコンピューターの root\default 名前空間が既定になります。

UserLPWSTRinリモートコンピューター上でコンパイルする際に使用する資格情報を指定する値。NULL の場合、ユーザーコンテキストは呼び出し元プロセスが使用しているものになります。ローカルコンピューターに接続する場合、この値は常に無視されます。詳細については「解説」を参照してください。
AuthorityLPWSTRinリモートコンピューター上でコンパイルする際の資格情報を指定する値。NULL の場合、機関 (authority) コンテキストは呼び出し元プロセスが使用しているものになります。ローカルコンピューターに接続する場合、この値は常に無視されます。詳細については「解説」を参照してください。
PasswordLPWSTRinリモートコンピューター上でコンパイルする際の資格情報を指定する値。NULL の場合、現在のコンテキストのパスワードが使用されます。ローカルコンピューターに接続する場合、この値は常に無視されます。
lOptionFlagsINTin

CompileFile メソッドを使用する際に、次のフラグを 1 つ以上組み合わせて指定できるパラメーターです。

WBEM_FLAG_CHECK_ONLY

構文チェックのみを行います。

WBEM_FLAG_AUTORECOVER

メソッドが成功した場合、データベースの自動回復時にコンパイルされるファイルの一覧にそのファイル名を追加します。

このフラグは、名前空間、クラス、インスタンスの各フラグと組み合わせることはできません。

WBEM_FLAG_CONSOLE_PRINT

各種の有用なメッセージをコンソールに出力します。

WBEM_FLAG_DONT_ADD_TO_LIST

データベースの自動回復時にコンパイルされるファイルの一覧に、そのファイルが追加されないようにします。

このフラグは WBEM_FLAG_AUTORECOVER と併用できません。

lClassFlagsINTin

クラスの作成を制御するフラグ。

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 と組み合わせられます。

lInstanceFlagsINTin

インスタンスの作成を制御するフラグ。

0 または次のいずれかのフラグを指定できます。

WBEM_FLAG_UPDATE_ONLY

更新のみを許可します。

WBEM_FLAG_CREATE_ONLY

新規インスタンスのみを許可します。

pInfoWBEM_COMPILE_STATUS_INFO*inout

エラーを表す WBEM_COMPILE_STATUS_INFO へのポインター。

このパラメーターの値が NULL でない場合はエラーが発生しており、構造体にエラー情報が格納されます。

戻り値

このメソッドは次の値のいずれかを返すことがあります。

2

#pragma autorecover ステートメントが存在しないことを示す警告です。このステートメントは MOF ファイルの先頭行に記述する必要があります。

解説(Remarks)

User パラメーターを <domain\user> の形式で指定する場合、Authority パラメーターは NULL にする必要があります。

vtbl 4 HRESULT CompileBuffer(INT BuffSize, BYTE* pBuffer, LPWSTR ServerAndNamespace, LPWSTR User, LPWSTR Authority, LPWSTR Password, INT lOptionFlags, INT lClassFlags, INT lInstanceFlags, WBEM_COMPILE_STATUS_INFO* pInfo)

IMofCompiler::CompileBuffer メソッドは、バイナリ MOF データを含むバッファー、または ASCII 形式のテキストバッファーをコンパイルします。

BuffSizeINTinpBuffer パラメーターが指すデータのサイズ。
pBufferBYTE*inバイナリ MOF ファイルのデータ、または ASCII 形式のテキストバッファーへのポインター。
ServerAndNamespaceLPWSTRin

サーバー名と名前空間。

このパラメーターは、pBuffer パラメーターがテキストバッファーを指している場合を除いて無視されます。テキスト MOF が #pragma ステートメントなしで渡された場合、MOF ファイルは既定の名前空間にコンパイルされます。pBuffer がバイナリ MOF ファイルを指している場合、ServerAndNamespace パラメーターは NULL にする必要があります。

UserLPWSTRin

サービスを要求するユーザーの名前。

このパラメーターは、リモートコンピューター上でコンパイルする際の資格情報を指定します。NULL の場合、ユーザーコンテキストは現在のプロセスが使用しているものになります。ローカルコンピューターに接続する場合、この値は常に無視されます。詳細については「解説」を参照してください。

AuthorityLPWSTRinリモートコンピューター上でコンパイルする際の資格情報を指定します。NULL の場合、機関 (authority) コンテキストは現在のプロセスが使用しているものになります。このパラメーターは、ローカルコンピューターに接続する場合は常に無視されます。詳細については「解説」を参照してください。
PasswordLPWSTRinリモートコンピューター上でコンパイルする際の資格情報を指定します。NULL の場合、現在のコンテキストのパスワードが使用されます。このパラメーターは、ローカルコンピューターに接続する場合は常に無視されます。
lOptionFlagsINTin

次のフラグを 1 つ以上組み合わせて指定できます。

WBEM_FLAG_CHECK_ONLY

構文チェックのみを行います。

WBEM_FLAG_AUTORECOVER

メソッドが成功した場合、データベースの自動回復時にコンパイルされるファイルの一覧にそのファイル名を追加します。

このフラグは、名前空間、クラス、インスタンスの各フラグと組み合わせることはできません。

WBEM_FLAG_CONSOLE_PRINT

各種の有用なメッセージをコンソールに出力します。

WBEM_FLAG_DONT_ADD_TO_LIST

データベースの自動回復時にコンパイルされるファイルの一覧に、そのファイルが追加されないようにします。

このフラグは WBEM_FLAG_AUTORECOVER と併用できません。

lClassFlagsINTinバイナリ MOF ファイルには既に情報が含まれているため、このパラメーターは無視されます。値は 0 を指定してください。
lInstanceFlagsINTinバイナリ MOF ファイルには既に情報が含まれているため無視されます。値は 0 を指定してください。
pInfoWBEM_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 メソッドを呼び出す前にそのファイルを読み込むことができます。

vtbl 5 HRESULT CreateBMOF(LPWSTR TextFileName, LPWSTR BMOFFileName, LPWSTR ServerAndNamespace, INT lOptionFlags, INT lClassFlags, INT lInstanceFlags, WBEM_COMPILE_STATUS_INFO* pInfo)

IMofCompiler::CreateBMOF メソッドは、バイナリ MOF ファイルを作成します。

TextFileNameLPWSTRin解析するテキストファイルの名前。
BMOFFileNameLPWSTRin

バイナリ MOF ファイルの場合: 生成されたバイナリ MOF データを格納するファイルの名前。

ローカライズされた MOF ファイルの場合: BMOFFileName 文字列には、次のカンマ区切りの値を含める必要があります。

  • a<locale>

    ロケール情報を指定します。この値の前にはカンマを付ける必要があります。詳細については、mofcomp ユーティリティの -ADMENDMENT スイッチの説明を参照してください。

  • n<filename.mof>

    生成されたバイナリ MOF データを格納するファイルの名前。

  • l<filename.mfl>

    生成されたローカライズ済み MOF データを格納するファイルの名前。

例: BMOFFileName=",aMS_409,nmyFile.mof,lmyFile.mfl"。
ServerAndNamespaceLPWSTRin

クラスまたはインスタンスの書き込み先となる既定の名前空間のパス。

このパラメーターでリモートコンピューター上の名前空間を指定できます (例: "\computer\root")。この値は #pragma コマンドによって上書きされる場合があるため、自動回復を使用する場合は指定しないでください。値が NULL の場合、ローカルコンピューターの root\default 名前空間が既定になります。

lOptionFlagsINTin

次のフラグを 1 つ以上組み合わせて指定できます。

WBEM_FLAG_CHECK_ONLY

構文チェックのみを行います。

WBEM_FLAT_CONSOLE_PRINT

各種の有用なメッセージをコンソールに出力します。

WBEM_FLAG_WMI_CHECK

Windows SDK の WMI セクションに含まれる WMIMOFCHK プログラムを使用して、生成されたバイナリ MOF ファイルに対して追加のチェックを実行します。

lClassFlagsINTin

クラスの作成を制御するフラグ。値は 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 と組み合わせられます。

lInstanceFlagsINTin

インスタンスの作成を制御するフラグ。

値は 0 または次のいずれかのフラグを指定できます。

WBEM_FLAG_UPDATE_ONLY

更新のみを許可します。

WBEM_FLAG_CREATE_ONLY

新規インスタンスのみを許可します。

pInfoWBEM_COMPILE_STATUS_INFO*inout

エラーを表す WBEM_COMPILE_STATUS_INFO へのポインター。

このパラメーターの値が NULL でない場合はエラーが発生しており、構造体にエラー情報が格納されます。

戻り値

成功した場合、このメソッドは WBEM_S_NO_ERROR を返します。失敗した場合は WBEM_S_FALSE を返します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
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 方式にも切替可。