DXGKDDI_OPM_GET_COPP_COMPATIBLE_INFORMATION コールバック関数 (dispmprt.h)

DXGKDDI_OPM_GET_COPP_COMPATIBLE_INFORMATION関数は、指定された保護された出力オブジェクトから認定出力保護プロトコル (COPP) と互換性のある情報を取得します。

構文

DXGKDDI_OPM_GET_COPP_COMPATIBLE_INFORMATION DxgkddiOpmGetCoppCompatibleInformation;

NTSTATUS DxgkddiOpmGetCoppCompatibleInformation(
  [in]  PVOID MiniportDeviceContext,
  [in]  HANDLE ProtectedOutputHandle,
  [in]  const DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS *Parameters,
  [out] PDXGKMDT_OPM_REQUESTED_INFORMATION RequestedInformation
)
{...}

パラメーター

[in] MiniportDeviceContext

ディスプレイ アダプターに関連付けられているコンテキスト ブロックへのハンドル。 以前は、ディスプレイ ミニポート ドライバーの DxgkDdiAddDevice 関数は、DirectX グラフィックス カーネル サブシステムにこのハンドルを提供しました。

[in] ProtectedOutputHandle

保護された出力オブジェクトへのハンドル。 DxgkDdiOPMCreateProtectedOutput 関数は、保護された出力オブジェクトを作成し、オブジェクトへのハンドルを返します。 このハンドルに対応する保護された出力オブジェクトには、COPP セマンティクスが必要です。

[in] Parameters

ProtectedOutputHandle パラメーターでハンドルが指定されている保護された出力オブジェクトから取得する COPP 互換情報の種類を含むDXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS構造体へのポインター。 DxgkDdiOPMGetCOPPCompatibleInformation は、保護された出力オブジェクトを間接的に作成したアプリケーションからの有効な要求がパラメーターに含まれているかどうかを判断します。 詳細については、「解説」を参照してください。

[out] RequestedInformation

DxgkDdiOPMGetCOPPCompatibleInformation が正常に返された場合に、保護された出力オブジェクトの COPP 互換情報を受け取るDXGKMDT_OPM_REQUESTED_INFORMATION構造体へのポインター。

DxgkDdiOPMGetCOPPCompatibleInformation が失敗した場合、RequestedInformation が指す値は変更されません。

戻り値

DxgkDdiOPMGetCOPPCompatibleInformation は、STATUS_SUCCESSまたは Ntstatus.h エラー コードを返します。

注釈

DirectX グラフィックス カーネル サブシステムは、出力に COPP セマンティクスがある場合にのみ 、DxgkDdiOPMGetCOPPCompatibleInformation を呼び出す必要があります。

DirectX グラフィックス カーネル サブシステムが、DxgkDdiOPMGetCOPPCompatibleInformation の呼び出しで ProtectedOutputHandle パラメーターに保護された出力ハンドルを渡す前に、DirectX グラフィックス カーネル サブシステムは常に、保護された出力ハンドルを DxgkDdiOPMSetSigningKeyAndSequenceNumbers および DxgkDdiOPMGetRandomNumber 関数に渡します。

DxgkDdiOPMGetCOPPCompatibleInformation に関連し、DxgkDdiOPMGetInformation 関数に関連しないいくつかの事実を次に示します。

  • DirectX グラフィックス カーネル サブシステムは、COPP セマンティクスでのみ保護された出力にハンドルを渡すことができます。

  • Parameters パラメーターが指すDXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS構造体は署名されていません。

  • DirectX グラフィックス カーネル サブシステムは、DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERSの guidInformation メンバーでDXGKMDT_OPM_GET_ACP_AND_CGMSA_SIGNALINGとDXGKMDT_OPM_GET_CONNECTED_HDCP_DEVICE_INFORMATION GUID を渡すことができます。

  • DirectX グラフィックス カーネル サブシステムは、DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERSの guidInformation メンバーでDXGKMDT_OPM_GET_CURRENT_HDCP_SRM_VERSION GUID を渡すことができません。

  • DirectX グラフィックス カーネル サブシステムは、DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS の abParameters メンバーの最初の 4 バイトで、DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERSの guidInformation メンバーのDXGKMDT_OPM_GET_VIRTUAL_PROTECTION_LEVELまたはDXGKMDT_OPM_GET_ACTUAL_PROTECTION_LEVEL GUID にDXGKMDT_OPM_PROTECTION_TYPE_COPP_COMPATIBLE_HDCPを指定できます。

  • DirectX グラフィックス カーネル サブシステムでは、DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS の abParameters メンバーの最初の 4 バイトで、DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERSの guidInformation メンバーのDXGKMDT_OPM_GET_VIRTUAL_PROTECTION_LEVELまたはDXGKMDT_OPM_GET_ACTUAL_PROTECTION_LEVEL GUID にDXGKMDT_OPM_PROTECTION_TYPE_HDCPを指定することはできません。

ドライバーは、 DxgkDdiOPMGetCOPPCompatibleInformation 関数が呼び出されたときに、次のシーケンスを実行する必要があります。

  1. DxgkDdiOPMGetCOPPCompatibleInformationProtectedOutputHandle パラメーターに渡された保護された出力ハンドルに COPP セマンティクスがあることを確認します。

  2. 要求された情報を取得します。

  3. DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERSの rnRandomNumber メンバーが指定する乱数を、 DXGKMDT_OPM_STANDARD_INFORMATION 、DXGKMDT_OPM_ACTUAL_OUTPUT_FORMAT、DXGKMDT_OPM_ACP_AND_CGMSA_SIGNALING、または DXGKMDT_OPM_CONNECTED_HDCP_DEVICE_INFORMATION 構造体の rnRandomNumber メンバーにコピーします。 使用される構造体は、呼び出し元が要求した情報の種類によって異なります。 構造体は、RequestedInformation パラメーターが指すDXGKMDT_OPM_REQUESTED_INFORMATION構造体の abRequestedInformation メンバーで設定されます。

  4. DXGKMDT_OPM_REQUESTED_INFORMATION構造体に署名し、署名を DXGKMDT_OPM_REQUESTED_INFORMATION の omac メンバーに配置します。 AES ブロック暗号と OMAC-1 署名アルゴリズムを使用して、構造体に署名する必要があります。 AES の詳細については、 RSA ラボラトリー の Web サイトを参照してください。 OMAC-1 の詳細については、 DXGKMDT_OPM_OMAC リファレンス ページを参照してください。

最初に、DirectX グラフィックス カーネル サブシステムは DxgkDdiOPMGetCOPPCompatibleInformation を呼び出して出力に関する情報を取得し、 DxgkDdiOPMConfigureProtectedOutput を 1 回以上呼び出して出力を構成します。 その後、DirectX グラフィックス カーネル サブシステムは DxgkDdiOPMGetCOPPCompatibleInformation を呼び出しますが、 DxgkDdiOPMConfigureProtectedOutput も呼び出しません。

DxgkDdiOPMGetCOPPCompatibleInformation をページング可能にする必要があります。

要件

要件
対象プラットフォーム デスクトップ
Header dispmprt.h (Dispmprt.h を含む)
IRQL PASSIVE_LEVEL (「解説」セクションを参照)

こちらもご覧ください

DxgkDdiAddDevice

DxgkDdiOPMConfigureProtectedOutput

DxgkDdiOPMCreateProtectedOutput

DxgkDdiOPMGetInformation

DxgkDdiOPMGetRandomNumber

DxgkDdiOPMSetSigningKeyAndSequenceNumbers

DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS

DXGKMDT_OPM_OMAC

DXGKMDT_OPM_REQUESTED_INFORMATION