Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Ett maskinvaru-ID är en leverantörsdefinierad identifieringssträng som Windows använder för att matcha en enhet med ett drivrutinspaket. Ett maskinvaru-ID identifierar en enhet. Det anger att alla drivrutinspaket som deklarerar att det kan fungera med en enhet som har det ID:t för en viss funktionalitet.
I de flesta fall har en enhet mer än ett maskinvaru-ID. Vanligtvis sorteras en lista över maskinvaru-ID:n från de flesta till minst lämpliga för en enhet. Till exempel kan listan över konceptuella maskinvaru-ID:n för en enhet se ut så här:
<Product X made by company Y with firmware revision Z>
<Product X made by company Y that is a device of type W>
Där de faktiska maskinvaru-ID:na skulle representera dessa begrepp med hjälp av strängar som följer formatkraven för ett maskinvaru-ID.
Skapa ett maskinvaru-ID för en enhet
Maskinvaru-ID:n rapporteras till Plug and Play Manager (PnP) av en enhets enumeratör, det vill säga dess bussdrivrutin. När en författare av en drivrutin för en buss behöver skapa ett nytt maskinvaru-ID för en enhet som rapporteras till PnP använder den vanligtvis något av följande generiska format:
<enumerator>\<enumerator-specific-device-ID>
Det här formatet är det vanligaste för enskilda PnP-enheter som rapporteras till Plug and Play-hanteraren av en enda uppräknare.
\*<generic-device-ID>
Asterisken anger att mer än en uppräknare stöder enheten, till exempel ISAPNP och BIOS.
<device-class-specific-ID>
Mer information finns i allmänna identifierare.
En befintlig enhetsklass med en egen etablerad namngivningskonvention kan använda ett anpassat format. Information om deras maskinvaru-ID-format finns i maskinvaruspecifikationen för sådana bussar.
Antalet tecken i ett maskinvaru-ID, exklusive en NULL-avslutare, måste vara mindre än MAX_DEVICE_ID_LEN. Den här begränsningen gäller för summan av längden på alla fält och eventuella \\ fältavgränsare i ett maskinvaru-ID. Mer information finns i avsnittet Åtgärdi IRP_MN_QUERY_ID.
Maskinvaru-ID för rot-enumererade enheter
Rotuppräknade enheter är speciella eftersom de kan skapas med hjälp av API:er där ett maskinvaru-ID kan tillhandahållas. Rotuppräknade enheter med maskinvaru-ID:t som delar allmänna namnområden, till exempel ROOT\SYSTEM, kan vara i konflikt. Resultatet är en gul varningstriangel i Enhetshanteraren vid uppdatering av Windows.
Du kan förhindra det här felet genom att använda ett unikt namnområde för varje drivrutin som har en rotuppräknad enhet. För en USB- eller systemenhet, använd ROOT\[COMPANYNAME]\[DEVICENAME] i stället för ROOT\USB eller ROOT\SYSTEM. Kontrollera sedan innan du installerar om devnode redan finns.
Hämta listan över maskinvaru-ID:n för en enhet
Följ dessa steg för att hitta listan över maskinvaru-ID:n för en enhet:
- I Windows-sökning anger du och väljer Enhetshanteraren.
- Leta upp enheten i trädet i Enhetshanteraren.
- Högerklicka på enheten och välj Egenskaper.
- Välj fliken Detaljer.
- Som Egenskap väljer du Maskinvaru-ID eller Kompatibla ID:t.
Du kan också hämta listan över maskinvaru-ID:n programmatiskt genom att hämta egenskapen DEVPKEY_Device_HardwareIds på en enhet. Den egenskapen kan till exempel hämtas med API:er som IoGetDevicePropertyData, SetupDiGetDevicePropertyeller CM_Get_DevNode_Property.
Listan över maskinvaru-ID:t som den här rutinen hämtar är ett REG_MULTI_SZ värde. Det maximala antalet tecken i en maskinvarulista, inklusive en NULL-avslutare efter varje maskinvaru-ID och en slutlig NULL-avslutare, är REGSTR_VAL_MAX_HCID_LEN. Det maximala antalet ID:ar i en lista över maskinvaru-ID:t är 64.
Exempel på maskinvaru-ID:t
Här är ett exempel på en generisk identifierare för en PnP-enhet:
root\*PNP0F08
Här är ett exempel på en identifierare för en PCI-enhet:
PCI\VEN_1000&DEV_0001&SUBSYS_00000000&REV_02