다음을 통해 공유


동적 오디오 하위 서비스

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

예를 들어 Intel 고화질 오디오 사양 은 오디오 코덱이라는 용어를 사용하여 HD 오디오 링크 인터페이스를 통해 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는 포트 드라이버가 이후에 정보를 사용하여 KSPROPERTY_PIN_PHYSICALCONNECTION 속성 요청에 응답할 수 있도록 PcRegisterPhysicalConnectionXxx 호출의 정보를 저장합니다. 어댑터의 토폴로지에서 하위 서비스를 삭제할 때 드라이버는 하위 서비스의 물리적 연결을 토폴로지의 해당 부분에 등록 취소해야 합니다. 하위 서비스 물리적 연결을 등록 취소하지 않으면 메모리 누수가 발생할 수 있습니다. PortCls는 Windows 2000 이상에서 PcRegisterXxx 루틴을 지원합니다.

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

동적 토폴로지 관리

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

동적 오디오 하위 장치에 대한 잭 설명