Registrace rutiny zrušení

Pokud má ovladač zařízení rutinu StartIo, mohou jeho rutiny obsluhy zaregistrovat rutinu Zrušit tím, že poskytnou její adresu jako vstup pro IoStartPacket.

Pokud ovladač nemá rutinu StartIo, jeho dispečerské rutiny musí před zařazením IRP do fronty pro další zpracování jinými rutinami ovladače provést následující kroky:

  1. Výzva k IoAcquireCancelSpinLock.

  2. Volání IoSetCancelRoutine se vstupním IRP a vstupním bodem pro ovladačovou rutinu Cancel.

  3. Volání: IoReleaseCancelSpinLock.

Informace o spin-locku naleznete v tématu Použití systémového zrušení spin-locku.

Při volání IoSetCancelRoutinenemusí ovladače, které spravují vlastní fronty IRP místo použití fronty zařízení, poskytované správcem vstupně-výstupních operací, získávat zámek zrušení. Tyto ovladače by však měly zkontrolovat ukazatel rutiny Cancel, který IoSetCancelRoutine vrátí, a určit, zda rutina Cancel již byla spuštěna.