Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Si votre pilote a spécifié la méthode de répartition séquentielle ou parallèle d’une file d’attente d’E/S, l’infrastructure appelle une fonction de rappel fournie par le pilote chaque fois qu’elle est prête à remettre l’une des demandes de la file d’attente au pilote.
Pour chaque file d’attente d’E/S, le pilote peut fournir une ou plusieurs des fonctions de rappel suivantes, qui sont appelées gestionnaires de requêtes :
EvtIoRead
L’infrastructure appelle la fonction de rappel EvtIoRead d’une file d’E/S quand une demande de lecture est disponible dans la file d’attente.
EvtIoWrite
Le cadre appelle la fonction de rappel EvtIoWrite d’une file d’E/S lorsqu'une demande d’écriture est disponible dans la file d’E/S.
EvtIoDeviceControl
Le framework appelle la fonction de rappel EvtIoDeviceControl d’une file d’attente d’E/S lorsqu’une demande de contrôle d’E/S de périphérique est disponible dans la file d’attente.
EvtIoInternalDeviceControl
Le cadre appelle la fonction de rappel EvtIoInternalDeviceControl d'une file d'attente d'E/S lorsqu'une demande de contrôle d'E/S de périphérique interne est disponible dans la file d'attente.
EvtIoDefault
L’infrastructure appelle la fonction de rappel EvtIoDefault d’une file d’E/S quand une requête est disponible, si le pilote n’a pas fourni la fonction de rappel spécifique au type de requête associée.
Le pilote inscrit les fonctions de rappel lorsqu’il appelle WdfIoQueueCreate pour créer une file d’attente d’E/S pour un appareil.
Chacune de ces fonctions de rappel reçoit deux arguments d’entrée : un handle pour la demande d’E/S que l’infrastructure transmet au pilote et un handle pour la file d’attente d’E/S qui contenait la demande. Une fonction de rappel peut déterminer l’appareil cible en appelant WdfIoQueueGetDevice.
L’infrastructure appelle les gestionnaires de requêtes de votre pilote dans un contexte de thread arbitraire. Un pilote ne doit pas attendre trop longtemps pendant l'exécution dans un contexte de thread arbitraire. Dans certains cas, votre pilote peut utiliser des objets de répartiteur de noyau comme mécanismes de synchronisation. Pour plus d’informations sur le moment où votre pilote peut attendre les objets de répartiteur et ce qu’il peut faire quand il ne peut pas, consultez Présentation des objets de répartiteur de noyau.