핫 플러그 검색 모니터링

이 페이지의 정보는 WDDM 버전 2.2 이전 버전을 사용하여 구현된 그래픽 드라이버에 적용됩니다.

디스플레이 어댑터의 비디오 출력은 디스플레이 어댑터의 자식 디바이스로 간주됩니다. 출력에 연결하는 모니터 또는 기타 외부 디스플레이 디바이스는 자식 디바이스로 간주되지 않습니다. 초기화하는 동안 디스플레이 미니포트 드라이버의 DxgkDdiQueryChildRelations 함수는 각 자식 디바이스에 유형 및 HPD 인식 값을 할당합니다. 형식은 DXGK_CHILD_DEVICE_TYPE 열거자 중 하나입니다.

  • TypeVideoOutput

  • TypeOther

HPD 인식 값은 DXGK_CHILD_DEVICE_HPD_AWARENESS 열거자 중 하나입니다.

  • HpdAwarenessAlwaysConnected

  • HpdAwarenessInterruptible

  • HpdAwarenessPolled

TypeVideoOutput 형식과 HpdAwarenessAlwaysConnected 이외의 HPD 인식 값이 있는 자식 디바이스를 비디오 출력 커넥터라고 합니다.

디스플레이 미니포트 드라이버가 모니터가 비디오 출력에 연결되어 있는지 여부를 확인할 수 없는 경우 드라이버는 HPD 인식 값이 HpdAwarenessInterruptible로 설정된 인터럽트 가능한 디바이스의 동작을 에뮬레이트해야 합니다. 디스플레이 미니포트 드라이버가 사용자가 TV 보기로 전환하기 위해 바로 가기 키를 입력하는 경우와 같이 인터럽트 가능한 모니터가 비디오 출력에 연결되어야 함을 나타내야 하는 경우 드라이버는 ChildStatus를 사용하여 DxgkCbIndicateChildStatus 함수를 호출해야 합니다. HotPlug. 연결됨이 TRUE로 설정됩니다.

특정 시간에 운영 체제는 디스플레이 미니포트 드라이버가 HPD 인식 값이 HpdAwarenessPolled인 모든 비디오 출력 커넥터의 상태 보고하도록 요청합니다. 정기적인 폴링 간격은 없습니다. 대신 사용 가능한 디스플레이 디바이스 및 모드 목록을 업데이트해야 하는 경우 요청이 이루어집니다. 예를 들어 랩톱 컴퓨터가 도킹되면 운영 체제에서 모니터가 도킹 스테이션의 비디오 출력에 연결되어 있는지 여부를 알아야 합니다. 운영 체제는 HPD 인식 값이 HpdAwarenessPolled인 각 자식 디바이스에 대해 디스플레이 미니포트 드라이버의 DxgkDdiQueryChildStatus 함수를 호출하여 요청을 합니다.

HPD 인식 값이 HpdAwarenessInterruptible인 비디오 출력 커넥터의 경우 디스플레이 미니포트 드라이버는 외부 디스플레이 장치가 핫 플러그링되거나 플러그를 뽑을 때마다 운영 체제에 알릴 책임이 있습니다. 디스플레이 미니포트 드라이버의 인터럽트 처리 코드는 디스플레이 포트 드라이버의 DxgkCbIndicateChildStatus 함수를 호출하여 외부 디스플레이 디바이스가 특정 비디오 출력에 연결되었거나 연결이 끊어졌는지 보고합니다. 노트북 컴퓨터가 도킹되면 디스플레이 미니포트 드라이버의 DxgkDdiNotifyAcpiEvent 함수는 HPD 인식 값이 HpdAwarenessInterruptible인 도킹 스테이션의 각 비디오 출력에 대해 DxgkCbIndicateChildStatus를 호출해야 합니다.

노트북 컴퓨터가 도킹될 때 HPD 인식 값이 HpdAwarenessPolled 인 커넥터를 사용할 수 없게 되면(즉, 은폐) 디스플레이 미니포트 드라이버의 DxgkDdiNotifyAcpiEvent 함수가 DxgkCbIndicateChildStatus 를 호출하여 커넥터 연결이 끊어졌다는 것을 보고해야 합니다.

휴대용 컴퓨터의 통합 디스플레이 패널과 연결된 비디오 출력은 비정상적인 경우입니다. 운영 체제는 휴대용 컴퓨터의 뚜껑이 열려 있는지 또는 닫혀 있는지 알고 있어야 하므로 연결된 아이디어는 열린 것을 의미하는 데 사용되며 연결되지 않음 의 아이디어는 닫힘을 의미하는 데 사용됩니다. 휴대용 컴퓨터의 통합 디스플레이와 연결된 비디오 출력에는 HpdAwarenessInterruptible의 HPD 인식 값이 있습니다. 그러나 덮개를 열거나 닫을 때 디스플레이 어댑터가 인터럽트를 생성한다는 의미는 아닙니다. 대신 ACPI BIOS는 덮개를 열거나 닫을 때 인터럽트를 생성합니다. 이 인터럽트는 디스플레이 미니포트 드라이버의 DxgkDdiNotifyAcpiEvent 함수를 호출합니다. 이 함수는 DxgkCbIndicateChildStatus를 호출하여 뚜껑의 상태(열기 또는 닫힘)을 보고합니다. 디스플레이 미니포트 드라이버는 DXGK_CHILD_STATUS 구조체의 HotPlug.Connected 멤버를 TRUE(열기) 또는 FALSE(닫힘)로 설정하고 DXGK_CHILD_STATUS 구조를 DxgkCbIndicateChildStatus에 전달하여 덮개 상태 보고합니다.

다음 목록에서는 커넥터에 HpdAwarenessPolled의 HPD 인식 값이 있다고 가정하여 모니터가 HD15 커넥터에 연결될 때 수행되는 단계를 설명합니다.

  1. 모니터가 디스플레이 어댑터의 HD15 커넥터에 연결됩니다. 디스플레이 어댑터는 이를 핫 플러그 이벤트로 검색하지 않습니다.

  2. 나중에 사용자 모드 애플리케이션은 디스플레이 디바이스 목록을 요청합니다.

  3. HPD 인식 값이 HpdAwarenessPolled인 디스플레이 어댑터의 각 비디오 출력 커넥터에 대해 VidPN 관리자는 디스플레이 미니포트 드라이버의 DxgkDdiQueryChildStatus 함수를 호출하여 외부 디스플레이 디바이스가 연결되어 있는지 여부를 확인합니다. HD15 커넥터에 대해 DxgkDdiQueryChildStatus 가 호출되면 외부 모니터가 실제로 연결되어 있다고 보고합니다.

다음 목록에서는 커넥터에 HpdAwarenessInterruptible의 HPD 인식 값이 있다고 가정하여 모니터가 DVI 커넥터에 연결될 때 수행되는 단계를 설명합니다.

  1. 평면 패널은 디스플레이 어댑터의 DVI 커넥터에 연결됩니다.

  2. 디스플레이 어댑터는 핫 플러그 이벤트를 감지하고 인터럽트를 생성합니다.

  3. 인터럽트는 DPC(지연 프로시저 호출)를 예약하는 디스플레이 미니포트 드라이버의 DxgkDdiInterruptRoutine 함수에 의해 처리됩니다. 그 후 디스플레이 미니포트 드라이버의 DPC 콜백 함수가 호출됩니다.

  4. DPC 콜백 함수는 DXGK_CHILD_STATUS 구조를 디스플레이 포트 드라이버의 DxgkCbIndicateChildStatus 함수에 전달하여 DVI 커넥터의 상태 보고합니다. DXGK_CHILD_STATUS 구조체의 ChildUid 멤버는 DVI 커넥터를 식별하고 HotPlug.Connected 멤버(이 경우 TRUE 로 설정됨)는 외부 디스플레이 디바이스가 연결되어 있음을 나타냅니다.

DVI 커넥터가 DVI, HD15 및 S-video의 세 가지 분기가 있는 동글을 지원한다고 가정해 보겠습니다. 이 경우 디스플레이 미니포트 드라이버는 이전에 하나의 물리적 DVI 커넥터와 연결된 세 개의 자식 디바이스인 DVI-on-DVI, HD15-on-DVI 및 S-video-on-DVI를 열거했을 것입니다. 이러한 각 자식 디바이스에는 TypeVideoOutput 유형과 HpdAwarenessInterruptible의 HPD 인식 값이 있습니다. 다음 목록에서는 모니터가 동글의 HD15 분기에 연결될 때 수행되는 단계를 설명합니다.

  1. 디스플레이 어댑터는 핫 플러그 이벤트를 감지하고 인터럽트를 생성합니다.

  2. 인터럽트는 DPC(지연 프로시저 호출)를 예약하는 디스플레이 미니포트 드라이버의 DxgkDdiInterruptRoutine 함수에 의해 처리됩니다. 그 후 디스플레이 미니포트 드라이버의 DPC 콜백 함수가 호출됩니다.

  3. DPC 콜백 함수는 핫 플러그 이벤트가 동글의 HD15 분기(HD15-on-DVI)에 있는지 확인합니다.

  4. DPC 콜백 함수는 DXGK_CHILD_STATUS 구조를 DxgkCbIndicateChildStatus에 전달하여 HD15-on-DVI 비디오 출력의 상태 보고합니다. DXGK_CHILD_STATUS 구조체의 ChildUid 멤버는 비디오 출력을 식별하고 HotPlug.Connected 멤버(이 경우 TRUE 로 설정됨)는 외부 디스플레이 디바이스가 연결되어 있음을 나타냅니다.

다음 목록에서는 노트북 컴퓨터에서 덮개를 닫을 때 수행되는 단계를 설명합니다.

  1. 덮개는 ACPI 이벤트를 생성하는 휴대용 컴퓨터에서 닫힙니다. 그 후 디스플레이 미니포트 드라이버의 DxgkDdiNotifyAcpiEvent 함수가 호출됩니다.

  2. DxgkDdiNotifyAcpiEvent는 DXGK_CHILD_STATUS 구조를 디스플레이 포트 드라이버의 DxgkCbIndicateChildStatus 함수에 전달하여 기본 제공 디스플레이 패널과 연결된 자식 디바이스의 상태 보고합니다. 특히 DxgkDdiNotifyAcpiEvent 는 DXGK_CHILD_STATUS 구조체의 HotPlug.Connected 멤버를 FALSE로 설정합니다.