Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Клиент обращается к звуковому устройству через набор интерфейсов устройств , которые поставщик указывает в INF-файле адаптера. Интерфейсы устройств, указанные в INF-файле, имеют однозначное соответствие с подчиненными устройствами, создаваемыми драйвером адаптера при инициализации устройства (см. раздел "Создание подустройств). INF-файл для каждого интерфейса устройства указывает значение записи FriendlyName, которое доступно в пользовательском режиме в ключе реестра интерфейса.
В архитектуре потоковой передачи ядра категории топологий (см. KSPROPERTY_TOPOLOGY_CATEGORIES) представляют классы интерфейса устройства.
В следующей таблице перечислены категории топологии, которые звуковые адаптеры, скорее всего, используются для описания возможностей их вложенных элементов.
| Категория | Описание |
|---|---|
| Категория_акустического_эха_отмена | Звуковое устройство, которое может выполнять акустическое эхоподавление (см. эффекты захвата DirectSound), регистрируется в этой категории. |
| Категория звука KSCATEGORY_AUDIO | Все звуковые устройства регистрируются в этой категории. |
| KSCATEGORY_CAPTURE | Звуковое устройство, которое может записывать поток данных, регистрируется в этой категории. |
| KSCATEGORY_DATATRANSFORM | Звуковое устройство, которое выполняет преобразование данных в потоке, регистрируется в этой категории. |
| KSCATEGORY_MIXER | Звуковое устройство, которое может смешивать потоки данных, регистрируется в этой категории. |
| KSCATEGORY_RENDER | Звуковое устройство, которое может отображать поток данных, регистрируется в этой категории. |
| KSCATEGORY_SYNTHESIZER | Звуковое устройство, которое может преобразовывать сообщения MIDI в сэмплы звуковых волн или сигнал на аналоговом выходе, регистрируется в этой категории (см. Синтезаторы и приемники звуковых волн). |
| KSCATEGORY_TOPOLOGY | Драйвер топологического минипорта устройства регистрируется в этой категории. |
| KSCATEGORY_DRM_DESCRAMBLE (Категория дешифровки DRM) | Звуковое устройство, которое может раскодировать защищённый DRM аудиопоток, регистрируется в этой категории (см. Управление цифровыми правами). |
Полный список категорий топологий см. в KSCATEGORY_XXXX GUID, определенных в файлах заголовков Ks.h и Ksmedia.h.
Все звуковые устройства классифицируются в KSCATEGORY_AUDIO, но звуковое устройство также может быть классифицировано по дополнительным категориям, таким как KSCATEGORY_RENDER (для устройства отрисовки звука) или KSCATEGORY_SYNTHESIZER (для синтезатора). Для каждой категории, указанной INF-файлом для устройства, установщик Windows создает набор записей реестра для этого устройства под именем категории (см. раздел "Фабрики фильтров").
Только устройство, содержащее встроенный синтезатор, должно регистрироваться в категории KSCATEGORY_SYNTHESIZER. Обратите внимание, что эта категория исключает чистое устройство MPU-401. Чистое устройство MPU-401, которое может выводить или принимать необработанные MIDI через UART, должно регистрироваться в следующих категориях:
Категория_Аудио
KSCATEGORY_RENDER
KSCATEGORY_CAPTURE
Обратите внимание, что системный драйвер SysAudio резервирует категорию реестра KSCATEGORY_AUDIO_DEVICE исключительно для своих виртуальных звуковых устройств. Драйверы адаптеров не должны регистрировать себя в этой категории.
В следующем примере устанавливаются четыре распространенных системных интерфейса устройства, которые адаптер обычно поддерживает для звукового устройства.
Пример. Установка интерфейсов аудиоустройств
В этом примере раздел установки устройства для устройства XYZ Audio Device использует директиву INF AddInterface для установки четырех интерфейсов аудиоадаптера. В следующем примере каждая из четырех директив назначает уникальную строку ссылки интерфейсу, которую драйвер адаптера может использовать для различения экземпляров каждого класса интерфейса.
[XYZ-Audio-Device.Interfaces]
AddInterface=%KSCATEGORY_AUDIO%,%KSName_Wave%,XYZ-Audio-Device.Wave
AddInterface=%KSCATEGORY_RENDER%,%KSName_Wave%,XYZ-Audio-Device.Wave
AddInterface=%KSCATEGORY_CAPTURE%,%KSName_Wave%,XYZ-Audio-Device.Wave
AddInterface=%KSCATEGORY_TOPOLOGY%,%KSName_Topology%,XYZ-Audio-Device.Topology
Первые три директивы AddInterface указывают раздел интерфейса надстройки с именем XYZ-Audio-Device.Wave. Последний указывает раздел интерфейса надстройки с именем XYZ-Audio-Device.Topology. Каждая секция добавления интерфейса добавляет следующие записи реестра в подраздел интерфейса устройства, который в пользовательском режиме доступен в разделе реестра \DeviceClasses\<InterfaceGUID> :
Запись реестра FriendlyName указывает понятное имя для каждого интерфейса устройства.
Для работы Microsoft DirectShow требуется запись реестра CLSID, которая установлена на значение GUID прокси-сервера, указывающее, что адаптер может быть доступен и управляем системным драйвером KSProxy.
В следующем примере отображаются два раздела добавления интерфейсов, содержащие записи INF-файла, которые добавляют в реестр FriendlyName и CLSID каждого интерфейса.
[XYZ-Audio-Device.Wave]
AddReg=XYZ-Audio-Device.Wave.AddReg
[XYZ-Audio-Device.Wave.AddReg]
HKR,,FriendlyName,,%WaveDeviceName%
HKR,,CLSID,,%Proxy.CLSID%
[XYZ-Audio-Device.Topology]
AddReg=XYZ-Audio-Device.Topology.AddReg
[XYZ-Audio-Device.Topology.AddReg]
HKR,,FriendlyName,,%WaveDeviceMixerName%
HKR,,CLSID,,%Proxy.CLSID%
Ключевое слово HKR в этом примере обозначает системный путь реестра для устройства. Дополнительные сведения см. в директиве INF AddReg.
Ниже приведен раздел Strings для этого примера.
[Strings]
KSCATEGORY_AUDIO="{6994AD04-93EF-11D0-A3CC-00A0C9223196}"
KSCATEGORY_RENDER="{65E8773E-8F56-11D0-A3B9-00A0C9223196}"
KSCATEGORY_CAPTURE="{65E8773D-8F56-11D0-A3B9-00A0C9223196}"
KSCATEGORY_TOPOLOGY="{DDA54A40-1E4C-11D1-A050-405705C10000}"
Proxy.CLSID="{17CCA71B-ECD7-11D0-B908-00A0C9223196}"
WaveDeviceName="XYZ Audio Device"
WaveDeviceMixerName="XYZ Audio Device Super Mixer"
Строковое имя, указанное директивой AddInterface для интерфейса устройства KSCATEGORY_XXXXX, невозможно локализовать, так как драйвер адаптера использует то же имя, что и строковая константа. Примеры драйверов адаптеров в комплекте драйверов Windows (WDK) используют следующие строковые имена для интерфейсов аудиоустройств:
KSNAME_Wave="Wave"
KSNAME_UART="UART"
KSNAME_FMSynth="FMSynth"
KSNAME_Topology="Topology"
KSNAME_Wavetable="Wavetable"
KSNAME_DMusic="DMusic"
Для единообразия собственный драйвер должен назначить эти же имена соответствующим интерфейсам устройств. Если драйвер поддерживает дополнительные интерфейсы устройств, которые являются собственными, вы можете придумать собственные имена для этих интерфейсов. Убедитесь, что имена, которые драйвер использует, соответствуют именам в вашем INF-файле. Если строки не совпадают, настройка системы не загружает драйвер.