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

IMMCVersionInfo

COM
IIDa8d2c5fe-cdcb-4b9d-bde5-a27343ff54bc継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IMMCVersionInfo インターフェイスは、インストールされている MMC アプリケーションのバージョン情報を提供します。

メソッド 1

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT GetMMCVersion(INT* pVersionMajor, INT* pVersionMinor)

GetMMCVersion メソッドは、MMC アプリケーションのバージョン情報を取得します。

pVersionMajorINT*outバージョンのメジャー番号。たとえば *pVersionMajor が 2 を返した場合、MMC バージョン 2.x が実行されています。
pVersionMinorINT*outバージョンのマイナー番号。たとえば *pVersionMinor が 0 を返した場合、MMC バージョン x.0 が実行されています。

戻り値

成功した場合、戻り値は S_OK です。それ以外の戻り値はエラーコードを示します。

解説(Remarks)

IMMCVersionInfo インターフェイスは MMC 2.0 で導入されました。MMC 1.x がインストールされている場合に MMC のバージョンを判別する方法については、 MMC バージョン番号の検出 を参照してください。

IMMCVersionInfo * pVersionInfo = NULL;
HRESULT   hr;

// MMCVersionInfo クラスのオブジェクトを作成します。
hr = CoCreateInstance(CLSID_MMCVersionInfo,
                      NULL,
                      CLSCTX_INPROC_SERVER,
                      IID_IMMCVersionInfo,
                      (void**)&pVersionInfo);
if (S_OK != hr)
{
    // エラーが発生しました。
    // システムが MMCVersionInfo をサポートしていない場合は、その旨を報告します。
    // これはシステムが MMC 1.x を実行している場合に発生します。
    if (REGDB_E_CLASSNOTREG == hr)
        OutputDebugString(_T("MMCVersionInfo is not registered\n"));
    else
        // 別のエラーが発生しました。
        OutputDebugString(_T("Failed call to CoCreateInstance\n"));
}
else
{
    // GetMMCVersion メソッドを呼び出します。
    long lMajor, lMinor;
    hr = pVersionInfo->GetMMCVersion(&lMajor,
                                     &lMinor);
    if (S_OK != hr)
        OutputDebugString(_T("Failed call to GetMMCVersion\n"));
    else
    {
        OutputDebugString(_T("Success in GetMMCVersion\n"));
        // 必要に応じてメジャーおよびマイナーのバージョン情報を使用します。
        // ...
    }
}
// インターフェイスポインターを解放します。
if (NULL != pVersionInfo)
{
    pVersionInfo->Release();
    pVersionInfo = NULL;
}
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IMMCVersionInfo "{A8D2C5FE-CDCB-4B9D-BDE5-A27343FF54BC}"
#usecom global IMMCVersionInfo IID_IMMCVersionInfo "{D6FEDB1D-CF21-4BD9-AF3B-C5468E9C6684}"
#comfunc global IMMCVersionInfo_GetMMCVersion  3 var,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。