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 |
참고 항목
DxgkDdiSetPowerState
DxgkDdiStopDeviceAndReleasePostDisplayOwnership
rtlGetVersion