Condividi tramite


Registrazione di una routine di annullamento

Se un driver di dispositivo dispone di una routine StartIo, le routine dispatch possono registrare una routine Cancel specificandone l'indirizzo come input per IoStartPacket.

Se un driver non dispone di una routine StartIo, le routine dispatch devono eseguire le operazioni seguenti prima di accodare un IRP per un'ulteriore elaborazione da parte di altre routine del driver:

  1. Chiamare IoAcquireCancelSpinLock.

  2. Chiamare IoSetCancelRoutine con l'IRP di input e il punto di ingresso per una routine Cancel fornita dal driver.

  3. Chiamare IoReleaseCancelSpinLock.

Per informazioni sul blocco di annullamento spin, vedere Utilizzo del blocco di annullamento spin del sistema.

I driver che gestiscono le proprie code di IRP, invece di usare la coda del dispositivo fornita dal gestore di I/O, non devono acquisire lo spin lock di annullamento quando chiamano IoSetCancelRoutine. Tuttavia, questi driver devono controllare il puntatore della routine Cancel che IoSetCancelRoutine restituisce per determinare se la routine Cancel è già stata avviata.