IMFContentDecryptionModuleSessionCallbacks
COM公式ドキュメント
IMFContentDecryptionModuleSession からのキー状態変更の更新を受け取るためのコールバック機構を提供します。
解説(Remarks)
IMFContentDecryptionModuleSessionCallbacks は、Encrypted Media Extension 仕様の keystatuseschange イベントに基づいています。
メソッド 2
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
Content Decryption Module (CDM) がセッション向けのメッセージを生成したときに呼び出されます。
| messageType | MF_MEDIAKEYSESSION_MESSAGETYPE | in | メッセージの種類を指定する MF_MEDIAKEYSESSION_MESSAGETYPE 列挙体の値。 |
| message | BYTE* | in | メッセージ内容を格納する BYTE 配列へのポインター。メッセージは Key System 固有です。 |
| messageSize | DWORD | in | message パラメーターに指定された配列のサイズ。 |
| destinationURL | LPWSTR | in | 宛先 URL を格納する省略可能なパラメーター。 |
戻り値
HRESULT を返します。
解説(Remarks)
KeyMessage は、Encrypted Media Extension 仕様の MediaKeyMessageEvent に基づいています。
IMFContentDecryptionModuleSessionCallbacks::KeyStatusChanged 関数は、Content Decryption Module (CDM) セッション内のキーまたはそれらの状態に変更があったときに呼び出されます。
戻り値
S_OK を返します。
解説(Remarks)
CDM セッションのキーの現在の状態を取得するには、IMFContentDecryptionModuleSession::GetKeyStatuses を呼び出します。
KeyStatusChanged は、Encrypted Media Extension 仕様の keystatuseschange に基づいています。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IMFContentDecryptionModuleSessionCallbacks "{3F96EE40-AD81-4096-8470-59A4B770F89A}" #usecom global IMFContentDecryptionModuleSessionCallbacks IID_IMFContentDecryptionModuleSessionCallbacks "{}" #comfunc global IMFContentDecryptionModuleSessionCallbacks_KeyMessage 3 int,var,int,wstr #comfunc global IMFContentDecryptionModuleSessionCallbacks_KeyStatusChanged 4 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IMFContentDecryptionModuleSessionCallbacks "{3F96EE40-AD81-4096-8470-59A4B770F89A}" #usecom global IMFContentDecryptionModuleSessionCallbacks IID_IMFContentDecryptionModuleSessionCallbacks "{}" #comfunc global IMFContentDecryptionModuleSessionCallbacks_KeyMessage 3 int,sptr,int,wstr #comfunc global IMFContentDecryptionModuleSessionCallbacks_KeyStatusChanged 4 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。