Partager via


Inscription d’une routine d’annulation

Si un pilote de périphérique a une routine StartIo , ses routines de répartition peuvent inscrire une routine Cancel en fournissant son adresse en tant qu’entrée à IoStartPacket.

Si un pilote n’a pas de routine StartIo , ses routines de répartition doivent effectuer les opérations suivantes avant de mettre en file d’attente un IRP pour un traitement ultérieur par d’autres routines de pilote :

  1. Appelez IoAcquireCancelSpinLock.

  2. Appelez IoSetCancelRoutine avec l’IRP d’entrée et le point d’entrée d’une routine Cancel fournie par le pilote.

  3. Appelez IoReleaseCancelSpinLock.

Pour plus d’informations sur le verrouillage d’annulation de rotation, consultez Utilisation du verrou d’annulation de rotation du système.

Les pilotes qui gèrent leurs propres files d’attente d’irPs, plutôt que d’utiliser la file d’attente d’appareils fournie par le gestionnaire d’E/S, n’ont pas besoin d’acquérir le verrouillage de rotation d’annulation lors de l’appel de IoSetCancelRoutine. Toutefois, ces pilotes doivent case activée le pointeur de routine Cancel retourné par IoSetCancelRoutine pour déterminer si la routine Cancel a déjà démarré.