IMFOutputPolicy
COM公式ドキュメント
入力信頼機関 (ITA) からの使用ポリシーをカプセル化します。
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
出力信頼機関 (OTA) が適用しなければならない出力保護システムの一覧を、各保護システムの構成データとともに取得します。
| dwAttributes | DWORD | in | このメソッドを呼び出す OTA が表す出力について記述します。この値は、次のフラグのうち 0 個以上のビットごとの OR です。 |
| guidOutputSubType | GUID | in | このメソッドを呼び出す OTA が表す、特定の出力コネクタのファミリを示します。指定可能な値には次のものがあります。 |
| rgGuidProtectionSchemasSupported | GUID* | in | このメソッドを呼び出す OTA がサポートする出力保護システムを指定する GUID 値の配列へのポインター。 |
| cProtectionSchemasSupported | DWORD | in | rgGuidProtectionSchemasSupported 配列の要素数。 |
| ppRequiredProtectionSchemas | IMFCollection** | out | コレクションオブジェクトの IMFCollection インターフェイスへのポインターを受け取ります。呼び出し元はこのインターフェイスを解放する必要があります。コレクション内の各オブジェクトは IMFOutputSchema ポインターです。各 IMFOutputSchema ポインターは、OTA が適用しなければならない出力保護システムを定義します。 |
戻り値
このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
ビデオ OTA は、Direct3D デバイスがフルスクリーンモードでない限り、MFCONNECTOR_UNKNOWN コネクタの種類を返します。(Direct3D のウィンドウモードは、一般に安全なビデオモードではありません。) この動作は、IEVRTrustedVideoPlugin インターフェイスを実装するカスタム EVR プレゼンターを実装することでオーバーライドできます。
この出力ポリシーオブジェクトを作成した入力信頼機関 (ITA) を識別する GUID を取得します。
| pguidOriginatorID | GUID* | out | 発信元 ITA を識別する GUID を受け取ります。 |
戻り値
このメソッドは HRESULT を返します。指定可能な値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
同一の ITA に由来するすべてのポリシーオブジェクトと出力スキーマは、(動的なポリシー変更を含めて) 同じ発信元識別子を返す必要があります。この値により、OTA は異なる ITA から発信されたポリシーを区別でき、動的ポリシーを正しく更新できます。
このポリシーに対して保護された環境が適用しなければならない、グローバル失効リスト (GRL) の最小バージョンを取得します。
| pdwMinimumGRLVersion | DWORD* | out | GRL の最小バージョンを受け取ります。 |
戻り値
このメソッドは HRESULT を返します。指定可能な値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IMFOutputPolicy "{7F00F10A-DAED-41AF-AB26-5FDFA4DFBA3C}" #usecom global IMFOutputPolicy IID_IMFOutputPolicy "{}" #comfunc global IMFOutputPolicy_GenerateRequiredSchemas 33 int,int,var,int,sptr #comfunc global IMFOutputPolicy_GetOriginatorID 34 var #comfunc global IMFOutputPolicy_GetMinimumGRLVersion 35 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IMFOutputPolicy "{7F00F10A-DAED-41AF-AB26-5FDFA4DFBA3C}" #usecom global IMFOutputPolicy IID_IMFOutputPolicy "{}" #comfunc global IMFOutputPolicy_GenerateRequiredSchemas 33 int,int,sptr,int,sptr #comfunc global IMFOutputPolicy_GetOriginatorID 34 sptr #comfunc global IMFOutputPolicy_GetMinimumGRLVersion 35 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。