Дочерние устройства AVStream
Этот раздел относится к операционным системам Microsoft Windows Server 2003 и более ранних версий, только если на этой платформе установлен DirectX 9.0 или более поздней версии.
AVStream может функционировать как перечислитель шины для устройства, создавая дочернее устройство для каждого ключа в ветви Перечисления . Для этого поместите ветвь Перечисления в реестре под разделом устройства.
В частности, в разделе AddReg INF-файла драйвера поставщик предоставляет значение pnpid типа REG_SZ для каждой записи в перечислении. AVStream использует это строковое значение для создания идентификатора оборудования Plug and Play (PnP) для каждого отдельного дочернего устройства.
В выпусках, предшествующих DirectX 9.0, AVStream создает идентификатор дочернего устройства в виде AVStream\<pnpid> (где <pnpid> — это значение pnpid для конкретного устройства).
Например, поставщик указывает следующее в разделе AddReg INF-файла:
[MyTVDevice.AddReg]
HKR,"ENUM\CrossbarDevice",pnpid,,"MyCrossbar"
HKR,"ENUM\TunerDevice",pnpid,,"MyTuner"
Соответственно, AVStream создает два дочерних устройства со следующими идентификаторами устройств:
AVStream\MyCrossbar
AVStream\MyTuner
Чтобы устранить возможную неоднозначность двух разных дочерних устройств, указывающих одно и то же значение pnpid , DirectX 9.0 и более поздних версий изменит идентификаторы, сообщаемые для каждого из дочерних устройств. Для каждого идентификатора оборудования, предоставленного родительским устройством, AVStream создает идентификатор дочернего устройства в следующей форме:
AvStream\<pnpid>#<modified parent hardware ID>
Измененный родительский идентификатор оборудования — это идентификатор родительского оборудования с каждым символом обратной косой черты (\), замененным знаком номера (#).
Если результирующая строка слишком длинна, AVStream завершает строку идентификатора MAX_DEVICE_ID_LEN символами, включая признак конца NULL . В Windows Server 2003 это ограничение равно 200 символам в cfgmgr32.h.
Например, родительское устройство сообщает следующие идентификаторы оборудования:
PCI\VEN_XXXX&DEV_YYYY&SUBSYS_ZZZZZZZZ&REV_VV
PCI\VEN_XXXX&DEV_YYYY&SUBSYS_ZZZZZZZZ
Для устройства с ключом pnpidMyCrossbar AVStream создает следующие идентификаторы оборудования дочернего устройства:
AVStream\MyCrossbar#PCI#VEN_XXXX&DEV_YYYY&SUBSYS_ZZZZZZZZ&REV_VV
AVStream\MyCrossbar#PCI#VEN_XXXX&DEV_YYYY&SUBSYS_ZZZZZZZZ
AVStream использует тот же процесс для совместимых идентификаторов, сообщаемых родительским устройством. AVStream создает совместимый идентификатор для дочернего устройства в формате :
AVStream\<pnpid>#<измененный родительский совместимый идентификатор>
Правила изменения имени и длины для совместимых идентификаторов идентичны правилам для идентификаторов оборудования.
Например, если родительское устройство, описанное ранее, сообщает следующие совместимые идентификаторы:
PCI\VEN_XXXX&DEV_YYYY&REV_VV
PCI\VEN_XXXX&DEV_YYYY
PCI\VEN_XXXX&CC_ZZZZZZ
PCI\VEN_XXXX&CC_ZZZZ
PCI\VEN_XXXX
PCI\CC_ZZZZZZ
PCI\CC_ZZZZ
Дочернее устройство MyCrossbar будет сообщать через AVStream следующие совместимые идентификаторы:
AVStream\MyCrossbar#PCI#VEN_XXXX&DEV_YYYY&REV_VV
AVStream\MyCrossbar#PCI#VEN_XXXX&DEV_YYYY
AVStream\MyCrossbar#PCI#VEN_XXXX&CC_ZZZZZZ
AVStream\MyCrossbar#PCI#VEN_XXXX&CC_ZZZZ
AVStream\MyCrossbar#PCI#VEN_XXXX
AVStream\MyCrossbar#PCI#CC_ZZZZZZ
AVStream\MyCrossbar#PCI#CC_ZZZZ
AVStream\MyCrossbar
Примечание В DirectX 9.0 и более поздних версиях устаревший идентификатор оборудования AVStream\<pnpid> по-прежнему указывается как идентификатор, совместимый с самым низким рангом. В результате устаревшие драйверы продолжают работать на этих платформах без изменений. Однако в выпуске DirectX 9.0 корпорация Майкрософт рекомендует поставщикам, которые пишут новые или измененные драйверы, использующие перечислитель шины класса AVStream, использовать новые форматы идентификаторов оборудования. Драйверы могут поддерживать платформы под управлением более ранних версий AVStream, включив старый идентификатор в список совместимых идентификаторов в INF-файле.