Compartilhar via


Registrando uma rotina de cancelamento

Se um driver de dispositivo tiver uma rotina StartIo , suas rotinas de expedição poderão registrar uma rotina Cancelar fornecendo seu endereço como entrada para IoStartPacket.

Se um driver não tiver uma rotina StartIo , suas rotinas de expedição deverão fazer o seguinte antes de enfileirar um IRP para processamento adicional por outras rotinas de driver:

  1. Chame IoAcquireCancelSpinLock.

  2. Chame IoSetCancelRoutine com o IRP de entrada e o ponto de entrada para uma rotina cancelar fornecida pelo driver.

  3. Chame IoReleaseCancelSpinLock.

Para obter informações sobre o bloqueio de rotação de cancelamento, consulte Usando o bloqueio de rotação de cancelamento do sistema.

Os drivers que gerenciam suas próprias filas de IRPs, em vez de usar a fila de dispositivos fornecida pelo gerente de E/S, não precisam adquirir o bloqueio de rotação de cancelamento ao chamar IoSetCancelRoutine. No entanto, esses drivers devem marcar o ponteiro de rotina Cancelar que IoSetCancelRoutine retorna para determinar se a rotina Cancelar já foi iniciada.