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

IMFInputTrustAuthority

COM
IIDd19f8e98-b126-4446-890c-5dcb7ad71453継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

保護されたメディアパス (PMP) 内の他のコンポーネントが、入力信頼機関 (ITA) によって提供される入力保護システムを使用できるようにします。

メソッド 6

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

vtbl 3 HRESULT GetDecrypter(GUID* riid, void** ppv)

復号器 (decrypter) トランスフォームを取得します。

riidGUID*in要求するインターフェイスのインターフェイス識別子 (IID)。現在、この値は IID_IMFTransform でなければならず、IMFTransform インターフェイスを要求します。
ppvvoid**outインターフェイスへのポインターを受け取ります。呼び出し元はインターフェイスを解放する必要があります。

戻り値

このメソッドは HRESULT を返します。使用され得る値には、次の表に示すものが含まれますが、これらに限定されません。

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_NOINTERFACE
復号器は要求されたインターフェイスをサポートしていません。
MF_E_NOT_PROTECTED
この入力信頼機関 (ITA) は復号器を提供しません。

解説(Remarks)

復号器は無効化された状態で作成し、IMFTransform::ProcessOutput の呼び出しが自動的に失敗するようにする必要があります。入力信頼機関 (ITA) が保護されたメディアパス (PMP) 内で実行されていることを検証した後、ITA は復号器を有効化する必要があります。

ITA は復号器を提供する必要はありません。ソースコンテンツが暗号化されていない場合、このメソッドは MF_E_NOT_PROTECTED を返す必要があります。その場合、PMP はそのストリームに対して復号器を使用せずに処理を続行します。

ITA は、GetDecrypter の呼び出しごとに復号器の新しいインスタンスを作成する必要があります。同一の復号器への複数の参照を返してはいけません。メディアセッションがそれらをトポロジの 2 つの異なるブランチに配置する可能性があるため、これらは別々のインスタンスでなければなりません。

vtbl 4 HRESULT RequestAccess(MFPOLICYMANAGER_ACTION Action, IMFActivate** ppContentEnablerActivate)

ストリームに対して指定されたアクションを実行する許可を要求します。

ActionMFPOLICYMANAGER_ACTIONin要求するアクション。MFPOLICYMANAGER_ACTION 列挙体のメンバーとして指定します。
ppContentEnablerActivateIMFActivate**outNULL、または IMFActivate インターフェイスへのポインターを受け取ります。IMFActivate インターフェイスは、コンテンツイネーブラーオブジェクトを作成するために使用されます。呼び出し元はインターフェイスを解放する必要があります。詳細については「解説」を参照してください。

戻り値

このメソッドは HRESULT を返します。使用され得る値には、次の表に示すものが含まれますが、これらに限定されません。

戻り値のコード 説明
S_OK
ユーザーはこのアクションを実行する許可を持っています。
NS_E_DRM_NEEDS_INDIVIDUALIZATION
ユーザーはアプリケーションの個別化 (individualization) を行う必要があります。
NS_E_LICENSE_REQUIRED
ユーザーはライセンスを取得する必要があります。

解説(Remarks)

このメソッドは、ユーザーがストリームに対して指定されたアクションを実行する許可を持っているかどうかを検証します。ITA は、ライセンスの確認など、ユーザーがアクションを実行する権利を検証するために必要な処理を行います。

ユーザーの権利を検証するために、ITA はユーザーとの対話やユーザーの同意を必要とする追加の手順を実行しなければならない場合があります。たとえば、新しいライセンスの取得や DRM コンポーネントの個別化が必要になることがあります。その場合、ITA はコンテンツイネーブラーのアクティベーションオブジェクトを作成し、そのアクティベーションオブジェクトの IMFActivate インターフェイスを ppContentEnablerActivate パラメーターで返します。アクティベーションオブジェクトは、IMFContentEnabler インターフェイスを公開するコンテンツイネーブラーの作成を担当します。コンテンツイネーブラーは次のように使用されます。

  1. メディアセッションは IMFActivate ポインターをアプリケーションに返します。
  2. アプリケーションは IMFActivate::ActivateObject を呼び出してコンテンツイネーブラーをアクティブ化します。
  3. アプリケーションは IMFContentEnabler のメソッドを呼び出して、個別化やライセンスの取得など必要なアクションを実行します。コンテンツイネーブラーオブジェクトは、IMFContentEnabler インターフェイスを通じてこの機能をカプセル化する必要があります。
  4. メディアセッションは再び RequestAccess を呼び出します。
戻り値は、ユーザーがアクションを実行する許可を持っているかどうかを示します。 このメソッドが S_OK を返さない限り、メディアセッションはアクションを許可しません。ただし、S_OK が返されても、このメソッドの呼び出し後に他の何らかの失敗が発生する可能性があるため、アクションが実行されることが保証されるわけではありません。アクションが確実に実行されようとしているとき、メディアセッションは IMFInputTrustAuthority::BindAccess を呼び出します。

ストリームは複数の出力先へ送られる可能性があるため、このメソッドは出力先ごとに 1 回ずつ、異なるアクションで複数回呼び出されることがあります。

vtbl 5 HRESULT GetPolicy(MFPOLICYMANAGER_ACTION Action, IMFOutputPolicy** ppPolicy)

このストリームで許可される出力保護システムと、各保護システムの構成データを定義するポリシーを取得します。

ActionMFPOLICYMANAGER_ACTIONinこのストリームに対して実行されるアクション。MFPOLICYMANAGER_ACTION 列挙体のメンバーとして指定します。
ppPolicyIMFOutputPolicy**outIMFOutputPolicy インターフェイスへのポインターを受け取ります。呼び出し元はインターフェイスを解放する必要があります。

戻り値

このメソッドは HRESULT を返します。使用され得る値には、次の表に示すものが含まれますが、これらに限定されません。

戻り値のコード 説明
S_OK
メソッドは成功しました。
vtbl 6 HRESULT BindAccess(MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS* pParam)

要求されたアクションが実行されようとしていることを入力信頼機関 (ITA) に通知します。

pParamMFINPUTTRUSTAUTHORITY_ACCESS_PARAMS*inBindAccess アクションのパラメーターを含む MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS 構造体へのポインター。

戻り値

このメソッドは HRESULT を返します。使用され得る値には、次の表に示すものが含まれますが、これらに限定されません。

戻り値のコード 説明
S_OK
メソッドは成功しました。

解説(Remarks)

このメソッドを呼び出す前に、メディアセッションは IMFInputTrustAuthority::RequestAccess を呼び出してアクションを要求します。BindAccess メソッドは、アクションが確実に実行されようとしていることを ITA に通知し、ITA が必要に応じて内部状態を更新できるようにします。このメソッドが失敗コードを返した場合、メディアセッションはアクションをキャンセルします。

vtbl 7 HRESULT UpdateAccess(MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS* pParam)

指定されたアクションを実行する出力信頼機関 (OTA) の数が変化したときに、入力信頼機関 (ITA) に通知します。

pParamMFINPUTTRUSTAUTHORITY_ACCESS_PARAMS*inUpdateAccess アクションのパラメーターを含む MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS 構造体へのポインター。

戻り値

このメソッドは HRESULT を返します。使用され得る値には、次の表に示すものが含まれますが、これらに限定されません。

戻り値のコード 説明
S_OK
メソッドは成功しました。

解説(Remarks)

ITA は必要に応じて内部状態を更新できます。このメソッドが失敗コードを返した場合、メディアセッションはアクションをキャンセルします。

vtbl 8 HRESULT Reset()

入力信頼機関 (ITA) を初期状態にリセットします。

戻り値

このメソッドは HRESULT を返します。使用され得る値には、次の表に示すものが含まれますが、これらに限定されません。

戻り値のコード 説明
S_OK
メソッドは成功しました。

解説(Remarks)

このメソッドが呼び出されたとき、ITA は IMFInputTrustAuthority::GetDecrypter メソッドで返した復号器を無効化する必要があります。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IMFInputTrustAuthority "{D19F8E98-B126-4446-890C-5DCB7AD71453}"
#usecom global IMFInputTrustAuthority IID_IMFInputTrustAuthority "{}"
#comfunc global IMFInputTrustAuthority_GetDecrypter   3 var,sptr
#comfunc global IMFInputTrustAuthority_RequestAccess  4 int,sptr
#comfunc global IMFInputTrustAuthority_GetPolicy      5 int,sptr
#comfunc global IMFInputTrustAuthority_BindAccess     6 var
#comfunc global IMFInputTrustAuthority_UpdateAccess   7 var
#comfunc global IMFInputTrustAuthority_Reset          8
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。