Поделиться через


Закрепление свойства категории

Аудиодрайверы модели драйвера 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).

Операционная система использует категории контактов для связывания понятных имен с конечными звуковыми устройствами. Дополнительные сведения о том, как связать понятные имена с конечными звуковыми устройствами, см. в разделе Понятные имена для конечных звуковых устройств.