IMFContentDecryptionModuleFactory
COM公式ドキュメント
IMFContentDecryptionModuleAccess オブジェクトを作成するためのファクトリインターフェイスです。
メソッド 2
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
指定した Key System、および必要に応じてコンテンツタイプがサポートされているかどうかを照会します。
| keySystem | LPWSTR | in | サポートの有無を照会する Key System を指定する LPCWSTR です。 |
| contentType | LPWSTR | in | 省略可能。サポートの有無を照会するコンテンツタイプを指定する LPCWSTR です。このパラメーターの詳細については 解説 セクションを参照してください。 |
戻り値
指定した Key System とコンテンツタイプがサポートされている場合は true、それ以外の場合は false を返します。
解説(Remarks)
contentType パラメーターは PlayReady では無視されるため、そのコンテンツ保護システムでは戻り値は指定した Key System がサポートされているかどうかのみを示します。指定した Key System がサポートされている場合、contentType にどのような値が指定されていても、このメソッドは true を返します。contentType パラメーターは、他のコンテンツ保護システムでも無視される場合があります。
Key System の詳細については、Encrypted Media Extension 仕様の Key System を参照してください。
IMFContentDecryptionModuleAccess インターフェイスのインスタンスを作成します。
| keySystem | LPWSTR | in | インターフェイスを作成する対象の Key System を識別する LPWSTR です。 |
| configurations | IPropertyStore** | in | CDM の構成オプションを含む IPropertyStore オブジェクトです。 |
| numConfigurations | DWORD | in | configurations パラメーター内のプロパティの数を指定する DWORD です。 |
| contentDecryptionModuleAccess | IMFContentDecryptionModuleAccess** | out | 作成された IMFContentDecryptionModuleAccess オブジェクトを受け取ります。 |
戻り値
成功した場合は S_OK を返します。
解説(Remarks)
IMFContentDecryptionModuleAccess は、Encrypted Media Extension 仕様の MediaKeySystemAccess.getConfiguration に基づいています。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IMFContentDecryptionModuleFactory "{7D5ABF16-4CBB-4E08-B977-9BA59049943E}"
#usecom global IMFContentDecryptionModuleFactory IID_IMFContentDecryptionModuleFactory "{}"
#comfunc global IMFContentDecryptionModuleFactory_IsTypeSupported 3 wstr,wstr
#comfunc global IMFContentDecryptionModuleFactory_CreateContentDecryptionModuleAccess 4 wstr,sptr,int,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。