Compartir a través de


Escribir rutinas synchCritSection

Los controladores usan sus rutinas SynchCritSection para dos propósitos básicos:

Programación de un dispositivo para una operación de E/S

Acceso a la información de estado compartido

Al igual que un ISR, una rutina SynchCritSection debe ejecutarse lo más rápido posible, haciendo solo lo necesario para configurar registros de dispositivos o actualizar datos de contexto, antes de volver.

Dado que KeSynchronizeExecution contiene el bloqueo de número de interrupción de un controlador de dispositivo mientras se ejecuta su rutina SynchCritSection , el ISR del controlador no se puede ejecutar hasta que la rutina SynchCritSection devuelva el control.

Para cualquier IRP recibido, un controlador de dispositivo debe realizar tanto procesamiento de E/S como sea posible en IRQL PASSIVE_LEVEL en sus rutinas de envío (o posiblemente subprocesos dedicados al dispositivo), o en IRQL DISPATCH_LEVEL en su rutina StartIo y rutinas DPC.

Para obtener más información sobre cómo se sincronizan las secciones críticas, vea Uso de bloqueos de número: un ejemplo.