Dela via


Aktivera och inaktivera en instans av enhetsgränssnittet

När enheten har startats anropar drivrutinen som registrerade gränssnittet IoSetDeviceInterfaceState för att aktivera en gränssnittsinstans. Drivrutinen skickar det symboliska länknamnet som returneras av IoRegisterDeviceInterface tillsammans med det booleska värdet TRUE för att aktivera gränssnittsinstansen.

Om drivrutinen kan starta sin enhet framgångsrikt bör den anropa den här rutinen vid hantering av Plug and Play-managerns IRP_MN_START_DEVICE-begäran.

När IRP_MN_START_DEVICE begäran har slutförts utfärdar PnP-hanteraren ankomstmeddelanden för enhetsgränssnittet till alla komponenter i kernelläge eller användarläge som begärde dem. Mer information finns i Registrera för meddelande om ändring av enhetsgränssnitt.

Om du vill inaktivera en instans av enhetsgränssnittet anropar en drivrutin IoSetDeviceInterfaceState och skickar SymbolisktLänknamn som returneras av IoRegisterDeviceInterface och FALSE som värdet för Aktivera.

En drivrutin bör inaktivera en enhets gränssnitt när den hanterar en IRP_MN_SURPRISE_REMOVAL eller IRP_MN_REMOVE_DEVICE begäran för enheten. Om en drivrutin inte inaktiverar en enhets gränssnitt när den hanterar dessa borttagnings-IRP:er får den inte senare försöka göra detta eftersom PnP-hanteraren inaktiverar gränssnitten när enheten tas bort.

En drivrutin bör inte inaktivera gränssnitten när enheten stoppas (IRP_MN_STOP_DEVICE); I stället bör alla enhetsgränssnitt vara aktiverade och köa I/O-begäranden tills de tar emot en annan IRP_MN_START_DEVICE begäran. På samma sätt bör en drivrutin inte inaktivera sina gränssnitt när enheten försatts i viloläge. Den bör köa I/O-begäranden tills enheten aktiveras. Mer information finns i Stödenheter som har Wake-Up funktioner.