IMFMediaKeys
COM公式ドキュメント
デジタル著作権管理 (DRM) キーシステムを使用してメディアデータを復号するために使用されるメディアキーを表します。
メソッド 4
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
指定された初期化データとカスタムデータを使用して、メディアキーセッションオブジェクトを作成します。
| mimeType | LPWSTR | inoptional | コンテンツに使用されるメディアコンテナーの MIME タイプ。 |
| initData | BYTE* | inoptional | キーシステムの初期化データ。 |
| cb | DWORD | inoptional | initData のバイト数。 |
| customData | BYTE* | inoptional | キーシステムに送信されるカスタムデータ。 |
| cbCustomData | DWORD | in | cbCustomData のバイト数。 |
| notify | IMFMediaKeySessionNotify* | in | notify |
| ppSession | IMFMediaKeySession** | out | メディアキーセッション。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
IMFMediaKeys オブジェクトの作成時に使用されたキーシステム文字列を取得します。
| keySystem | LPWSTR* | out | キーシステムの文字列名。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
IMFMediaKeys::Shutdown (mfmediaengine.h) メソッドは、関連付けられた Content Decryption Module (CDM) をシャットダウンします。
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
Shutdown は、最終的な解放の前にアプリケーションによって呼び出す必要があります。この時点で、Content Decryption Module (CDM) への参照とその他のリソースが解放されます。ただし、関連するセッションは解放またはクローズされません。
Content Decryption Module (CDM) のサスペンド通知インターフェイスを取得します。
| notify | IMFCdmSuspendNotify** | out | Content Decryption Module (CDM) のサスペンド通知インターフェイス。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IMFMediaKeys "{5CB31C05-61FF-418F-AFDA-CAAF41421A38}" #usecom global IMFMediaKeys IID_IMFMediaKeys "{}" #comfunc global IMFMediaKeys_CreateSession 3 wstr,var,int,var,int,sptr,sptr #comfunc global IMFMediaKeys_get_KeySystem 4 var #comfunc global IMFMediaKeys_Shutdown 5 #comfunc global IMFMediaKeys_GetSuspendNotify 6 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IMFMediaKeys "{5CB31C05-61FF-418F-AFDA-CAAF41421A38}" #usecom global IMFMediaKeys IID_IMFMediaKeys "{}" #comfunc global IMFMediaKeys_CreateSession 3 wstr,sptr,int,sptr,int,sptr,sptr #comfunc global IMFMediaKeys_get_KeySystem 4 sptr #comfunc global IMFMediaKeys_Shutdown 5 #comfunc global IMFMediaKeys_GetSuspendNotify 6 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。