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:
Rufen Sie IoAcquireCancelSpinLock auf.
Rufen Sie IoSetCancelRoutine mit dem Eingabe-IRP und dem Einstiegspunkt für eine vom Treiber bereitgestellte Cancel-Routine auf.
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.