DXGKDDI_STOP_DEVICE_AND_RELEASE_POST_DISPLAY_OWNERSHIP 콜백 함수(dispmprt.h)

디스플레이 미니포트 드라이버에 디스플레이 디바이스를 다시 설정하도록 요청하고 현재 POST(전원 켜기 자체 테스트) 디바이스의 소유권을 해제하도록 운영 체제에서 호출합니다.

Windows 8 시작해서 운영 체제는 플러그 앤 플레이(PnP) 중지 작업 중에 이 함수를 호출합니다.

이 함수가 지원됨을 운영 체제에 나타내려면 DxgkDdiQueryAdapterInfo 함수가 호출되면 드라이버는 DXGK_DRIVERCAPS 구조체의 NonVGASupport 멤버를 설정해야 합니다.

구문

DXGKDDI_STOP_DEVICE_AND_RELEASE_POST_DISPLAY_OWNERSHIP DxgkddiStopDeviceAndReleasePostDisplayOwnership;

NTSTATUS DxgkddiStopDeviceAndReleasePostDisplayOwnership(
  [in]  PVOID MiniportDeviceContext,
  [in]  D3DDDI_VIDEO_PRESENT_TARGET_ID TargetId,
  [out] PDXGK_DISPLAY_INFORMATION DisplayInfo
)
{...}

매개 변수

[in] MiniportDeviceContext

디스플레이 어댑터와 연결된 컨텍스트 블록에 대한 핸들입니다. 디스플레이 미니포트 드라이버의 DxgkDdiAddDevice 함수는 이전에 이 핸들을 Microsoft DirectX 그래픽 커널 하위 시스템에 제공했습니다.

[in] TargetId

디스플레이 디바이스가 연결된 디스플레이 어댑터에 있는 비디오 대상의 식별자를 지정하는 D3DDDI_VIDEO_PRESENT_TARGET_ID 값입니다. 이 식별자는 DxgkDdiCommitVidPn에 대한 이전 호출 중에 현재 VidPN(비디오 제공 네트워크) 상태에 남아 있는 대상에 대한 것일 수 있습니다.

TargetId 매개 변수 사용에 대한 자세한 내용은 다음 설명 섹션을 참조하세요.

[out] DisplayInfo

운영 체제에서 할당하는 DXGK_DISPLAY_INFORMATION 구조체에 대한 포인터입니다.

반환 값

성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 Ntstatus.h에 정의된 오류 코드 중 하나를 반환합니다. 자세한 내용은 아래 설명 부분을 참조하십시오.

설명

허용되는 색 형식

디스플레이 미니포트 드라이버는 32비트 색 형식만 보고해야 합니다. 따라서 DisplayInfo->ColorFormat 멤버는 다음 두 형식 중 하나만 포함해야 합니다.
  • D3DDDIFMT_X8R8G8B8
  • D3DDDIFMT_A8R8G8B8

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

디스플레이 미니포트 드라이버는 DisplayInfo->TargetId 멤버를 활성 상태로 유지되는 디스플레이의 대상 식별자로 설정해야 합니다. 일반적으로 이 식별자는 운영 체제가 드라이버에 전달한 TargetId 매개 변수의 값입니다.

마찬가지로 디스플레이 미니포트 드라이버는 DisplayInfo-AcpiId> 멤버를 활성 상태로 유지되는 디스플레이의 ACPI 식별자로 설정해야 합니다.

미니포트 드라이버를 표시하는 필수 단계

디스플레이 미니포트 드라이버는 DxgkDdiStopDeviceAndReleasePostDisplayOwnership 함수가 호출되는 경우 다음 단계를 따라야 합니다.
  1. 드라이버는 TargetId 매개 변수로 표시된 비디오 현재 대상과 연결된 디스플레이 디바이스를 중지해야 하지만 이 대상과 연결된 디스플레이를 켜고 표시하도록 유지해야 합니다.
  2. 드라이버는 이 대상과 연결된 디스플레이의 연결을 검사 합니다. 대상에 연결된 디스플레이가 없는 경우 드라이버는 이 함수에 대한 호출을 완료하고 STATUS_NOT_SUPPORTED 오류 코드를 반환해야 합니다.
  3. 드라이버는 디스플레이 어댑터에 연결된 다른 모든 디스플레이에 대한 신호를 사용하지 않도록 설정해야 합니다. 이것이 불가능한 경우 드라이버는 다른 모든 디스플레이에 빈 이미지를 배치하려고 시도해야 합니다. 이렇게 할 수 없는 경우 드라이버는 화면의 마지막 이미지를 변경하지 않고 유지해야 합니다.
  4. 드라이버는 표시된 대상에서 현재 표시 모드를 유지하고 이 함수 호출의 일부로 이 모드를 운영 체제에 다시 제공해야 합니다.
  5. 드라이버가 현재 표시 모드를 유지할 수 없거나 대상이 활성 토폴로지의 일부가 아닌 경우 드라이버는 대체 활성 대상을 선택하고 해당 대상의 현재 해상도를 유지 관리해야 합니다. 이것이 불가능한 경우 드라이버는 디스플레이를 기본 해상도 또는 고해상도 모드로 설정하려고 시도해야 합니다. 이 경우 디스플레이 해상도는 D3DDDIFMT_R8G8B8(픽셀당 24비트) 또는 D3DDDIFORMAT열거형의 D3DDDIFMT_X8R8G8B8(32bpp) 색 형식으로 800 x 600픽셀 이상으로 설정해야 합니다.
  6. 활성 대상이 없는 경우 드라이버가 대상을 사용하도록 설정해야 합니다( 사용 가능한 경우 내부 패널).
  7. 가능하면 드라이버는 현재 프레임 버퍼를 지우고 하드웨어 커서 및 모든 디스플레이 오버레이를 사용하지 않도록 설정해야 합니다.
  8. 가능하면 드라이버는 디바이스의 감마 램프를 기본값으로 설정해야 합니다.
  9. 드라이버는 현재 프레임 버퍼를 선형 모드로 설정해야 합니다. 드라이버는 기본 스위즐 범위를 사용하거나 스위즐 모드를 사용하지 않도록 설정하여 이 작업을 수행합니다.
  10. 드라이버는 현재 프레임 버퍼를 CPU 주소 공간에 선형으로 매핑하여 현재 프레임 버퍼에 CPU에 액세스할 수 있도록 해야 합니다.
  11. 드라이버는 표시된 대상의 표시 유형이 "사용"으로 설정되어 있는지 확인해야 합니다.
디스플레이 미니포트 드라이버가 이러한 단계를 수행한 후 디바이스에 대한 현재 디스플레이 설정을 반환해야 합니다. 드라이버는 DisplayInfo 매개 변수에서 참조하는 DXGK_DISPLAY_INFORMATION 구조체의 멤버를 설정하여 이 정보를 반환합니다.
참고 디바이스가 중지된 후 Windows 일반 디스플레이 드라이버에서 이 디스플레이 정보를 사용하여 디스플레이 디바이스를 관리할 수 있습니다.
 

기타 요구 사항

UEFI(Unified Extensible Firmware Interface)를 지원하는 시스템에서는 VGA BIOS(기본 입력/출력 시스템)가 없습니다. 이러한 시스템에서 PnP 중지 작업을 지원하기 위해 WDDM(Windows Display Driver Model) 1.2 이상에서는 운영 체제가 POST 디바이스를 재설정하고 PnP 중지 작업 중에 해당 디스플레이 정보를 가져올 수 있도록 지원합니다. 운영 체제는 디스플레이 미니포트 드라이버의 DxgkDdiStopDeviceAndReleasePostDisplayOwnership 함수를 호출하여 이 작업을 수행합니다.

PnP 중지 작업은 장치 관리자 같은 프로세스 또는 드라이버 업그레이드 프로세스 중에 요청에 대한 응답으로 발생할 수 있습니다.

Windows 8 시작해서 운영 체제는 PnP 중지 작업 중에 POST 디바이스에서만 드라이버의 DxgkDdiStopDeviceAndReleasePostDisplayOwnership 함수를 호출합니다.

참고 디스플레이 미니포트 드라이버가 DxgkCbAcquirePostDisplayOwnership을 호출하는 것은 선택 사항입니다. 그러나 드라이버가 이전에 DxgkCbAcquirePostDisplayOwnership을 호출하지 않은 경우에도 운영 체제는 디바이스 드라이버의 DxgkDdiStopDeviceAndReleasePostDisplayOwnership 함수를 호출할 수 있습니다.
 
드라이버가 이 함수에 대한 호출을 성공적으로 완료하면 운영 체제에서 DxgkDdiStopDevice 함수를 호출하지 않습니다. 드라이버가 이 함수에 대한 호출을 완료하지 못하면 운영 체제는 DxgkDdiStopDevice 함수를 호출하고 디바이스 동작은 Windows 7과 동일합니다.

UEFI 전용 시스템에서 디스플레이 미니포트 드라이버가 이 함수에 대한 호출에 실패하면 검은색 화면이 표시되고 IHV 드라이버가 설치되지 않습니다. 이 시나리오의 해결 방법은 사용자가 컴퓨터를 다시 부팅하는 것입니다.

PnP 시나리오에서 이 함수를 사용하는 방법에 대한 자세한 내용은 WDDM 1.2 이상에서 PnP(플러그 앤 플레이)를 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8
지원되는 최소 서버 Windows Server 2012
대상 플랫폼 데스크톱
머리글 dispmprt.h
IRQL PASSIVE_LEVEL

추가 정보

DXGKRNL_INTERFACE

DXGK_DISPLAY_INFORMATION

DXGK_DRIVERCAPS

DxgkCbAcquirePostDisplayOwnership

DxgkDdiAddDevice

DxgkDdiQueryAdapterInfo

DxgkDdiStartDevice

DxgkDdiStopDevice