동적 오디오 하위 서비스

일부 오디오 어댑터는 런타임에 내부 토폴로지의 동적으로 변경할 수 있습니다. Portcls.sys(PortCls 시스템 드라이버)에서 시스템 제공 기능을 사용하여 어댑터 드라이버는 동적으로 구성 가능한 오디오 하드웨어에 대한 소프트웨어 지원을 제공할 수 있습니다.

예를 들어 Intel 고화질 오디오 사양 은 오디오 코덱이라는 용어를 사용하여 HD Audio Link 인터페이스를 통해 HD 오디오(고화질 오디오) 컨트롤러에 연결하는 통합 오디오 어댑터를 참조합니다. 일반적인 오디오 코덱은 잭 프레즌스 감지를 지원합니다. 플러그를 잭에 삽입하거나 잭에서 제거하면 하드웨어에서 인터럽트를 생성하여 드라이버에 하드웨어 구성 변경 사항을 알립니다. 예를 들어 드라이버는 헤드폰의 오디오 하위 서비스를 나타내는 KS 필터 를 만들어 헤드폰 잭에 플러그를 삽입하는 데 응답합니다. 드라이버는 필터에 하드웨어 리소스를 할당하고(예: 헤드폰에 볼륨 제어 및 디지털-아날로그 변환기 또는 DAC가 필요할 수 있습니다) 필터를 오디오 디바이스로 등록합니다. 사용자가 헤드폰을 분리하면 드라이버가 리소스를 해제하고 필터를 삭제한 다음 레지스트리에서 제거하여 응답합니다.

이 동작은 오디오 애플리케이션이 등록된 오디오 디바이스를 확인할 때 현재 연결되어 있는 디바이스만 찾도록 합니다. 디바이스가 분리된 경우 레지스트리에 표시되지 않습니다.

Windows Vista, Windows Server 2003 SP1(서비스 팩 1) 및 WINDOWS XP sp2(서비스 팩 2)에서 PortCls는 IUnregisterSubdeviceIUnregisterPhysicalConnection 인터페이스를 지원합니다. 오디오 어댑터 드라이버는 이 두 인터페이스를 사용하여 더 이상 사용되지 않는 오디오 하위 서비스를 삭제합니다. Windows Server 2003 및 Windows XP를 포함한 이전 버전의 Windows는 이러한 인터페이스를 지원하지 않습니다. 이러한 이전 버전의 Windows에서는 하위 서비스를 만들 수 있지만 삭제할 수는 없습니다. 하위 서비스가 만들어지면 어댑터 드라이버 개체의 수명 동안 존재합니다.

IUnregisterSubdevice 인터페이스에는 어댑터 드라이버가 PcRegisterSubdevice 루틴에 대한 이전 호출을 통해 드라이버가 등록한 하위 서비스를 "등록 취소"하는 데 사용할 수 있는 단일 메서드가 포함되어 있습니다.

IUnregisterSubdevice::UnregisterSubdevice

IUnregisterPhysicalConnection 인터페이스에는 어댑터 드라이버가 하위 서비스 간의 물리적 연결을 등록 취소하는 데 사용할 수 있는 세 가지 메서드가 포함되어 있습니다.

IUnregisterPhysicalConnection::UnregisterPhysicalConnection

IUnregisterPhysicalConnection::UnregisterPhysicalConnectionFromExternal

IUnregisterPhysicalConnection::UnregisterPhysicalConnectionToExternal

이러한 메서드는 드라이버가 PcRegisterPhysicalConnection, PcRegisterPhysicalConnectionFromExternalPcRegisterPhysicalConnectionToExternal 루틴에 대한 이전 호출을 통해 등록한 연결을 제거합니다. PortCls는 PcRegisterPhysicalConnectionXxx 호출의 정보를 저장하므로 포트 드라이버는 이후에 정보를 사용하여 KSPROPERTY_PIN_PHYSICALCONNECTION 속성 요청에 응답할 수 있습니다. 어댑터의 토폴로지에서 하위 서비스를 삭제할 때 드라이버는 하위 서비스의 물리적 연결을 토폴로지의 해당 부분에 등록 취소해야 합니다. 하위 서비스 물리적 연결을 등록 취소하지 않으면 메모리 누수의 원인이 될 수 있습니다. PortCls는 Windows 2000 이상에서PcRegister Xxx 루틴을 지원합니다.

이 섹션의 다음 topics 동적 토폴로지를 사용하는 어댑터에 대한 드라이버 지원을 구현하는 방법을 설명합니다.

동적 토폴로지 관리

동적 하위 서비스에 대한 드라이버 지원

동적 오디오 하위 서비스에 대한 잭 설명