IMFContentEnabler
COM公式ドキュメント
ユーザーがメディアコンテンツにアクセスするために実行しなければならない手順の 1 つを実装します。
メソッド 7
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
このコンテンツイネーブラーが実行する操作の種類を取得します。
| pType | GUID* | out | 操作の種類を識別する GUID を受け取ります。アプリケーションは、既知の操作種類に合わせてユーザーインターフェイス (UI) 文字列を調整できます。「解説」を参照してください。 |
戻り値
このメソッドは HRESULT を返します。使用される値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(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 以降のライセンス取得。 |
手動によるコンテンツ有効化アクションを実行するための URL を取得します。
| ppwszURL | LPWSTR* | out | URL を格納するバッファーへのポインターを受け取ります。呼び出し元は、CoTaskMemFree を呼び出してバッファーのメモリを解放する必要があります。 |
| pcchURL | DWORD* | out | 終端の NULL 文字を含む、ppwszURL に返された文字数を受け取ります。 |
| pTrustStatus | MF_URL_TRUST_STATUS* | inout | URL が信頼できるかどうかを示す MF_URL_TRUST_STATUS 列挙体のメンバーを受け取ります。 |
戻り値
このメソッドは HRESULT を返します。使用される値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 | |
| 利用可能な URL がありません。 |
解説(Remarks)
有効化アクションが URL への移動によって実行できる場合、このメソッドはその URL を返します。そのような URL が存在しない場合、メソッドは失敗コードを返します。
URL の目的は、IMFContentEnabler::GetEnableType を呼び出して取得されるコンテンツイネーブラーの種類によって異なります。
| 有効化の種類 | URL の目的 |
|---|---|
| 個別化 (Individualization) | 該当なし。 |
| ライセンス取得 | ライセンスを取得するための URL。IMFContentEnabler::GetEnableData を呼び出し、そのデータを HTTP POST 要求として URL に送信します。ライセンスが取得されたときに通知を受け取るには、IMFContentEnabler::MonitorEnable を呼び出します。 |
| 失効 (Revocation) | ユーザーが更新されたコンポーネントをダウンロードしてインストールできる Web ページへの URL。 |
手動によるコンテンツ有効化アクションのためのデータを取得します。
| ppbData | BYTE** | out | データを格納するバッファーへのポインターを受け取ります。呼び出し元は、CoTaskMemFree を呼び出してバッファーを解放する必要があります。 |
| pcbData | DWORD* | out | ppbData バッファーのサイズを受け取ります。 |
戻り値
このメソッドは HRESULT を返します。使用される値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 | |
| 利用可能なデータがありません。 |
解説(Remarks)
データの目的は、IMFContentEnabler::GetEnableType を呼び出して取得されるコンテンツイネーブラーの種類によって異なります。
| 有効化の種類 | データの目的 |
|---|---|
| 個別化 (Individualization) | 該当なし。 |
| ライセンス取得 | HTTP POST データ。 |
| 失効 (Revocation) | MFRR_COMPONENTS 構造体。 |
コンテンツイネーブラーがそのすべてのアクションを自動的に実行できるかどうかを照会します。
| pfAutomatic | BOOL* | out | ブール値を受け取ります。TRUE の場合、コンテンツイネーブラーは有効化アクションを自動的に実行できます。 |
戻り値
このメソッドは HRESULT を返します。使用される値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(Remarks)
このメソッドが pfAutomatic パラメーターに TRUE を返す場合、IMFContentEnabler::AutomaticEnable メソッドを呼び出して有効化アクションを実行します。
このメソッドが pfAutomatic パラメーターに FALSE を返す場合、アプリケーションは手動での有効化を使用する必要があります。そのためには、IMFContentEnabler::GetEnableURL および IMFContentEnabler::GetEnableData を呼び出して、手動での有効化に必要な URL とデータを取得します。
ユーザーの操作なしでコンテンツ有効化アクションを実行します。
戻り値
このメソッドは HRESULT を返します。使用される値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(Remarks)
このメソッドは非同期です。操作が完了すると、コンテンツイネーブラーは MEEnablerCompleted イベントを送信します。操作の進行中、コンテンツイネーブラーは MEEnablerProgress イベントを送信することがあります。
コンテンツイネーブラーがこのメソッドをサポートしているかどうかを確認するには、IMFContentEnabler::IsAutomaticSupported を呼び出します。
有効化アクションが完了したときの通知を要求します。
戻り値
このメソッドは HRESULT を返します。使用される値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 | |
| メソッドは成功し、アクションは不要でした。 |
解説(Remarks)
手動の有効化アクションを使用する場合は、操作の完了時に通知を受け取るためにこのメソッドを呼び出します。このメソッドが S_OK を返す場合、コンテンツイネーブラーは操作が完了したときに MEEnablerCompleted イベントを送信します。アプリケーションが操作を完了する前にキャンセルする場合は、IMFContentEnabler::Cancel を呼び出します。
IMFContentEnabler::AutomaticEnable を呼び出して自動の有効化を使用する場合、MonitorEnable を呼び出す必要はありません。
保留中のコンテンツ有効化アクションをキャンセルします。
戻り値
このメソッドは HRESULT を返します。使用される値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(Remarks)
コンテンツイネーブラーは、状態コード E_CANCEL を伴う MEEnablerCompleted イベントを送信します。
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 方式にも切替可。#define global IID_IMFContentEnabler "{D3C4EF59-49CE-4381-9071-D5BCD044C770}" #usecom global IMFContentEnabler IID_IMFContentEnabler "{}" #comfunc global IMFContentEnabler_GetEnableType 3 sptr #comfunc global IMFContentEnabler_GetEnableURL 4 sptr,sptr,sptr #comfunc global IMFContentEnabler_GetEnableData 5 sptr,sptr #comfunc global IMFContentEnabler_IsAutomaticSupported 6 sptr #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が無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。