Закрепление свойства категории
Аудиодрайверы модели драйвера Microsoft Windows (WDM) для USB-звуковых устройств, звуковых устройств IEEE 1394 и звуковых устройств во внутренних шинах представляют свои устройства в виде фильтров KS с контактами. Драйвер звука WDM поддерживает одну KSPIN_DESCRIPTOR структуру для каждого поддерживаемого типа контактов. В этой структуре драйвер хранит свойства KSPROPSETID_Pin типа контакта. Среди этих свойств — свойство KSPROPERTY_PIN_CATEGORY . Запрос этого свойства получает GUID категории закрепления KS из элемента Category структуры KSPIN_DESCRIPTOR. Этот GUID указывает общую категорию функциональных возможностей, которые предоставляет закрепление. Например, конкретный GUID категории контактов, KSNODETYPE_HEADPHONES, определяет контакт в качестве выходного разъема для наушников.
В случае волнового звукового устройства на внутренней шине (например, PCI) драйвер порта PortCls содержит массив дескрипторов контактов, каждый из которых описывает тип контакта в фильтре, представляющем устройство. Каждый дескриптор закрепления представляет собой PCPIN_DESCRIPTOR структуру, содержащую внедренную KSPIN_DESCRIPTOR структуру с GUID категории контактов. При получении запроса KSPROPERTY_PIN_CATEGORY свойства от клиента драйвер порта получает GUID категории контактов из дескриптора пин-кода драйвера miniport для указанного типа контакта. Дополнительные сведения о дескрипторах пин-кодов см. в разделе Фабрики пин-кодов.
Звуковое устройство USB имеет некоторое количество терминалов, через которые цифровые потоки и аналоговые сигналы могут входить и выходить из него. При создании фильтра KS для представления аудиоустройства USB системный драйвер класса USBAudio преобразует терминалы на устройстве в контакты на фильтре. Файл заголовка Ksmedia.h определяет сопоставление для каждого идентификатора типа терминала USB с GUID категории контактов KS. В следующих шести таблицах показаны идентификаторы типов терминала и соответствующие им guid категории контактов.
Типы терминалов входных данных
Идентификатор usb-терминала | ИДЕНТИФИКАТОР GUID категории контактов KS |
---|---|
0x0201 |
KSNODETYPE_MICROPHONE |
0x0202 |
KSNODETYPE_DESKTOP_MICROPHONE |
0x0203 |
KSNODETYPE_PERSONAL_MICROPHONE |
0x0204 |
KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE |
0x0205 |
KSNODETYPE_MICROPHONE_ARRAY |
0x0206 |
KSNODETYPE_PROCESSING_MICROPHONE_ARRAY |
Типы выходных терминалов
Идентификатор usb-терминала | ИДЕНТИФИКАТОР GUID категории контактов KS |
---|---|
0x0301 |
KSNODETYPE_SPEAKER |
0x0302 |
KSNODETYPE_HEADPHONES |
0x0303 |
KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO |
0x0304 |
KSNODETYPE_DESKTOP_SPEAKER |
0x0305 |
KSNODETYPE_ROOM_SPEAKER |
0x0306 |
KSNODETYPE_COMMUNICATION_SPEAKER |
0x0307 |
KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER |
Двунаправленные типы терминалов
Идентификатор usb-терминала | ИДЕНТИФИКАТОР GUID категории контактов KS |
---|---|
0x0401 |
KSNODETYPE_HANDSET |
0x0402 |
KSNODETYPE_HEADSET |
0x0403 |
KSNODETYPE_SPEAKERPHONE_NO_ECHO_REDUCTION |
0x0404 |
KSNODETYPE_ECHO_SUPPRESSING_SPEAKERPHONE |
0x0405 |
KSNODETYPE_ECHO_CANCELING_SPEAKERPHONE |
Типы терминалов телефонии
Идентификатор usb-терминала | ИДЕНТИФИКАТОР GUID категории контактов KS |
---|---|
0x0501 |
KSNODETYPE_PHONE_LINE |
0x0502 |
KSNODETYPE_TELEPHONE |
0x0503 |
KSNODETYPE_DOWN_LINE_PHONE |
Типы внешних терминалов
Идентификатор usb-терминала | ИДЕНТИФИКАТОР GUID категории контактов KS |
---|---|
0x0601 |
KSNODETYPE_ANALOG_CONNECTOR |
0x0602 |
KSNODETYPE_DIGITAL_AUDIO_INTERFACE |
0x0603 |
KSNODETYPE_LINE_CONNECTOR |
0x0604 |
KSNODETYPE_LEGACY_AUDIO_CONNECTOR |
0x0605 |
KSNODETYPE_SPDIF_INTERFACE |
0x0606 |
KSNODETYPE_1394_DA_STREAM |
0x0607 |
KSNODETYPE_1394_DV_STREAM_SOUNDTRACK |
Типы терминалов внедренных функций
Идентификатор usb-терминала | ИДЕНТИФИКАТОР GUID категории контактов KS |
---|---|
0x0701 |
KSNODETYPE_LEVEL_CALIBRATION_NOISE_SOURCE |
0x0702 |
KSNODETYPE_EQUALIZATION_NOISE |
0x0703 |
KSNODETYPE_CD_PLAYER |
0x0704 |
KSNODETYPE_DAT_IO_DIGITAL_AUDIO_TAPE |
0x0705 |
KSNODETYPE_DCC_IO_DIGITAL_COMPACT_CASSETTE |
0x0706 |
KSNODETYPE_MINIDISK |
0x0707 |
KSNODETYPE_ANALOG_TAPE |
0x0708 |
KSNODETYPE_PHONOGRAPH |
0x0709 |
KSNODETYPE_VCR_AUDIO |
0x070A |
KSNODETYPE_VIDEO_DISC_AUDIO |
0x070B |
KSNODETYPE_DVD_AUDIO |
0x070C |
KSNODETYPE_TV_TUNER_AUDIO |
0x070D |
KSNODETYPE_SATELLITE_RECEIVER_AUDIO |
0x070E |
KSNODETYPE_CABLE_TUNER_AUDIO |
0x070F |
KSNODETYPE_DSS_AUDIO |
0x0710 |
KSNODETYPE_RADIO_RECEIVER |
0x0711 |
KSNODETYPE_RADIO_TRANSMITTER |
0x0712 |
KSNODETYPE_MULTITRACK_RECORDER |
0x0713 |
KSNODETYPE_SYNTHESIZER |
Дополнительные сведения об идентификаторах типов терминалов USB см. в разделе Определение класса устройства универсальной последовательной шины для типов терминалов (выпуск 1.0), которое доступно на веб-сайте ФОРУМА разработчиков USB .
Все guid категории контактов в предыдущих таблицах имеют имена параметров формы KSNODETYPE_XXX. Обратите внимание, что идентификаторы GUID типа узла KS также имеют имена параметров KSNODETYPE_XXX . Это соглашение об именовании создает некоторую вероятность путаницы между GUID категории контактов и типами GUID узлов. К счастью, почти каждый параметр KSNODETYPE_XXX определяет категорию контактов или тип узла, но не оба типа. Исключением из правила является KSNODETYPE_SYNTHESIZER, который может определить категорию контактов или тип узла в зависимости от контекста. Список идентификаторов GUID типа узлов см. в разделе Узлы топологии аудио.
При создании экземпляра звукового устройства USB системный драйвер класса USBAudio запрашивает у устройства внутреннюю топологию, включая терминалы. Используя эти сведения, драйвер USBAudio создает фильтр для представления устройства и преобразует каждый терминал в соответствующий контакт на фильтре. Во время этого процесса драйвер преобразует каждый идентификатор типа терминала USB в соответствующий GUID категории контактов KS, который является одним из идентификаторов GUID в предыдущих таблицах. Драйвер создает структуру KSPIN_DESCRIPTOR для описания контакта и записывает GUID категории контактов в структуру.
Драйвер miniport PortCls не обязательно использует только идентификаторы GUID категории, которые отображаются в предыдущих шести таблицах. Например, драйвер может определить и использовать guid пользовательской категории контактов для описания типа контакта, функциональная категория которого выходит за рамки категорий в таблицах. Естественно, пользовательский GUID категории контактов полезен только для клиентов, которые распознают GUID.
Аудиосистема поддерживает список GUID категории контактов и связанные с ними понятные имена в системном реестре. Установщик класса мультимедиа копирует пары GUID-имя в реестр из файла Ks.inf, расположенного во вложенной папке Inf папки main Windows (например, C:\Windows\Inf\Ks.inf).
Операционная система использует категории контактов для связывания понятных имен с конечными звуковыми устройствами. Дополнительные сведения о том, как связать понятные имена с конечными звуковыми устройствами, см. в разделе Понятные имена для конечных звуковых устройств.