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


Идентификаторы устройств AV/C

Когда пользователь подключает устройство AV/C к компьютеру, Avc.sys перечисляет активные субблоки на устройстве и создает для них строки идентификатора. Существует идентификатор устройства для каждой активной подединицы в AV/C устройстве. Если в устройстве AV/C нет активных вложенных элементов, Avc.sys создает идентификатор устройства для самого устройства AV/C.

Формат полей идентификаторов устройств для одноранговых субблоков

AVC\Vendor&Model&SubunitType&SubunitID

Формат полей идентификатора устройства для виртуальных подмодулей:

VAVC\Vendor&Model&SubunitType&SubunitID

В полях, где используются числа, числа преобразуются в шестнадцатеричные, а альфа-символы преобразуются в верхний регистр. Нет начальных нулей. Идентификатор устройства, указанный в INF-файле драйвера, должен соответствовать этому формату. Все числовые поля в идентификаторах оборудования и совместимых идентификаторах помечены следующим образом (за исключением указанных ниже):

  • Поставщик: VEN_ (если текст поставщика недоступен)

  • Модель: MOD_ (если текст модели недоступен)

  • SubunitType: TYP_

  • SubunitID: ID_

Avc.sys создает объект устройства для каждой активной подъединки, которая присутствует на внешнем устройстве AV/C. Сброс шины IEEE 1394 инициируется всякий раз при добавлении или удалении устройства AV/C из шины IEEE 1394. Avc.sys затем повторно сканирует активные подсистемы на всех подключенных устройствах AV/C. Повторный процесс перечисления позволяет устройству переконфигурироваться для добавления или удаления подъединений без необходимости перезагрузки Avc.sys в Windows при каждом переключении режима работы устройства AV/C. Например, эта функция применяется при переключении камкордера DV между режимом камеры и режимом VTR. Следовательно, драйверы подблоков загружаются и выгружаются только по мере добавления и удаления соответствующих активных подчиненных блоков.

Avc.sys не может различать несколько подъединиц одного и того же SubunitType, поэтому добавление и удаление этих подъединиц загружает и выгружает соответствующий драйвер подъединицы с наибольшим значением SubunitID.

У каждого объекта устройства subunit есть один или два аппаратных идентификатора и несколько совместимых идентификаторов. Поставщик должен предоставить один или несколько из этих аппаратных или совместимых идентификаторов, описанных ниже в INF-файле для их драйвера субмодуля. Windows использует эти идентификаторы устройств для поиска подходящих драйверов для загрузки для каждой подсоединений при первом подключении устройства к компьютеру. Вы можете изучить предоставленные Корпорацией Майкрософт файлы 61883.inf, Msdv.inf и Mstape.inf , например идентификаторы оборудования и совместимых устройств для устройств AV/C. Дополнительные сведения о реализации INF-файлов см. в разделах INF-файлов и директивах INF-файла.

Ниже приведены отдельные элементы строки идентификатора устройства:

Продавец

Если текст имени поставщика присутствует в корневом каталоге возможностей модуля конфигурации IEEE 1394, в поле "Поставщик " используется текст имени поставщика. Рассмотрим пример.

AVC\Microsoft&Model&SubunitType&SubunitID

В противном случае в поле "Поставщик " используется уникальный номер поставщика (как назначено ассоциацией торговли IEEE 1394). В следующем примере "50F2" — это номер поставщика Microsoft 1394TA:

AVC\VEN_50F2&Model&SubunitType&SubunitID

Если текст имени поставщика отсутствует, то числовое значение получается из записи Module_Vendor_ID в корневом каталоге конфигурации IEEE 1394 Configuration ROM. Ключ архитектуры регистра команд и состояния (CSR) для этой оперативной записи имеет значение 0316 (шестнадцатеричный код), а остальные 24 бита составляют числовую запись Module_Vendor_ID.

модели

Если текст имени модели присутствует в возможностях единиц конфигурации IEEE 1394, в поле "Модель " используется текст имени модели. Рассмотрим пример.

AVC\Microsoft&DVCamcorder&SubunitType&SubunitId

В противном случае номер модели используется в поле "Модель ". Рассмотрим пример.

AVC\Microsoft&MOD_0&SubunitType&SubunitID

Используется текст модели из каталога единиц конфигурации 1394, который имеет приоритет для записей каталога единиц. Порядок предпочтений выглядит следующим образом:

1.Числовой идентификатор из каталога единиц.

1. Текст модели из корневой директории.

1.Идентификатор модели из корневого каталога.

SubunitType

При наличии поле SubunitType извлекается из адреса подсоединения и преобразуется в строку шестнадцатеричных значений для каждого байта. Существует несколько байтов только в том случае, если тип subunit был расширен. Как правило, начальный байт извлекается из пяти наиболее значимых битов байта адреса, как описано в разделе 5.3.3 общей спецификации набора команд AV/C, ред. 3.0.

Например: AVC\VEN_50F2&MOD_0&TYP_4&SubunitID

Для получения списка типов субъектов, которые поддерживает Avc.sys, и их соответствующих числовых значений см. AvcSubunitType.

SubunitID

Если доступно поле SubunitType , также доступно поле SubunitID . Когда Avc.sys запрашивает устройство AV/C о его информации о субблоках, устройство отвечает количеством субблоков для каждого типа. Это отсчет с нуля используется для создания идентификатора устройства для каждой субъединицы. Спецификация адреса блока также позволяет расширить поле SubunitID, но этот аспект скрыт от драйвера блока (и от вас, автора INF-файла). Нумерация экземпляров начинается с нуля и используется во всех случаях. Например, если поле SubunitID расширено для поддержки 270 подмодулей, 270-й подмодуль имеет идентификатор подмодуля 10D (269 в десятичной системе). Рассмотрим пример.

AVC\Microsoft&MOD_0&TYP_4&ID_10D

Для единиц AV/C, которые не предоставляют SubunitType или SubunitID, строка идентификатора устройства состоит только из полей поставщика и модели без конечных амперсандов (&>).