IMFTrustedOutput
COM公式ドキュメント
出力トラスト機関 (OTA) を提供するコンポーネントによって実装されます。
解説(Remarks)
MFT が IMFTrustedOutput をサポートする場合、そのインターフェイスを QueryInterface を通じて公開する必要があります。このインターフェイスは MFT のすべての入力ストリームに適用されます。(ストリームごとに個別の IMFTrustedOutput ポインターを返す仕組みはありません。) MFT はその出力ポリシーをすべての入力ストリームに適用する必要があります。MFT が異なるストリームを別々のコネクターに送信する場合は、すべてのコネクター属性を報告する必要があります。
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
このトラステッド出力が提供する出力トラスト機関 (OTA) の数を取得します。各 OTA は 1 つのアクションを報告します。
| pcOutputTrustAuthorities | DWORD* | out | OTA の数を受け取ります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
インデックスで指定した出力トラスト機関 (OTA) を取得します。
| dwIndex | DWORD | in | 取得する OTA の 0 から始まるインデックス。このオブジェクトが提供する OTA の数を取得するには、IMFTrustedOutput::GetOutputTrustAuthorityCount を呼び出します。 |
| ppauthority | IMFOutputTrustAuthority** | out | OTA の IMFOutputTrustAuthority インターフェイスへのポインターを受け取ります。呼び出し元はこのインターフェイスを解放する必要があります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
この出力がポリシー シンクであるかどうか、つまり入力トラスト機関 (ITA) が要求する権利と制限を処理するかどうかを照会します。
| pfIsFinal | BOOL* | out | ブール値を受け取ります。TRUE の場合、このオブジェクトはポリシー シンクです。FALSE の場合、ポリシーはさらに下流で適用する必要があります。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示す値が含まれますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
トラステッド出力は、受け取ったメディア コンテンツを他のどこにも渡さない場合、あるいは他の場所に渡す場合でも暗号化などの何らかの独自の方法でコンテンツを保護するか、保護が不要となる程度までコンテンツの価値を十分に低下させる場合に、一般的にポリシー シンクとみなされます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IMFTrustedOutput "{D19F8E95-B126-4446-890C-5DCB7AD71453}" #usecom global IMFTrustedOutput IID_IMFTrustedOutput "{}" #comfunc global IMFTrustedOutput_GetOutputTrustAuthorityCount 3 var #comfunc global IMFTrustedOutput_GetOutputTrustAuthorityByIndex 4 int,sptr #comfunc global IMFTrustedOutput_IsFinal 5 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IMFTrustedOutput "{D19F8E95-B126-4446-890C-5DCB7AD71453}" #usecom global IMFTrustedOutput IID_IMFTrustedOutput "{}" #comfunc global IMFTrustedOutput_GetOutputTrustAuthorityCount 3 sptr #comfunc global IMFTrustedOutput_GetOutputTrustAuthorityByIndex 4 int,sptr #comfunc global IMFTrustedOutput_IsFinal 5 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。