Delen via


Aangepaste PnP-melding gebruiken

Een stuurprogramma kan het meldingsmechanisme voor het wijzigen van het doelapparaat gebruiken om op de hoogte te worden gesteld van aangepaste gebeurtenissen op een apparaat.

De programmeur die de aangepaste gebeurtenis definieert, moet het volgende doen:

  1. Definieer een nieuwe GUID voor de aangepaste gebeurtenis.

    Genereer de GUID met Uuidgen of Guidgen (die zijn opgenomen in de Microsoft Windows SDK). Publiceer de GUID in een geschikt headerbestand en de juiste documentatie.

  2. Schrijf code om de aangepaste gebeurtenis te activeren.

    In de kernelmodus roept een stuurprogramma IoReportTargetDeviceChange aan met de aangepaste GUID en een aanwijzer naar de PDO voor het apparaat. Aangepaste gebeurtenissen kunnen alleen worden geactiveerd vanuit de kernelmodus.

Een stuurprogrammaschrijver maakt gebruik van aangepaste meldingen met een procedure zoals hieronder:

  1. Het stuurprogramma (of de toepassing) registreert zich voor de melding van de aangepaste gebeurtenis.

    In de kernelmodus roept een stuurprogramma IoRegisterPlugPlayNotification aan en registreert het zich voor een EventCategoryTargetDeviceChange op het apparaat.

    In de gebruikersmodus registreert een toepassing zich met RegisterDeviceNotification. Zie de Windows SDK voor meer informatie.

  2. Een kernelmodusonderdeel activeert de aangepaste gebeurtenis.

  3. De PnP-manager roept meldingsroutines aan die zijn geregistreerd op het apparaat.

    De PnP-manager roept de geregistreerde callbackroutines in de gebruikersmodus aan en roept vervolgens de callbackroutines in de kernelmodus aan.

  4. Wanneer de melding in de gebruikersmodus is voltooid, reageren de meldingsroutines van het stuurprogramma in de kernelmodus op de aangepaste gebeurtenis.

    Zie richtlijnen voor het schrijven van terugbelroutines voor PnP-meldingen voor algemene richtlijnen voor callback-routines voor meldingen. Naast deze richtlijnen mag een aangepaste meldings-callback-routine geen toegang tot een apparaat openen vanuit de callback-routine-thread.