Compartir a través de


Cancelación de IRP

Los controladores en los que los IRP pueden permanecer en cola durante un intervalo indefinido (por lo que un usuario podría cancelar una solicitud de E/S enviada previamente) debe tener una o varias rutinas de cancelación para completar las solicitudes de E/S canceladas por el usuario. Por ejemplo, los controladores de teclado, mouse, paralelo, serie y dispositivo de sonido (o controladores superpuestas) y los controladores del sistema de archivos deben tener rutinas Cancel .

Los controladores para Microsoft Windows XP y los sistemas operativos posteriores pueden usar colas IRP seguras para cancelaciones en lugar de implementar sus propias rutinas de cancelación .

Para "cancelar un IRP" significa completar el IRP lo más rápido posible mientras se mantiene la integridad del sistema. Para obtener una explicación general de la finalización de IRP, consulte Finalización de IRP.

El proceso de cancelación comienza cuando el sistema o un controlador llama a IoCancelIrp. Se llama a esta rutina para cada IRP asociado al subproceso que aún no se ha completado completamente. El sistema cancela los IRP sin procesar si el subproceso que inició la solicitud de E/S se cierra. Los controladores solo pueden cancelar los IRP que han creado (consulte Creación de IRP para controladores de Lower-Level).

Si un IRP cancelado no se completa en un plazo de 5 minutos, el administrador de E/S considera que se agota el tiempo de espera de IRP. Estos IRP se desasocian del subproceso y se registra un error para el dispositivo que posee actualmente el IRP. Debe asegurarse de que las solicitudes que pueden tardar mucho tiempo en completarse en el controlador se pueden cancelar. Para asegurarse de que las solicitudes potencialmente largas se pueden cancelar, puede usar colas irP seguras para cancelar o el marco de controlador en modo kernel, que abstrae la cancelación del desarrollador del controlador.

En esta sección se proporcionan los temas siguientes:

Introducción a las rutinas de cancelación

Registro de una rutina de cancelación

Sincronización de la cancelación de IRP

Implementación de una rutina de cancelación

Puntos a tener en cuenta al cancelar IRP