Skapa enhetsobjekt i en bussdrivrutin

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.

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:

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.