Registrieren einer Abbruchroutine

Wenn ein Gerätetreiber über eine StartIo-Routine verfügt, können seine Dispatchroutinen eine Cancel-Routine registrieren, indem sie ihre Adresse als Eingabe für IoStartPacket angeben.

Wenn ein Treiber nicht über eine StartIo-Routine verfügt, müssen seine Dispatchroutinen die folgenden Schritte ausführen, bevor ein IRP für die weitere Verarbeitung durch andere Treiberroutinen in die Warteschlange gestellt wird:

  1. Rufen Sie IoAcquireCancelSpinLock auf.

  2. Rufen Sie IoSetCancelRoutine mit dem Eingabe-IRP und dem Einstiegspunkt für eine vom Treiber bereitgestellte Cancel-Routine auf.

  3. Rufen Sie IoReleaseCancelSpinLock auf.

Informationen zur Abbruch-Spin-Sperre finden Sie unter Verwenden der Abbruch-Spin-Sperre des Systems.

Treiber, die ihre eigenen Warteschlangen von IRPs verwalten, anstatt die vom E/A-Manager bereitgestellte Gerätewarteschlange zu verwenden, müssen beim Aufrufen von IoSetCancelRoutine nicht die Abbruch-Drehsperre abrufen. Diese Treiber sollten jedoch den VonIoSetCancelRoutine zurückgegebenen Cancel-Routinezeiger überprüfen, um festzustellen, ob die Cancel-Routine bereits gestartet wurde.