Underordnade AVStream-enheter

Det här avsnittet gäller endast för Microsoft Windows Server 2003 och tidigare operativsystem om DirectX 9.0 eller senare är installerat på den plattformen.

AVStream kan fungera som en busenumerator för enheten och skapa en underordnad komponent för varje nyckel i Enum-grenen. Det gör du genom att placera en Enum-gren i registret under enhetsnyckeln.

Mer specifikt i avsnittet AddReg i drivrutinens INF-fil tillhandahåller leverantören ett värde pnpid av typen REG_SZ för varje post under Enum. AVStream använder det här strängvärdet för att konstruera ett PnP-maskinvaru-ID (Plug and Play) för varje enskild underenhet.

I tidigare versioner än DirectX 9.0 skapar AVStream ett underordnat maskinvaru-ID för enheten i formatet "AVStream\<pnpid>" (där <pnpid> är värdet för pnpid för den specifika enheten).

Leverantören anger till exempel följande i avsnittet AddReg i INF-filen:

[MyTVDevice.AddReg]
HKR,"ENUM\CrossbarDevice",pnpid,,"MyCrossbar"
HKR,"ENUM\TunerDevice",pnpid,,"MyTuner"

Därmed skapar AVStream två barndeenheter med följande enhets-ID:n:

AVStream\MyCrossbar

AVStream\MyTuner

För att lösa möjliga tvetydigheter från två olika underordnade enheter som anger samma pnpid-värde ändrar DirectX 9.0 och senare de ID:er som rapporteras för varje underordnad enhet. För varje maskinvaru-ID som rapporteras av den överordnade enheten skapar AVStream ett ID för den underordnade enheten i följande formulär:

AVStream\<pnpid>#<ändrad överordnad maskinvaru-ID>

Det ändrade överordnade maskinvaru-ID:t är det överordnade maskinvaru-ID:t med varje omvänt snedstreck (\) som ersätts av taltecknet (#).

Om den resulterande strängen är för lång avkortar AVStream ID-strängen vid MAX_DEVICE_ID_LEN tecken, inklusive NULL-terminator. I Windows Server 2003 är den här gränsen inställd på 200 tecken i cfgmgr32.h.

En överordnad enhet rapporterar till exempel följande maskinvaru-ID:n:

PCI\VEN_XXXX&DEV_YYYY&SUBSYS_ZZZZZZZZ&REV_VV

PCI\VEN_XXXX&DEV_YYYY&SUBSYS_ZZZZZZZZ

För en enhet med en pnpid-nyckel av MyCrossbar skapar AVStream följande underordnade enhetsmaskinvaru-ID:n:

AVStream\MyCrossbar#PCI#VEN_XXXX&DEV_YYYY&SUBSYS_ZZZZZZZZ&REV_VV

AVStream\MyCrossbar#PCI#VEN_XXXX&DEV_YYYY&SUBSYS_ZZZZZZZZ

AVStream använder samma process för kompatibilitets-ID:n som rapporteras av den överordnade enheten. AVStream skapar ett kompatibelt ID för den underordnade enheten i formatet:

AVStream\<pnpid>#<ändrat kompatibelt överordnat ID>

Namnändrings- och längdreglerna för kompatibla ID:er är identiska med dem för maskinvaru-ID:er.

Om den överordnade enheten som tidigare beskrivits rapporterar följande kompatibla ID:n, till exempel:

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

den underordnade enheten MyCrossbar skulle rapportera via AVStream följande kompatibla ID:n:

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

Obs I DirectX 9.0 och senare rapporteras det äldre maskinvaru-ID:t, AVStream\<pnpid>, fortfarande som det lägst prioriterade kompatibla ID:t. Därför fortsätter äldre drivrutiner att fungera oförändrade på dessa plattformar. Från och med DirectX 9.0-versionen rekommenderar Microsoft dock att leverantörer som skriver nya eller reviderade drivrutiner som utnyttjar AVStream-klassbussuppräknaren använder de nya maskinvaru-ID-formaten. Drivrutiner kan stödja plattformar som kör tidigare versioner av AVStream genom att inkludera det gamla ID:t i listan med kompatibla ID:er i INF-filen.