Win32 API 日本語リファレンス
ホームMedia.MediaFoundation › IMFContentEnabler

IMFContentEnabler

COM
IIDd3c4ef59-49ce-4381-9071-d5bcd044c770継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

ユーザーがメディアコンテンツにアクセスするために実行しなければならない手順の 1 つを実装します。

メソッド 7

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

vtbl 3 HRESULT GetEnableType(GUID* pType)

このコンテンツイネーブラーが実行する操作の種類を取得します。

pTypeGUID*out操作の種類を識別する GUID を受け取ります。アプリケーションは、既知の操作種類に合わせてユーザーインターフェイス (UI) 文字列を調整できます。「解説」を参照してください。

戻り値

このメソッドは HRESULT を返します。使用される値には、以下の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。

解説(Remarks)

pType パラメーターには、次の GUID が定義されています。

説明
MFENABLETYPE_MF_RebootRequired ユーザーがコンピューターを再起動する必要があります。
MFENABLETYPE_MF_UpdateRevocationInformation 失効情報を更新します。
MFENABLETYPE_MF_UpdateUntrustedComponent 信頼されていないコンポーネントを更新します。
MFENABLETYPE_WMDRMV1_LicenseAcquisition Windows Media Digital Rights Management (DRM) バージョン 1 のライセンス取得。
MFENABLETYPE_WMDRMV7_Individualization 個別化 (Individualization)。
MFENABLETYPE_WMDRMV7_LicenseAcquisition Windows Media DRM バージョン 7 以降のライセンス取得。
vtbl 4 HRESULT GetEnableURL(LPWSTR* ppwszURL, DWORD* pcchURL, MF_URL_TRUST_STATUS* pTrustStatus)

手動によるコンテンツ有効化アクションを実行するための URL を取得します。

ppwszURLLPWSTR*outURL を格納するバッファーへのポインターを受け取ります。呼び出し元は、CoTaskMemFree を呼び出してバッファーのメモリを解放する必要があります。
pcchURLDWORD*out終端の NULL 文字を含む、ppwszURL に返された文字数を受け取ります。
pTrustStatusMF_URL_TRUST_STATUS*inoutURL が信頼できるかどうかを示す MF_URL_TRUST_STATUS 列挙体のメンバーを受け取ります。

戻り値

このメソッドは HRESULT を返します。使用される値には、以下の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。
MF_E_NOT_AVAILABLE
利用可能な URL がありません。

解説(Remarks)

有効化アクションが URL への移動によって実行できる場合、このメソッドはその URL を返します。そのような URL が存在しない場合、メソッドは失敗コードを返します。

URL の目的は、IMFContentEnabler::GetEnableType を呼び出して取得されるコンテンツイネーブラーの種類によって異なります。

有効化の種類 URL の目的
個別化 (Individualization) 該当なし。
ライセンス取得 ライセンスを取得するための URL。IMFContentEnabler::GetEnableData を呼び出し、そのデータを HTTP POST 要求として URL に送信します。ライセンスが取得されたときに通知を受け取るには、IMFContentEnabler::MonitorEnable を呼び出します。
失効 (Revocation) ユーザーが更新されたコンポーネントをダウンロードしてインストールできる Web ページへの URL。
vtbl 5 HRESULT GetEnableData(BYTE** ppbData, DWORD* pcbData)

手動によるコンテンツ有効化アクションのためのデータを取得します。

ppbDataBYTE**outデータを格納するバッファーへのポインターを受け取ります。呼び出し元は、CoTaskMemFree を呼び出してバッファーを解放する必要があります。
pcbDataDWORD*outppbData バッファーのサイズを受け取ります。

戻り値

このメソッドは HRESULT を返します。使用される値には、以下の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。
MF_E_NOT_AVAILABLE
利用可能なデータがありません。

解説(Remarks)

データの目的は、IMFContentEnabler::GetEnableType を呼び出して取得されるコンテンツイネーブラーの種類によって異なります。

有効化の種類 データの目的
個別化 (Individualization) 該当なし。
ライセンス取得 HTTP POST データ。
失効 (Revocation) MFRR_COMPONENTS 構造体。
vtbl 6 HRESULT IsAutomaticSupported(BOOL* pfAutomatic)

コンテンツイネーブラーがそのすべてのアクションを自動的に実行できるかどうかを照会します。

pfAutomaticBOOL*outブール値を受け取ります。TRUE の場合、コンテンツイネーブラーは有効化アクションを自動的に実行できます。

戻り値

このメソッドは HRESULT を返します。使用される値には、以下の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。

解説(Remarks)

このメソッドが pfAutomatic パラメーターに TRUE を返す場合、IMFContentEnabler::AutomaticEnable メソッドを呼び出して有効化アクションを実行します。

このメソッドが pfAutomatic パラメーターに FALSE を返す場合、アプリケーションは手動での有効化を使用する必要があります。そのためには、IMFContentEnabler::GetEnableURL および IMFContentEnabler::GetEnableData を呼び出して、手動での有効化に必要な URL とデータを取得します。

vtbl 7 HRESULT AutomaticEnable()

ユーザーの操作なしでコンテンツ有効化アクションを実行します。

戻り値

このメソッドは HRESULT を返します。使用される値には、以下の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。

解説(Remarks)

このメソッドは非同期です。操作が完了すると、コンテンツイネーブラーは MEEnablerCompleted イベントを送信します。操作の進行中、コンテンツイネーブラーは MEEnablerProgress イベントを送信することがあります。

コンテンツイネーブラーがこのメソッドをサポートしているかどうかを確認するには、IMFContentEnabler::IsAutomaticSupported を呼び出します。

vtbl 8 HRESULT MonitorEnable()

有効化アクションが完了したときの通知を要求します。

戻り値

このメソッドは HRESULT を返します。使用される値には、以下の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。
S_FALSE
メソッドは成功し、アクションは不要でした。

解説(Remarks)

手動の有効化アクションを使用する場合は、操作の完了時に通知を受け取るためにこのメソッドを呼び出します。このメソッドが S_OK を返す場合、コンテンツイネーブラーは操作が完了したときに MEEnablerCompleted イベントを送信します。アプリケーションが操作を完了する前にキャンセルする場合は、IMFContentEnabler::Cancel を呼び出します。

IMFContentEnabler::AutomaticEnable を呼び出して自動の有効化を使用する場合、MonitorEnable を呼び出す必要はありません。

vtbl 9 HRESULT Cancel()

保留中のコンテンツ有効化アクションをキャンセルします。

戻り値

このメソッドは HRESULT を返します。使用される値には、以下の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。

解説(Remarks)

コンテンツイネーブラーは、状態コード E_CANCEL を伴う MEEnablerCompleted イベントを送信します。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IMFContentEnabler "{D3C4EF59-49CE-4381-9071-D5BCD044C770}"
#usecom global IMFContentEnabler IID_IMFContentEnabler "{}"
#comfunc global IMFContentEnabler_GetEnableType         3 var
#comfunc global IMFContentEnabler_GetEnableURL          4 var,var,var
#comfunc global IMFContentEnabler_GetEnableData         5 var,var
#comfunc global IMFContentEnabler_IsAutomaticSupported  6 var
#comfunc global IMFContentEnabler_AutomaticEnable       7
#comfunc global IMFContentEnabler_MonitorEnable         8
#comfunc global IMFContentEnabler_Cancel                9
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。