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

IMFSampleProtection

COM
IID8e36395f-c7b9-43c4-a54d-512b4af63c95継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

保護されたメディアパス (PMP) 内でメディアデータの暗号化を提供します。

メソッド 5

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

vtbl 3 HRESULT GetInputProtectionVersion(DWORD* pdwVersion)

コンポーネントが入力側で実装しているサンプル保護のバージョンを取得します。

pdwVersionDWORD*outSAMPLE_PROTECTION_VERSION 列挙体のメンバーを受け取ります。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
vtbl 4 HRESULT GetOutputProtectionVersion(DWORD* pdwVersion)

コンポーネントが出力側で実装しているサンプル保護のバージョンを取得します。

pdwVersionDWORD*outSAMPLE_PROTECTION_VERSION 列挙体のメンバーを受け取ります。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
vtbl 5 HRESULT GetProtectionCertificate(DWORD dwVersion, BYTE** ppCert, DWORD* pcbCert)

サンプル保護証明書を取得します。

dwVersionDWORDin証明書を受け取るサンプル保護方式のバージョン番号を指定します。バージョン番号は SAMPLE_PROTECTION_VERSION 列挙体の値として指定します。
ppCertBYTE**out証明書を格納したバッファーへのポインターを受け取ります。呼び出し元は CoTaskMemFree を呼び出してバッファーのメモリを解放する必要があります。
pcbCertDWORD*outppCert バッファーのサイズをバイト単位で受け取ります。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
E_NOTIMPL
実装されていません。

解説(Remarks)

サンプル保護の特定のバージョン番号では、下流のコンポーネントが証明書を提供する必要があります。これらのバージョン番号をサポートしないコンポーネントは E_NOTIMPL を返すことができます。

vtbl 6 HRESULT InitOutputProtection(DWORD dwVersion, DWORD dwOutputId, BYTE* pbCert, DWORD cbCert, BYTE** ppbSeed, DWORD* pcbSeed)

上流のコンポーネントからサンプル保護の初期化情報を取得します。

dwVersionDWORDinサンプル保護方式のバージョン番号を指定します。バージョン番号は SAMPLE_PROTECTION_VERSION 列挙体の値として指定します。
dwOutputIdDWORDin出力ストリームの識別子です。この識別子は、IMFTransform インターフェースが返す出力ストリーム識別子に対応します。
pbCertBYTE*in下流のコンポーネントが提供する証明書へのポインターです。
cbCertDWORDin証明書のサイズ (バイト単位) です。
ppbSeedBYTE**out下流のコンポーネント向けの初期化情報を格納したバッファーへのポインターを受け取ります。呼び出し元は CoTaskMemFree を呼び出してバッファーのメモリを解放する必要があります。
pcbSeedDWORD*outppbSeed バッファーのサイズをバイト単位で受け取ります。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
E_NOTIMPL
実装されていません。

解説(Remarks)

このメソッドは上流のコンポーネントが実装する必要があります。要求されたサンプル保護バージョンをコンポーネントがサポートしていない場合、このメソッドは失敗します。下流のコンポーネントはこのメソッドを実装せず、E_NOTIMPL を返す必要があります。

vtbl 7 HRESULT InitInputProtection(DWORD dwVersion, DWORD dwInputId, BYTE* pbSeed, DWORD cbSeed)

下流のコンポーネントでサンプル保護を初期化します。

dwVersionDWORDinサンプル保護方式のバージョン番号を指定します。バージョン番号は SAMPLE_PROTECTION_VERSION 列挙体の値として指定します。
dwInputIdDWORDin入力ストリームの識別子です。この識別子は、IMFTransform インターフェースが返す出力ストリーム識別子に対応します。
pbSeedBYTE*in上流のコンポーネントが提供する初期化データを格納したバッファーへのポインターです。このバッファーを取得するには、IMFSampleProtection::InitOutputProtection を呼び出します。
cbSeedDWORDinpbSeed バッファーのサイズ (バイト単位) です。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IMFSampleProtection "{8E36395F-C7B9-43C4-A54D-512B4AF63C95}"
#usecom global IMFSampleProtection IID_IMFSampleProtection "{}"
#comfunc global IMFSampleProtection_GetInputProtectionVersion   3 var
#comfunc global IMFSampleProtection_GetOutputProtectionVersion  4 var
#comfunc global IMFSampleProtection_GetProtectionCertificate    5 int,var,var
#comfunc global IMFSampleProtection_InitOutputProtection        6 int,int,var,int,var,var
#comfunc global IMFSampleProtection_InitInputProtection         7 int,int,var,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。