다음을 통해 공유


동적 토폴로지 관리

오디오 어댑터에는 사용자가 어댑터의 전면 또는 후면 패널 오디오 잭에 연결하는 스피커 및 마이크와 같은 외부 오디오 디바이스를 서비스하기 위한 몇 가지 하위 서비스가 포함되어 있습니다. 각 하위 서비스는 특정 오디오 잭 또는 잭 그룹을 서비스합니다.

오디오 드라이버는 기본적으로 내부 연결의 맵인 토폴로지를 제시하고 하위 서비스 내의 요소를 처리하여 각 하위 서비스를 설명합니다. 시스템 제공 Windows API 모듈 및 공급업체에서 제공하는 제어판 애플리케이션은 토폴로지 정보를 사용하여 하위 서비스의 기능을 확인하고 내부 제어 지점을 식별합니다. 자세한 내용은 필터 토폴로지 노출을 참조하세요.

IUnregisterSubdeviceIUnregisterPhysicalConnection 인터페이스를 사용할 수 있게 되기 전에 개발된 WDM 오디오 드라이버에는 대부분 정적 토폴로지가 있습니다. 이러한 드라이버의 경우 어댑터 드라이버가 하위 서비스를 관리하는 미니포트 드라이버 개체를 만든 후 해당 개체와 연결된 하위 서비스가 어댑터 드라이버 개체의 수명 동안 유지됩니다.

그러나 동적으로 구성 가능한 오디오 어댑터에서 어댑터 드라이버는 런타임에 하위 서비스를 만들고 삭제하여 사용자가 외부 디바이스를 오디오 잭에 연결하고 제거할 때 하드웨어 구성의 변경 내용을 반영할 수 있습니다. 이 동작을 사용하면 하위 서비스가 논리적으로 독립적인 하드웨어 함수로 작동할 수 있습니다. 즉, 각 하위 서비스의 전원을 켜고, 구성하고, 다른 하위 서비스와 독립적으로 종료할 수 있습니다.

각 하위 서비스에는 다음으로 구성된 내부 토폴로지가 있습니다.

  • 하위 서비스를 통과하는 데이터 경로입니다.

  • 데이터 경로를 따라 흐르는 데이터 스트림을 처리하는 토폴로지 노드(예: 볼륨 제어)입니다.

  • 하위 서비스가 동일한 어댑터의 다른 하위 서비스에 물리적으로 연결합니다.

어댑터 드라이버가 하위 서비스를 동적으로 제거하면 하위 서비스 내부 토폴로지로 바인딩된 하드웨어 리소스가 해제됩니다. 그런 다음 어댑터 드라이버는 이러한 리소스를 사용하여 다른 토폴로지로 새 하위 서비스를 만들 수 있습니다.

새 오디오 하위 서비스를 구성할 때 어댑터 드라이버는 하위 서비스의 드라이버 인터페이스를 하나 이상의 디바이스 인터페이스 클래스의 instance 등록하고 I/O 관리자는 인터페이스 클래스 및 인터페이스 인스턴스와 관련된 기호 링크를 포함하는 하나 이상의 레지스트리 항목을 추가합니다. 하위 서비스에 액세스하기 위해 사용자 모드 클라이언트는 레지스트리에서 기호 링크를 검색하여 CreateFile 함수에 호출 매개 변수로 전달합니다. 일반적으로 클라이언트는 windows API 모듈(예: Dsound.dll 또는 Wdmaud.drv) 또는 공급업체에서 제공하는 제어판 또는 오디오 유틸리티 프로그램입니다. CreateFile에 대한 자세한 내용은 Microsoft Windows SDK 설명서를 참조하세요.

미니포트 드라이버가 IUnregisterSubdevice::UnregisterSubdevice 메서드를 호출하여 하위 서비스를 제거하는 경우 PortCls 시스템 드라이버(Portcls.sys)는 I/O 관리자에게 레지스트리에서 연결된 디바이스 인터페이스에 대한 기호 링크를 제거하도록 지시합니다. 디바이스 인터페이스 제거 이벤트에 등록된 구성 요소는 인터페이스가 제거될 때 알림을 받습니다.

오디오 어댑터는 오디오 잭에 플러그를 삽입하거나 오디오 잭에서 제거할 때 미니포트 드라이버에 알리는 잭 프레즌스 회로를 포함할 수 있습니다. 사용자가 오디오 잭에 플러그를 삽입하면 어댑터 드라이버는 연결된 하위 서비스의 디바이스 인터페이스를 레지스트리에 추가합니다. 사용자가 오디오 잭에서 플러그를 제거하면 어댑터 드라이버가 레지스트리에서 해당 디바이스 인터페이스를 제거합니다.

동적 토폴로지 지원 오디오 어댑터는 다음과 같은 이점이 있습니다.

  • 사용자에게 친숙함

    데스크톱 스피커, 헤드폰 및 기타 외부 오디오 장치가 실제로 오디오 어댑터의 전면 또는 후면 패널에 오디오 잭에 연결되지 않는 한, 시스템은 이러한 디바이스를 사용 가능한 오디오 애플리케이션에 제공하지 않습니다.

  • 전력 효율

    사용자가 오디오 잭에서 플러그를 제거하면 드라이버는 해당 잭을 서비스하는 어댑터 회로의 일부를 전원을 낮출 수 있습니다.

  • 구성 가능

    하위 서비스를 제거한 후 드라이버는 하위 서비스 내부 토폴로지로 바인딩된 하드웨어 리소스를 사용하여 다른 토폴로지로 새 하위 서비스를 만들 수 있습니다.