Delen via


Verzoekhandlers

Als uw stuurprogramma de sequentiële of parallelle dispatchingmethode voor een I/O-wachtrij heeft opgegeven, roept het framework elke keer een door het stuurprogramma geleverde callback-functie aan wanneer deze gereed is om een van de aanvragen van de wachtrij aan het stuurprogramma te leveren.

Voor elke I/O-wachtrij kan het stuurprogramma een of meer van de volgende callback-functies bieden, die aanvraaghandlers worden genoemd:

EvtIoRead
Het framework roept de EvtIoRead callbackfunctie van een I/O-wachtrij aan wanneer er een leesverzoek in de wachtrij beschikbaar is.

EvtIoWrite
In het framework wordt de functie EvtIoWrite callback van een I/O-wachtrij aangeroepen wanneer een schrijfaanvraag beschikbaar is in de wachtrij.

EvtIoDeviceControl
Het framework roept de evtIoDeviceControl-callbackfunctie van een I/O-wachtrij aan wanneer een I/O-beheeraanvraag van een apparaat beschikbaar is in de wachtrij.

EvtIoInternalDeviceControl
Het framework roept de Callback-functie EvtIoInternalDeviceControl van een I/O-wachtrij aan wanneer een I/O-beheeraanvraag van een intern apparaat beschikbaar is in de wachtrij.

EvtIoDefault
Het framework roept de EvtIoDefault-callback-functie van een I/O-wachtrij aan wanneer er een aanvraag beschikbaar is, als het stuurprogramma de bijbehorende callback-functie voor aanvraagtype niet heeft opgegeven.

Het stuurprogramma registreert callback-functies wanneer WdfIoQueueCreate wordt aangeroepen om een I/O-wachtrij voor een apparaat te maken.

Elk van deze callback-functies ontvangt twee invoerargumenten: een ingang voor de I/O-aanvraag die het framework levert aan het stuurprogramma en een ingang voor de I/O-wachtrij die de aanvraag heeft bewaard. Een callback-functie kan het doelapparaat bepalen door WdfIoQueueGetDevice aan te roepen.

Het framework roept de aanvraaghandlers van uw stuurprogramma aan in een willekeurige threadcontext. Een stuurprogramma moet niet langer wachten tijdens het uitvoeren in een willekeurige threadcontext. In sommige gevallen kan uw stuurprogramma kernel-dispatcherobjecten gebruiken als synchronisatiemechanismen. Zie Inleiding tot Kernel Dispatcher-objecten voor informatie over wanneer uw stuurprogramma kan wachten op dispatcherobjecten en wat u moet doen wanneer dit niet mogelijk is.