여러 오디오 하위 서비스
다기능 디바이스에는 두 개 이상의 오디오 하위 서비스가 포함될 수 있습니다. 예를 들어 어댑터 드라이버는 8개 채널 오디오 디바이스를 4개의 스테레오 채널로 시스템에 노출할 수 있습니다. 이러한 방식으로 여러 하위 서비스를 노출하는 어댑터 드라이버를 작성할 때는 하위 서비스에 대한 정보를 드라이버의 시작 시퀀스 및 INF 파일에 통합해야 합니다.
먼저 어댑터 드라이버는 시작 시퀀스 중에 각 스테레오 하위 서비스를 포트/미니포트 드라이버 쌍의 별도 instance 노출해야 합니다. Microsoft WDK(Windows 드라이버 키트)의 여러 샘플 어댑터는 시스템 포트 드라이버, 미니포트 드라이버 및 이 쌍에 바인딩할 리소스 집합으로 구성된 하위 서비스를 만들고 등록하는 함수를 구현 InstallSubdevice
합니다. 시작하는 동안 드라이버는 각 스테레오 하위 서비스에 대해 해당 함수를 InstallSubdevice
한 번 호출하고 각 포트/미니포트 드라이버 쌍에 대해 고유한 이름을 지정해야 합니다.
또한 이 쌍에 할당하는 고유 이름은 드라이버의 INF 파일에 지정한 KSNAME 문자열과 일치해야 합니다. 예를 들어 드라이버는 아래와 같이 시작하는 동안 두 하위 서비스에 이름 "Wave1" 및 "Wave2"를 할당할 수 있습니다.
InstallSubdevice(..., "Wave1",...);
InstallSubdevice(..., "Wave2",...);
이 경우 INF 파일에 동일한 이름이 표시됩니다.
KSNAME_Wave1="Wave1"
KSNAME_Wave2="Wave2"
INF 파일은 다음 이름을 포함하는 인터페이스를 추가해야 합니다.
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_Wave1%,Test.Interface.Wave1
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_Wave2%,Test.Interface.Wave2
이러한 인터페이스에 대한 정보를 레지스트리에 추가하려면 INF 파일에서 AddReg 섹션(INF AddReg 지시문 참조)을 만들어야 합니다.
[Test.Interface.Wave1]
AddReg=Test.I.Wave1.AddReg
[Test.Interface.Wave2]
AddReg=Test.I.Wave2.AddReg
AddReg 섹션에서는 각 하위 서비스에 대한 레지스트리 항목도 지정해야 합니다.
[Test.I.Wave1.AddReg]
HKR,,CLSID,,%Proxy.CLSID%
HKR,,FriendlyName,,%Test.Wave1.szName%
[Test.I.Wave2.AddReg]
HKR,,CLSID,,%Proxy.CLSID%
HKR,,FriendlyName,,%Test.Wave2.szName%
마지막으로, INF 파일은 이러한 하위 서비스에 대한 친숙한 이름을 정의해야 합니다.
Test.Wave1.szName="Punch"
Test.Wave2.szName="Judy"
친숙한 이름이 오디오 제어판에 표시되어 하위 서비스를 식별합니다.