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 のバージョン。
- グラフィックス アダプターが使用する拡張バスの種類と、グラフィックス アダプターをコンピューターのノース ブリッジに接続する方法。
- グラフィックス アダプターが物理出力からモニターに送信するイメージの形式。
guidInformation、Parameters パラメーターが指す DXGKMDT_OPM_GET_INFO_PARAMETERS 構造体のメンバーには、COPP アプリケーションのみがこれらの GUID を指定する必要があるため、DXGKMDT_OPM_GET_CONNECTED_HDCP_DEVICE_INFORMATIONおよびDXGKMDT_OPM_GET_ACP_AND_CGMSA_SIGNALING GUID を含めてはなりません。
COPP アプリケーションのみがこの保護の種類を使用するため、abParameters メンバーの最初 DXGKMDT_OPM_GET_INFO_PARAMETERS の 4 バイトは、DXGKMDT_OPM_GET_VIRTUAL_PROTECTION_LEVELまたはDXGKMDT_OPM_GET_ACTUAL_PROTECTION_LEVEL GUID が DXGKMDT_OPM_GET_INFO_PARAMETERS の guidInformation メンバーで指定されている場合、DXGKMDT_OPM_PROTECTION_TYPE_COPP_COMPATIBLE_HDCP保護の種類を含めてはなりません。
ドライバーは、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 ページング可能にする必要があります。
必要条件
要件 | 価値 |
---|---|
ターゲット プラットフォーム の | デスクトップ |
ヘッダー | dispmprt.h (Dispmprt.h を含む) |
IRQL | PASSIVE_LEVEL (「解説」セクションを参照) |
関連項目
DxgkDdiAddDeviceの
DxgkDdiOPMConfigureProtectedOutputの
DxgkDdiOPMCreateProtectedOutputの
DxgkDdiOPMSetSigningKeyAndSequenceNumbers