VidPN 개체 및 인터페이스
VidPN(비디오 프레젠테이션 네트워크) 관리자는 VidPN 개체를 사용하여 비디오 현재 원본, 비디오 프레젠테이션 대상 및 디스플레이 모드 간의 연결에 대한 정보를 유지 관리합니다. 자세한 내용은 Video Present Networks 소개 항목을 참조하세요.
VidPN 개체
VidPN 개체에는 다음 하위 개체가 포함됩니다.
토폴로지
원본 모드 집합
대상 모드 집합
원본 모드 집합 모니터링
빈도 범위 집합 모니터링
설명자 집합 모니터링
경로
원본
대상
원본 모드
대상 모드
원본 모드 모니터링
다음 다이어그램에서는 VidPN 개체와 해당 하위 개체를 보여 줍니다.
앞의 다이어그램은 특정 연결이 일대일, 일대다, 다 대 일 또는 다 대 다인지를 보여 줍니다. 예를 들어 다이어그램은 원본이 둘 이상의 경로에 속할 수 있지만 대상은 하나의 경로에만 속할 수 있음을 보여줍니다.
다이어그램의 파란색 개체는 핸들 및 인터페이스를 통해 액세스되고 회색 개체는 구조체 포인터를 통해 액세스됩니다. 이 컨텍스트의 인터페이스는 함수 포인터를 포함하는 구조체입니다. 예를 들어 DXGK_VIDPNTOPOLOGY_INTERFACE 구조체에는 디스플레이 미니포트 드라이버가 토폴로지 개체를 검사하고 변경하기 위해 호출하는 함수(VidPN 관리자에 의해 구현됨)에 대한 포인터가 포함되어 있습니다. 디스플레이 미니포트 드라이버가 이러한 함수 중 하나를 호출할 때 토폴로지 개체에 대한 핸들을 제공해야 합니다. 다음 표에서는 VidPN 개체 및 해당 하위 개체에 액세스하는 데 사용되는 핸들, 인터페이스 및 포인터 데이터 형식을 나열합니다.
Object | Access 메서드 및 데이터 형식 |
---|---|
VidPN(VidPN 인터페이스) | 핸들 및 인터페이스를 통해 액세스합니다. D3DKMDT_HVIDPN, DXGK_VIDPN_INTERFACE |
토폴로지(VidPN 토폴로지 인터페이스) | 핸들 및 인터페이스를 통해 액세스합니다. D3DKMDT_HVIDPNTOPOLOGY , DXGK_VIDPNTOPOLOGY_INTERFACE |
소스 모드 집합(VidPN 원본 모드 집합 인터페이스) | 핸들 및 인터페이스를 통해 액세스합니다. D3DKMDT_HVIDPNSOURCEMODESET , DXGK_VIDPNSOURCEMODESET_INTERFACE |
대상 모드 집합(VidPN 대상 모드 집합 인터페이스) | 핸들 및 인터페이스를 통해 액세스합니다. D3DKMDT_HVIDPNTARGETMODESET, DXGK_VIDPNTARGETMODESET_INTERFACE |
원본 모드 집합 모니터링 | 핸들 및 인터페이스를 통해 액세스합니다. D3DKMDT_HMONITORSOURCEMODESET, DXGK_MONITORSOURCEMODESET_INTERFACE |
경로 | 구조체 포인터를 통해 액세스합니다. D3DKMDT_VIDPN_PRESENT_PATH |
Source | 구조체 포인터를 통해 액세스합니다. D3DKMDT_VIDEO_PRESENT_SOURCE |
대상 | 구조체 포인터를 통해 액세스합니다. D3DKMDT_VIDEO_PRESENT_TARGET |
원본 모드 | 구조체 포인터를 통해 액세스합니다. D3DKMDT_VIDPN_SOURCE_MODE |
대상 모드 | 구조체 포인터를 통해 액세스합니다. D3DKMDT_VIDPN_TARGET_MODE |
원본 모드 모니터링 | 구조체 포인터를 통해 액세스합니다. D3DKMDT_MONITOR_SOURCE_MODE |
빈도 범위 집합 모니터링 | 구조체 포인터를 통해 액세스합니다. [DXGK_MONITORFREQUENCYRANGESET_INTERFACE |
설명자 집합 모니터링 | 구조체 포인터를 통해 액세스합니다. [DXGK_MONITORDESCRIPTORSET_INTERFACE |
VidPN Manager
DirectX 그래픽 커널 하위 시스템의 구성 요소 중 하나인 VidPN 관리자는 디스플레이 미니포트 드라이버와 협력하여 VidPN을 빌드하고 유지 관리합니다. 다음 단계에서는 디스플레이 미니포트 드라이버가 VidPN 개체에 대한 핸들 및 인터페이스를 가져오는 방법을 설명합니다.
초기화하는 동안 DirectX 그래픽 커널 하위 시스템은 디스플레이 미니포트 드라이버의 DxgkDdiStartDevice 함수를 호출합니다. 이 호출은 DirectX 그래픽 커널 하위 시스템에 의해 구현된 함수에 대한 포인터를 포함하는 DXGKRNL_INTERFACE 구조체를 디스플레이 미니포트 드라이버에 제공합니다. 이러한 함수 중 하나는 DxgkCbQueryVidPnInterface입니다.
어떤 시점에서 VidPN 관리자는 디스플레이 미니포트 드라이버의 도움이 필요하므로 다음 함수 중 하나를 호출하여 디스플레이 미니포트 드라이버에 VidPN 개체에 대한 핸들을 제공합니다.
디스플레이 미니포트 드라이버는 2단계에서 가져온 핸들을 DxgkCbQueryVidPnInterface에 전달하여 DXGK_VIDPN_INTERFACE 구조체에 대한 포인터를 반환합니다.
디스플레이 미니포트 드라이버에 VidPN 개체에 대한 핸들과 인터페이스가 있으면 필요에 따라 토폴로지, 소스 모드 집합, 대상 모드 집합 및 모니터 소스 모드 집합과 같은 기본 하위 개체에 대한 핸들 및 인터페이스를 가져올 수 있습니다. 예를 들어 디스플레이 미니포트 드라이버는 pfnGetTopology (VidPN 인터페이스의 함수 중 하나)를 호출하여 VidPN 토폴로지 개체에 대한 핸들과 DXGK_VIDPNTOPOLOGY_INTERFACE 구조체에 대한 포인터를 가져올 수 있습니다.
VidPN 인터페이스의 다음 함수는 VidPN 개체의 기본 하위 개체에 대한 핸들과 인터페이스를 제공합니다.
이전 목록의 두 함수에는 VidPN 하위 개체를 해제하는 해당 함수가 있습니다.
디스플레이 미니포트 드라이버가 VidPNs 기본 하위 개체 중 하나에 대한 핸들 및 인터페이스를 가져온 후 인터페이스 함수를 호출하여 하위 개체와 관련된 개체의 설명자를 가져올 수 있습니다. 예를 들어 토폴로지 개체에 대한 핸들 및 인터페이스가 제공되면 디스플레이 미니포트 드라이버는 다음 단계를 수행하여 토폴로지의 모든 경로에 대한 설명자를 가져올 수 있습니다.
-
VidPN 토폴로지 인터페이스의 pfnAcquireFirstPathInfo 함수를 호출하여 토폴로지의 첫 번째 경로를 설명하는 D3DKMDT_VIDPN_PRESENT_PATH 구조체에 대한 포인터를 가져옵니다.
-
pfnAcquireNextPathInfo 함수를 반복적으로 호출하여 토폴로지의 나머지 경로를 설명하는 D3DKMDT_VIDPN_PRESENT_PATH 구조체에 대한 포인터를 가져옵니다.
마찬가지로 디스플레이 미니포트 드라이버는 다음 모드 집합 인터페이스 중에서 pfnAcquireFirstModeInfo 및 pfnAcquireNextModeInfo 함수를 호출하여 설정된 모드의 설명자를 가져올 수 있습니다.
DXGK_VIDPNSOURCEMODESET_INTERFACE 인터페이스에는 소스 모드 집합에서 모드를 제거하는 함수가 없습니다. 디스플레이 미니포트 드라이버가 소스 모드 집합을 업데이트해야 하는 경우 모드를 추가하고 제거하여 기존 모드 집합을 변경하지 않습니다. 대신 이전 모드 집합을 대체하는 새 모드 집합을 만듭니다. 모드 집합을 업데이트해야 하는 함수의 예로는 디스플레이 미니포트 드라이버의 DxgkDdiEnumVidPnCofuncModality 함수가 있습니다. 소스 모드 집합 업데이트와 관련된 단계는 다음과 같습니다.
DXGK_VIDPNSOURCEMODESET_INTERFACE 인터페이스의 pfnCreateNewModeInfo 를 호출하여 vidPN 관리자가 할당한 D3DKMDT_VIDPN_SOURCE_MODE 구조체에 대한 포인터를 가져옵니다.
pfnAddMode를 반복적으로 호출하여 소스 모드 집합에 모드를 추가합니다.
DXGK_VIDPN_INTERFACEpfnAssignSourceModeSet 함수를 호출하여 새 모드 집합을 특정 비디오 현재 원본에 할당합니다. 새 소스 모드 집합은 현재 해당 원본에 할당된 소스 모드 집합을 대체합니다.
대상 모드 집합을 업데이트하는 것은 원본 모드 집합을 업데이트하는 것과 비슷합니다. DXGK_VIDPNTARGETMODESET_INTERFACE 인터페이스에는 다음과 같은 함수가 있습니다.
-
새 대상 모드 집합을 만들기 위한 pfnCreateNewModeInfo 함수 및 집합에 모드를 추가하기 위한 pfnAddMode 함수입니다.
특정 경로에 속하는 원본 및 대상을 가져오기 위한 인터페이스(함수 집합)가 없습니다. 디스플레이 미니포트 드라이버는 경로를 나타내는 D3DKMDT_VIDPN_PRESENT_PATH 구조체의 VidPnSourceId 및 VidPnTargetId 멤버를 검사하여 특정 경로에 속하는 원본과 대상을 확인할 수 있습니다.
추가 정보
디스플레이 어댑터에서 VidPN이 지원되는지 여부 확인
Cofunctional VidPN 원본 및 대상 모드 열거