DXGKDDI_OPM_GET_INFORMATION コールバック関数 (dispmprt.h)
DXGKDDI_OPM_GET_INFORMATION関数は、指定された保護された出力オブジェクトから情報を取得します。
構文
DXGKDDI_OPM_GET_INFORMATION DxgkddiOpmGetInformation;
NTSTATUS DxgkddiOpmGetInformation(
[in] PVOID MiniportDeviceContext,
[in] HANDLE ProtectedOutputHandle,
[in] const DXGKMDT_OPM_GET_INFO_PARAMETERS *Parameters,
[out] PDXGKMDT_OPM_REQUESTED_INFORMATION RequestedInformation
)
{...}
パラメーター
[in] MiniportDeviceContext
ディスプレイ アダプターに関連付けられているコンテキスト ブロックへのハンドル。 以前は、ディスプレイ ミニポート ドライバーの DxgkDdiAddDevice 関数は、DirectX グラフィックス カーネル サブシステムにこのハンドルを提供しました。
[in] ProtectedOutputHandle
保護された出力オブジェクトへのハンドル。 DxgkDdiOPMCreateProtectedOutput 関数は、保護された出力オブジェクトを作成し、オブジェクトへのハンドルを返します。 このハンドルに対応する保護された出力オブジェクトには、OPM セマンティクスが必要です。
[in] Parameters
ProtectedOutputHandle パラメーターでハンドルが指定されている保護された出力オブジェクトから情報を取得するために使用されるパラメーターを含む、DXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS構造体へのポインター。 DXGKDDI_OPM_GET_INFORMATION は、保護された出力オブジェクトを間接的に作成したアプリケーションからの有効な要求がパラメーターに含まれているかどうかを判断します。 詳細については、「解説」を参照してください。
[out] RequestedInformation
DXGKDDI_OPM_GET_INFORMATIONが正常に返された場合に、保護された出力オブジェクトの情報を受け取るDXGKMDT_OPM_REQUESTED_INFORMATION構造体へのポインター。
DXGKDDI_OPM_GET_INFORMATION失敗した場合、RequestedInformation が指す値は変更されません。
戻り値
DxgkDdiOPMGetCOPPCompatibleInformation は、STATUS_SUCCESSまたは Ntstatus.h エラー コードを返します。
注釈
DirectX グラフィックス カーネル サブシステムは、出力に OPM セマンティクスがある場合にのみ 、DXGKDDI_OPM_GET_INFORMATION を呼び出す必要があります。
DirectX グラフィックス カーネル サブシステムが保護された出力ハンドルを DXGKDDI_OPM_GET_INFORMATION の呼び出しで ProtectedOutputHandle パラメーターに渡す前に、DirectX グラフィックス カーネル サブシステムは常に、保護された出力ハンドルを DxgkDdiOPMSetSigningKeyAndSequenceNumbers 関数と DxgkDdiOPMGetRandomNumber 関数に渡します。
DXGKDDI_OPM_GET_INFORMATION は、次のいずれかの種類の情報を取得します。
- 保護された出力のコネクタの種類。
- 保護された出力がサポートするコンテンツ保護の種類。 保護された出力では、現在、ACP、CGMS-A、HDCP をサポートできます。
- 特定の保護の種類に対する保護された出力の現在の仮想保護レベル。
- 特定の保護の種類に対する物理出力の実際の保護レベル。
- 保護された出力で現在使用されている HDCP SRM のバージョン。
- グラフィックス アダプターが使用する拡張バスの種類と、グラフィックス アダプターをコンピューターのノース ブリッジに接続する方法。
- グラフィックス アダプターが物理出力からモニターに送信するイメージの形式。
Parameters パラメーターが指すDXGKMDT_OPM_GET_INFO_PARAMETERS構造体の guidInformation メンバーには、COPP アプリケーションのみがこれらの GUID を指定する必要があるため、DXGKMDT_OPM_GET_CONNECTED_HDCP_DEVICE_INFORMATIONとDXGKMDT_OPM_GET_ACP_AND_CGMSA_SIGNALING GUID は含めてはいけません。
DXGKMDT_OPM_GET_INFO_PARAMETERS の abParameters メンバーの最初の 4 バイトには、DXGKMDT_OPM_GET_VIRTUAL_PROTECTION_LEVELまたは DXGKMDT_OPM_PROTECTION_TYPE_COPP_COMPATIBLE_HDCP DXGKMDT_OPM_GET_ACTUAL_PROTECTION_LEVEL GUID が DXGKMDT_OPM_GET_INFO_PARAMETERS の guidInformation メンバーで指定されている場合、この保護の種類を含めてはなりません。これは、COPP アプリケーションのみがこの保護の種類を使用するためです。
ドライバーは、 そのDXGKDDI_OPM_GET_INFORMATION 関数が呼び出されたときに、次のシーケンスを実行する必要があります。
DXGKDDI_OPM_GET_INFORMATION の ProtectedOutputHandle パラメーターに渡された保護された出力ハンドルに OPM セマンティクスがあることを確認します。
Parameters パラメーターの情報が、保護された出力オブジェクトの署名キーを使用して署名されたことを確認します。 保護された出力オブジェクトの署名キーは、 DxgkDdiOPMSetSigningKeyAndSequenceNumbers 関数が呼び出されたときに以前に設定されていました。 Advanced Encryption Standard (AES) ブロック暗号と OMAC-1 署名アルゴリズムを使用して署名を検証する必要があります。 AES の詳細については、 RSA ラボラトリー の Web サイトを参照してください。 OMAC-1 の詳細については、 DXGKMDT_OPM_OMAC リファレンス ページを参照してください。
要求された情報を取得します。
DXGKMDT_OPM_GET_INFO_PARAMETERS の rnRandomNumber メンバーが指定する乱数を、 DXGKMDT_OPM_STANDARD_INFORMATION またはDXGKMDT_OPM_ACTUAL_OUTPUT_FORMAT構造体の rnRandomNumber メンバーにコピーします。 使用される構造体は、呼び出し元が要求した情報の種類によって異なり、RequestedInformation パラメーターが指すDXGKMDT_OPM_REQUESTED_INFORMATION構造体の abRequestedInformation メンバーに設定されます。
DXGKMDT_OPM_REQUESTED_INFORMATION構造体に署名し、署名を DXGKMDT_OPM_REQUESTED_INFORMATION の omac メンバーに配置します。 AES ブロック暗号と OMAC-1 署名アルゴリズムを使用して、構造体に署名する必要があります。
最初に、DirectX グラフィックス カーネル サブシステムは DXGKDDI_OPM_GET_INFORMATION を呼び出して出力に関する情報を取得し、 DxgkDdiOPMConfigureProtectedOutput を 1 回以上呼び出して出力を構成します。 その後、DirectX グラフィックス カーネル サブシステムは、DxgkDdiOPMConfigureProtectedOutput も呼び出さずにDXGKDDI_OPM_GET_INFORMATIONを呼び出します。
DXGKDDI_OPM_GET_INFORMATION ページング可能にする必要があります。
要件
要件 | 値 |
---|---|
対象プラットフォーム | デスクトップ |
Header | dispmprt.h (Dispmprt.h を含む) |
IRQL | PASSIVE_LEVEL (「解説」セクションを参照) |
こちらもご覧ください
DxgkDdiOPMConfigureProtectedOutput
DxgkDdiOPMCreateProtectedOutput
DxgkDdiOPMSetSigningKeyAndSequenceNumbers