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

IMFContentDecryptionModuleSession

COM
IID4e233efd-1dd2-49e8-b577-d63eee4c0d33継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

暗号化メディア拡張機能をサポートするための Content Decryption Module (CDM) へのアクセスを提供します。

解説(Remarks)

IMFContentDecryptionModuleSession は、Encrypted Media Extension 仕様の MediaKeySession に基づいています。

メソッド 8

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

vtbl 3 HRESULT GetSessionId(LPWSTR* sessionId)

Content Decryption Module (CDM) によって生成される一意の文字列識別子を取得します。これはアプリケーションがセッションオブジェクトを識別するために使用できます。

sessionIdLPWSTR*outセッション ID を表す LPWSTR へのポインターを受け取ります。

戻り値

成功した場合は S_OK を返します。

解説(Remarks)

GetSessionId は、Encrypted Media Extension 仕様の MediaKeySession.sessionId に基づいています。

vtbl 4 HRESULT GetExpiration(DOUBLE* expiration)

CDM セッション内のすべてのキーの有効期限を取得します。

expirationDOUBLE*outセッション ID を表す LPWSTR へのポインターを受け取ります。該当する時刻が存在しない場合、またはライセンスが明示的に無期限である場合は NaN を受け取ります。

戻り値

S_OK を返します。

解説(Remarks)

GetExpiration は、Encrypted Media Extension 仕様の MediaKeySession.expiration に基づいています。有効期限の時刻および時刻範囲の値は、ECMA Language Specification の Time Values and Time Range に基づいています。

vtbl 5 HRESULT GetKeyStatuses(MFMediaKeyStatus** keyStatuses, DWORD* numKeyStatuses)

Content Decryption Module (CDM) セッションが認識しているキー ID と、関連付けられたキーの現在の状態を表す構造体の配列への参照を取得します。

keyStatusesMFMediaKeyStatus**outCDM セッションが認識しているキーの ID と状態を含む MFMediaKeyStatus 構造体の配列へのポインターを受け取ります。
numKeyStatusesDWORD*outkeyStatuses 配列に含まれる構造体の数を受け取ります。

戻り値

S_OK を返します。エラーが発生した場合、返されるキー状態リストは空になります。

解説(Remarks)

GetKeyStatuses は、Encrypted Media Extension 仕様の MediaKeySession.keyStatuses に基づいています。

vtbl 6 HRESULT Load(LPWSTR sessionId, BOOL* loaded)

IMFContentDecryptionModuleSession::Load 関数は、指定されたセッションのデータを IMFContentDecryptionModuleSession オブジェクトに読み込みます。

sessionIdLPWSTRin読み込むセッションの一意の識別子。
loadedBOOL*outセッションデータが正常に読み込まれたかどうかを示す BOOL へのポインターを受け取ります。

戻り値

S_OK を返します。

解説(Remarks)

Load は、Encrypted Media Extension 仕様の MediaKeySession.Load に基づいています。

vtbl 7 HRESULT GenerateRequest(LPWSTR initDataType, BYTE* initData, DWORD initDataSize)

指定されたデータに基づいてライセンス要求を生成します。

initDataTypeLPWSTRininitData パラメーターで指定されたデータの種類を表す LPCWSTR。文字列の形式は、Encrypted Media Extension 仕様の Initialization Data Type で規定されています。
initDataBYTE*in初期化データを含む BYTE 配列。データ形式は、Encrypted Media Extension 仕様の Initialization Data で規定されています。
initDataSizeDWORDininitData パラメーターで指定された BYTE 配列のサイズ。

戻り値

成功した場合は S_OK を返します。

解説(Remarks)

GenerateRequest は、Encrypted Media Extension 仕様の MediaKeySession.generateRequest に基づいています。

vtbl 8 HRESULT Update(BYTE* response, DWORD responseSize)

ライセンスを含むメッセージを Content Decryption Module (CDM) セッションに提供します。

responseBYTE*inメッセージを含む BYTE 配列。
responseSizeDWORDinresponse パラメーターで指定された BYTE 配列のサイズ。

戻り値

成功した場合は S_OK を返します。

解説(Remarks)

Update は、Encrypted Media Extension 仕様の MediaKeySession.update に基づいています。

vtbl 9 HRESULT Close()

アプリケーションがセッションを必要としなくなったことを示します。Content Decryption Module (CDM) は、セッションに関連付けられたリソースを解放してセッションを閉じる必要があります。

戻り値

成功した場合は S_OK を返します。

解説(Remarks)

Close は、Encrypted Media Extension 仕様の MediaKeySession.close に基づいています。

vtbl 10 HRESULT Remove()

セッションに関連付けられたすべてのライセンスとキーを削除します。

戻り値

成功した場合は S_OK を返します。

解説(Remarks)

永続的なセッションの種類の場合、Update によって解放メッセージの確認応答が処理されると、各セッションの種類ごとに定義されているとおりに、その他のセッションデータもクリアされます。

Remove は、Encrypted Media Extension 仕様の MediaKeySession.remove に基づいています。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IMFContentDecryptionModuleSession "{4E233EFD-1DD2-49E8-B577-D63EEE4C0D33}"
#usecom global IMFContentDecryptionModuleSession IID_IMFContentDecryptionModuleSession "{}"
#comfunc global IMFContentDecryptionModuleSession_GetSessionId     3 var
#comfunc global IMFContentDecryptionModuleSession_GetExpiration    4 var
#comfunc global IMFContentDecryptionModuleSession_GetKeyStatuses   5 var,var
#comfunc global IMFContentDecryptionModuleSession_Load             6 wstr,var
#comfunc global IMFContentDecryptionModuleSession_GenerateRequest  7 wstr,var,int
#comfunc global IMFContentDecryptionModuleSession_Update           8 var,int
#comfunc global IMFContentDecryptionModuleSession_Close            9
#comfunc global IMFContentDecryptionModuleSession_Remove           10
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。