다음을 통해 공유


토폴로지 미니포트 드라이버

토폴로지 미니포트 드라이버는 오디오 어댑터의 믹서 회로에서 다양한 하드웨어 컨트롤(예: 볼륨 및 음소거)을 관리합니다. 이 드라이버는 컨트롤을 믹서 토폴로지의 노드 로 열거하여 클라이언트가 노드 간의 상호 연결을 검색하고 각 노드에서 컨트롤 매개 변수를 쿼리하고 설정할 수 있도록 합니다.

SysAudio 시스템 드라이버는오디오 필터 그래프를 빌드할 때 어댑터의 토폴로지를 확인합니다. Microsoft Windows SDK 설명서의 Windows 멀티미디어 섹션에 설명된 믹서 API는 토폴로지 노드를 믹서 라인 컨트롤로 나타내고 SndVol32와 같은 사용자 모드 애플리케이션에 노출합니다. 자세한 내용은 SysTray 및 SndVol32를 참조하세요.

토폴로지 미니포트 드라이버는 포트 드라이버가 미니포트 드라이버를 초기화하는 데 사용하는 토폴로지 미니포트 인터페이스를 구현해야 합니다. 미니포트 인터페이스인 IMiniportTopologyIMiniport 인터페이스의 메서드를 상속합니다. 추가 메서드를 제공하지 않습니다. 오디오 어댑터 드라이버는 미니포트 개체의 IMiniportTopology 인터페이스를 포트 개체의 IPortTopology 인터페이스에 바인딩하여 토폴로지 필터를 형성합니다.

일반적으로 토폴로지 필터는 어댑터의 토폴로지 노드 대부분을 포함하지만 어댑터 내의 다른 디바이스에는 추가 토폴로지 노드가 포함될 수 있습니다. 예를 들어 웨이브 필터로 표시되는 웨이브 디바이스에는 DAC(KSNODETYPE_DAC) 및 ADC(KSNODETYPE_ADC) 노드가 포함될 수 있습니다.

토폴로지 노드에서 컨트롤 매개 변수의 쿼리 및 설정은 속성 요청을 통해 수행됩니다. 각 노드 형식은 특정 속성 또는 속성 집합과 연결됩니다. 노드는 하나의 컨트롤 값만 지원할 수 있습니다. 예를 들어 볼륨 노드(KSNODETYPE_VOLUME)에는 현재 볼륨 설정을 나타내는 값이 있습니다. 다른 노드는 여러 컨트롤 값을 지원할 수 있습니다. 예를 들어 3D 노드(KSNODETYPE_3D_EFFECTS)는 다양한 3D 버퍼 및 3D 수신기 속성을 지원합니다. 반면에 합계 노드(KSNODETYPE_SUM)에는 컨트롤 값이 없습니다.

토폴로지 미니포트 드라이버는 PCCONNECTION_DESCRIPTOR(연결 설명자)를 사용하여 두 토폴로지 노드 간의 연결을 설명합니다. 각 연결은 지시되고 노드 간 및 노드 간을 모두 지정합니다. 노드에 여러 핀이 있을 수 있으며 한 핀에서 수행하는 함수는 다른 핀과 다를 수 있습니다. 한 핀과 다른 핀을 구분하기 위해 미니포트 드라이버는 노드의 핀 번호를 매겨줍니다. 이러한 핀 번호는 연결 설명자에 표시됩니다. 예를 들어 상태 변수 필터에는 각각 높은, 중간 및 낮은 주파수에 대해 하나씩 1, 2 및 3으로 번호가 매겨진 세 개의 출력 핀이 있을 수 있습니다. 핀 번호 매기기를 사용하면 미니포트 드라이버의 클라이언트가 어떤 핀과 연결된 연결을 확인할 수 있습니다.

연결 설명자는 PCFILTER_NODE고유 노드 식별자를 사용하여 필터 내의 노드에 있는 핀과 필터의 핀을 구분합니다. 오디오 어댑터의 오디오 렌더링 및 캡처 디바이스에 대한 각 믹서 회로의 하드 연결은 토폴로지 필터의 핀으로 표시됩니다. 다른 토폴로지 필터 핀은 어댑터 카드 라인아웃 잭과 같은 외부 물리적 연결을 나타냅니다. 토폴로지 필터의 핀은 어댑터 하드웨어의 실제 하드 연결 연결을 나타냅니다. 따라서 핀은 연결이 이루어지는지 여부를 명시적으로 제어할 수 없으며 해당 연결을 통해 데이터 흐름을 관리하는 데 사용할 수 없습니다.

단일 연결 설명자는 토폴로지의 두 핀 형식 간의 연결을 설명할 수 있습니다. 연결의 양쪽에 있는 핀은 필터의 핀이거나 필터 내 노드의 핀이거나 연결에 필터 핀이 있고 다른 쪽에는 노드 핀이 있을 수 있습니다. 미니포트 드라이버는 토폴로지를 연결 설명자 배열로 지정합니다. 단일 핀에는 둘 이상의 연결이 있을 수 있습니다. 즉, 동일한 핀이 배열의 두 개 이상의 연결 설명자에 나타날 수 있습니다.

클라이언트가 미니포트 드라이버에서 가져오는 토폴로지 설명은 클라이언트에 알 수 없는 노드 형식을 해석하는 방법에 대한 개방형 검색을 지원하도록 설계되지 않았습니다. 노드 핀 번호 매기기만으로는 클라이언트에 핀의 기능을 검색하는 데 필요한 정보를 제공하지 않습니다. 미니포트 드라이버는 GUID를 통해 노드 유형을 식별하지만 노드 형식 또는 노드 형식에서 지원하는 핀을 설명하기 위한 표준화된 매개 변수 목록을 제공하지는 않습니다.

예를 들어 클라이언트가 노드 형식 GUID KSNODETYPE_VOLUME 사용하여 자신을 식별하는 노드를 열거하는 경우 클라이언트는 볼륨 노드 처리 규칙을 알고 있는 경우에만 노드를 사용할 수 있습니다. 예를 들어 볼륨 노드는 규칙에 따라 KSPROPERTY_AUDIO_VOLUMELEVEL 속성을 지원하고 각각 출력(원본) 핀 및 입력(싱크) 핀에 노드 핀 번호 0과 1을 할당합니다. 또한 볼륨 노드를 제어할 수 있는 클라이언트는 일반적으로 탐색을 비교적 적은 수의 노드 형식(예: 볼륨 및 음소거 노드)으로 제한하는 지시된 검색을 수행합니다. 클라이언트는 일반적으로 볼륨 노드(예: 믹서 선)를 포함할 가능성이 있는 필터 그래프의 일부만 탐색합니다.

미니포트 인터페이스는 미니포트 드라이버에서 포트 드라이버로 원치 않는 제어 값 변경 내용의 배달을 지원합니다. 이 기능은 사용자가 물리적으로 조작할 수 있는 컨트롤 노브, 슬라이더 또는 스위치가 있는 디바이스를 수용합니다. 사용자가 노드의 제어 값을 변경할 때마다 하드웨어 인터럽트는 포트 드라이버에 하드웨어 이벤트가 발생했음을 알 수 있습니다.