PFND3D11_1DDI_CREATECRYPTOSESSION コールバック関数 (d3d10umddi.h)
ディスプレイ ミニポート ドライバーに送信されるビデオ コンテンツを暗号化する暗号化セッションを作成します。
構文
PFND3D11_1DDI_CREATECRYPTOSESSION Pfnd3d111DdiCreatecryptosession;
HRESULT Pfnd3d111DdiCreatecryptosession(
D3D10DDI_HDEVICE hDevice,
const D3D11_1DDIARG_CREATECRYPTOSESSION *pCreateData,
D3D11_1DDI_HCRYPTOSESSION hCryptoSession,
D3D11_1DDI_HRTCRYPTOSESSION hRTCryptoSession
)
{...}
パラメーター
hDevice
ディスプレイ デバイスへのハンドル (グラフィックス コンテキスト)。
pCreateData
D3D11_1DDIARG_CREATECRYPTOSESSION 構造体へのポインター。 この構造体は、作成する暗号化セッションの属性を指定します。
hCryptoSession
暗号化セッションのドライバーのプライベート データへのハンドル。 詳細については、「解説」セクションを参照してください。
hRTCryptoSession
ドライバーが Direct3D ランタイムに呼び出すときに使用する暗号化セッションのハンドル。
戻り値
次のいずれかの値を返します。
リターン コード | 説明 |
---|---|
S_OK | 認証されたチャネルが正常に作成されました。 |
D3DDDIERR_DEVICEREMOVED | グラフィックス アダプターが削除されました。 |
D3DDDIERR_UNSUPPORTEDCRYPTO | デコード プロファイルでサポートされていない暗号化の種類が指定されました。 |
E_OUTOFMEMORY | 操作を完了するためにメモリを使用できませんでした。 |
備考
Direct3D ランタイムは、CreateCryptoSession 呼び出して、ランタイムがセッション キーを管理し、保護されたメモリに格納されているビデオ コンテンツに対して暗号化操作を実行するために使用する暗号化セッションを作成します。
ランタイムは、ドライバー の CalcPrivateCryptoSessionSize を呼び出して、ドライバーが暗号化セッションに必要とするプライベート データのサイズをバイト単位で決定した後、CreateCryptoSession を呼び出します。 ランタイムは、ドライバーのこのプライベート データのメモリを割り当てます。 ドライバーは、このメモリを使用して、暗号化セッションに関連するプライベート データを格納します。
ランタイムが CreateCryptoSession 呼び出すと、hCryptoSession パラメーター内のプライベート データ メモリにハンドルが渡されます。 このハンドルは、実際にはメモリへのポインターです。
ドライバーは、暗号化セッションの作成に使用されたディスプレイ デバイスへのハンドルを追跡する必要があります。 これらの呼び出しで指定されたディスプレイ デバイスが暗号化セッションの作成に使用されたディスプレイ デバイスと異なる場合、ドライバーは、この作成された暗号化セッションを使用するすべての呼び出し (NegotiateCryptoSessionKeyExchangeなど) を失敗させる必要があります。
D3D11_1DDIARG_CREATECRYPTOSESSION 構造体の DecodeProfile メンバーが NULL_GUIDに設定されている場合、暗号化セッションは DirectX ビデオ アクセラレーション (DXVA) デコードには使用されません。 DecodeProfile が NULL_GUIDに設定されていない場合、CryptoType メンバーがデコード プロファイルでサポートされていない暗号化の種類に設定されている場合、ドライバーは D3DDDIERR_UNSUPPORTEDCRYPTO で呼び出しを失敗させる必要があります。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 8 |
サポートされる最小サーバー | Windows Server 2012 |
ターゲット プラットフォーム の | デスクトップ |
ヘッダー | d3d10umddi.h (D3d10umddi.h を含む) |