다음을 통해 공유


DXGKCB_ACQUIRE_POST_DISPLAY_OWNERSHIP 콜백 함수(dispmprt.h)

커널 모드 디스플레이 미니포트 드라이버(KMD)는 DxgkrnlDxgkCbAcquirePostDisplayOwnership 루틴을 호출하여 현재 POST(Power-On 자체 테스트) 디스플레이 디바이스 또는 이전에 실행 중인 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 멤버에는 다음 두 D3DDDIFORMAT 형식의 비트 OR 조합이 포함되어야 합니다.

  • D3DDDIFMT_X8R8G8B8
  • D3DDDIFMT_A8R8G8B8

OS가 D3DDDIFMT_R8G8B8 형식을 다시 보고하는 경우 KMD는 이를 무시해야 합니다.

비디오 프레젠테이션 대상 초기화

DisplayInfo->TargetId 멤버가 초기화되지 않을 수 있습니다. 이 경우 비디오 현재 대상의 식별자는 D3DDDI_ID_UNINITIALIZED. 일반적으로 이 상황은 시스템 부팅 후에 발생합니다.

마찬가지로, DisplayInfo->AcpiId 멤버가 초기화되지 않을 수 있습니다. 이 경우 ACPI 식별자 AcpiId 값이 0입니다.

드라이버-드라이버 업그레이드의 경우 이전 드라이버는 대상 식별자와 ACPI 식별자를 제공했습니다.

구현 지침

WDDM 1.2부터 KMD는 DxgkCbAcquirePostDisplayOwnership호출할 때 다음 지침을 따라야 합니다.

  • DxgkCbAcquirePostDisplayOwnership 함수의 진입점은 DXGKRNL_INTERFACE 구조의 일부입니다. 이 구조체는 드라이버의 DxgkDdiStartDevice 함수가 호출될 때 DxgkInterface 매개 변수를 통해 드라이버에 반환됩니다.

  • KMD는 필요에 따라 DxgkCbAcquirePostDisplayOwnership호출할 수 있습니다. 그러나 OS는 드라이버가 이전에 DxgkCbAcquirePostDisplayOwnership호출하지 않았더라도 KMD의DxgkDdiStopDeviceAndReleasePostDisplayOwnership 함수를 호출할 수 있으며 드라이버는 해당 호출을 적절하게 처리해야 합니다. 드라이버의 DxgkDdiStopDeviceAndReleasePostDisplayOwnership 함수가 성공적으로 완료되지 않으면 OS는 드라이버의 DxgkDdiStopDevice 함수를 호출합니다.

  • 장치가 PnP(플러그 앤 플레이) 이벤트에 대한 응답으로 시작되는 경우 KMD는 DxgkCbAcquirePostDisplayOwnership 호출할 수 있습니다. 이 경우 드라이버는 DxgkDdiStartDevice 함수에 대한 호출 컨텍스트 내에서 DxgkCbAcquirePostDisplayOwnership 호출해야 합니다.

  • 디바이스가 최대 절전 모드 상태 후 PowerDeviceD0 전원 상태를 다시 시작하는 경우 KMD는 DxgkCbAcquirePostDisplayOwnership 호출할 수 있습니다. 이 경우 드라이버는 DxgkDdiSetPowerState 함수에 대한 호출 컨텍스트 내에서 DxgkCbAcquirePostDisplayOwnership 호출해야 합니다.

  • KMD는 Windows 8 이상을 실행하는 경우에만 DxgkCbAcquirePostDisplayOwnership 함수를 호출해야 합니다. KMD는 RtlGetVersion 호출하여 OS 버전을 확인할 수 있습니다.

  • DxgkCbAcquirePostDisplayOwnershipWidth 멤버가 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