次の方法で共有


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

カーネル モード ディスプレイ ミニポート ドライバー (KMD) DxgkrnlDxgkCbAcquirePostDisplayOwnership ルーチンを呼び出して、現在の電源オン セルフテスト (POST) ディスプレイ デバイスまたは以前に実行されている WDDM ドライバーから表示情報を取得します。

ドライバーは、ディスプレイ デバイスの起動後に初期モード変更要求を最適化するには、この表示情報を使用する必要があります。

構文

DXGKCB_ACQUIRE_POST_DISPLAY_OWNERSHIP DxgkcbAcquirePostDisplayOwnership;

NTSTATUS DxgkcbAcquirePostDisplayOwnership(
  [in]  HANDLE DeviceHandle,
  [out] PDXGK_DISPLAY_INFORMATION DisplayInfo
)
{...}

パラメーター

[in] DeviceHandle

ディスプレイ アダプターを表すハンドル。 KMD は、DxgkDdiStartDeviceに渡された DXGKRNL_INTERFACE 構造体の DeviceHandle メンバーで、このハンドルを以前に取得しました。

[out] DisplayInfo

KMD によって割り当てられる DXGK_DISPLAY_INFORMATION 構造体へのポインター。 DxgkCbAcquirePostDisplayOwnership STATUS_SUCCESSを返す場合、この構造体には、POST 操作に使用される現在のディスプレイ デバイスの表示情報が含まれます。

戻り値

DxgkCbAcquirePostDisplayOwnership 成功した場合、STATUS_SUCCESSを返します。 それ以外の場合は、Ntstatus.hで定義されているエラー コードのいずれかを返します。

備考

DXGKCB_ACQUIRE_POST_DISPLAY_OWNERSHIP を呼び出すと、特にシステムの起動時、デバイス プラグイン イベント、休止状態からの再開後に、現在または最新の表示構成に基づいて、ドライバーが表示設定を正しく初期化できます。

使用できる色の形式

DisplayInfo->ColorFormat メンバーには、次の 2 つの D3DDDIFORMAT 形式のビットごとの OR の組み合わせを含める必要があります。

  • D3DDDIFMT_X8R8G8B8
  • D3DDDIFMT_A8R8G8B8

OS が D3DDDIFMT_R8G8B8 形式を報告する場合、KMD はそれを無視する必要があります。

ビデオ 表示ターゲットの初期化

DisplayInfo->TargetId メンバーが初期化されていない可能性があります。 この場合、ビデオ存在ターゲットの識別子は D3DDDI_ID_UNINITIALIZED。 通常、この状況はシステムの起動後に発生します。

同様に、DisplayInfo->AcpiId メンバーが初期化されていない可能性があります。 この場合、AcpiId ACPI 識別子の値は 0 です。

ドライバーからドライバーへのアップグレードの場合、前のドライバーはターゲット識別子と ACPI 識別子を指定します。

実装ガイドライン

WDDM 1.2 以降、KMD は DxgkCbAcquirePostDisplayOwnership呼び出すときに、次のガイドラインに従う必要があります。

  • DxgkCbAcquirePostDisplayOwnership 関数のエントリ ポイントは、DXGKRNL_INTERFACE 構造体の一部です。 この構造体は、ドライバーの DxgkDdiStartDevice 関数が呼び出されたときに、DxgkInterface パラメーターを使用してドライバーに返されます。

  • KMD は、必要に応じて DxgkCbAcquirePostDisplayOwnership呼び出すことができます。 ただし、以前にドライバーが DxgkCbAcquirePostDisplayOwnershipを 呼び出さなかった場合でも、OS は KMD のDxgkDdiStopDeviceAndReleasePostDisplayOwnership 関数を呼び出す可能性があり、ドライバーはその呼び出しを適切に処理する必要があります。 ドライバーの DxgkDdiStopDeviceAndReleasePostDisplayOwnership 関数が正常に完了しない場合、OS はドライバーの DxgkDdiStopDevice 関数を呼び出します。

  • KMD は、プラグ アンド プレイ (PnP) イベントに応答してデバイスが起動された場合、dxgkCbAcquirePostDisplayOwnership を呼び 出すことができます。 この場合、ドライバーは、DxgkDdiStartDevice 関数の呼び出しのコンテキスト内から dxgkCbAcquirePostDisplayOwnership 呼び出す必要があります。

  • デバイスが休止状態 後に電源状態 PowerDeviceD0 を再開した場合、KMD は DxgkCbAcquirePostDisplayOwnership を呼び出すことができます。 この場合、ドライバーは、DxgkDdiSetPowerState 関数の呼び出しのコンテキスト内から dxgkCbAcquirePostDisplayOwnership を呼び出す必要があります。

  • KMD は、少なくとも Windows 8 を実行している場合にのみ、DxgkCbAcquirePostDisplayOwnership 関数を呼び出す必要があります。 KMD は RtlGetVersion 呼び出して、OS のバージョンを確認できます。

  • DxgkCbAcquirePostDisplayOwnership Width メンバーが 0 に設定された DXGK_DISPLAY_INFORMATION 構造体を返すことができます。 この値は、現在の表示デバイスが POST 操作ができないか、OS に現在の POST デバイスの現在の表示情報がないことを示します。

必要条件

要件 価値
サポートされる最小クライアント Windows 8 (WDDM 1.2)
サポートされる最小サーバー Windows Server 2012
ターゲット プラットフォーム の デスクトップ
ヘッダー dispmprt.h (Dispmprt.h を含む)
IRQL <= APC_LEVEL

関連項目

D3DDDIFORMAT

DXGKRNL_INTERFACE

DXGK_DISPLAY_INFORMATION

DxgkDdiSetPowerState の

DxgkDdiStartDevice の

DxgkDdiStopDeviceAndReleasePostDisplayOwnership

RtlGetVersion を する