Kommentar
Å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.
Varje bussdrivrutin måste skapa ett ramverksenhetsobjekt när den upptäcker att en underordnad enhet är ansluten till en överordnad enhet. Den överordnade enheten är vanligtvis en buss, men det kan också vara en multifunktionsenhet för vilken varje funktion kräver en separat uppsättning drivrutiner (till exempel ett ljudkort som stöder digitalt ljud och MIDI). Enhetsobjekten som bussdrivrutiner skapar kallas fysiska enhetsobjekt (PDOs) eftersom var och en representerar en faktisk anslutning av en maskinvara (underordnad) till en annan (överordnad).
Processen att identifiera och rapportera de enheter som är anslutna till en buss kallas bussuppräkning.
Om en busschaufför utför dynamisk bussuppräkning tar dess EvtChildListCreateDevice-återanropsfunktion emot ett handtag till en WDFDEVICE_INIT struktur.
Om en busschaufför utför statisk bussuppräkning måste den anropa WdfPdoInitAllocate för att hämta ett handtag till en WDFDEVICE_INIT struktur.
Mer information om bussenumerering finns i Enumerera enheter på en buss.
En bussdrivrutin kan anropa en uppsättning initieringsmetoder för ramverksobjekt som lagrar information i WDFDEVICE_INIT struktur. Busschaufförer kan dessutom anropa ramverks-PDO-initieringsmetoder.
När du skapar ett ramverksenhetsobjekt för en uppräknad underordnad enhet ingår vanligtvis följande steg:
Registrera bussdrivrutinsspecifika återanropsfunktioner.
De flesta busschaufförer anropar WdfPdoInitSetEventCallbacks eftersom de måste ange de systemmaskinvararesurser som en enhet kräver. Mer information om hur du anger maskinvaruresurser finns i Maskinvaruresurser för Framework-Based Drivrutiner. Ytterligare återanropsfunktioner kan registreras om enheten och drivrutinen stöder utkast.
Rapportera enhetsidentifieringssträngar.
Bussdrivrutiner måste rapportera enhetens identifieringssträngar genom att anropa WdfPdoInitAssignDeviceID, WdfPdoInitAssignInstanceID, WdfPdoInitAddCompatibleID och WdfPdoInitAddHardwareID för varje typ av sträng som enheten stöder. Dessutom kan bussdrivrutiner som använder version 1.9 eller senare av ramverket anropa WdfPdoInitAssignContainerID.
Rapporterar om busschauffören kan stödja enheten i raw-läge.
Om bussdrivrutinen stöder raw-läge för enheten måste den anropa WdfPdoInitAssignRawDevice.
Tillhandahålla visningsbar text som beskriver enheten.
Busschaufförer anropar WdfPdoInitAddDeviceText och WdfPdoInitSetDefaultLocale för att tillhandahålla text som beskriver enheten för användare på flera språk.
Skapa enhetsobjektet.
Det sista steget när du skapar ett enhetsobjekt är att anropa WdfDeviceSkapa.
Om drivrutinen stöter på ett fel vid initiering av den WDFDEVICE_INIT struktur som den fick från WdfPdoInitAllocate, måste drivrutinen anropa WdfDeviceInitFree i stället för WdfDeviceCreate.
När bussdrivrutinen har skapat enhetsobjektet anropas vanligtvis WdfDeviceSetPnpCapabilities och WdfDeviceSetPowerCapabilities för att rapportera enhetens Plug and Play- och strömkapabiliteter.
Varje busschaufför är också funktionsförare för bussadaptern. Därför måste drivrutinen också tillhandahålla en EvtDriverDeviceAdd-återanropsfunktion . Den här återanropsfunktionen skapar ett funktionellt enhetsobjekt (FDO) för varje busskort i systemet. Mer information om hur du skapar FDO:er finns i Skapa enhetsobjekt i en funktionsdrivrutin.