Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Un controlador de dispositivo debe evitar sondear su dispositivo a menos que sea absolutamente necesario y nunca debe usar un segmento de tiempo completo para el sondeo. Sondear un dispositivo es una operación costosa que hace que cualquier sistema operativo se centre en el cálculo dentro del controlador que realiza el sondeo. Un controlador de dispositivo que realiza mucho sondeo interfiere con las operaciones de E/S en otros dispositivos y puede hacer que el sistema sea lento y no responde a los usuarios.
Los dispositivos desarrollados recientemente, que son tan avanzados tecnológicamente como los procesadores en los que Windows está diseñado para ejecutarse, rara vez requieren un controlador para sondear su dispositivo, ya sea para asegurarse de que el dispositivo está listo para iniciar una operación de E/S o de que una operación está completa.
Sin embargo, algunos dispositivos que todavía están en uso se diseñaron para trabajar con procesadores antiguos, que tenían buses de datos estrechos, velocidades de reloj lentas y sistemas operativos de tareas únicas que hacían E/S sincrónicas. Estos dispositivos pueden requerir sondeos o algún otro medio de esperar a que el dispositivo actualice sus registros.
Aunque puede parecer lógico resolver un problema de dispositivo lento mediante la codificación de un bucle simple que incrementa un contador, con lo que se "desperdicia" un intervalo mínimo mientras se registran las actualizaciones del dispositivo, es poco probable que un controlador sea portátil en las plataformas Windows. El valor máximo del contador de bucles requeriría personalización para cada plataforma. Además, si el controlador se compila con un buen compilador de optimización, el compilador podría quitar la variable de contador del controlador y los bucles donde se incrementa.
Nota Siga esta guía de implementación si el controlador debe detenerse mientras el hardware del dispositivo actualiza el estado: un controlador puede llamar a KeStallExecutionProcessor antes de leer los registros del dispositivo. El controlador debe minimizar el intervalo que se detiene y debe especificar, en general, un intervalo de detento no superior a 50 microsegundos.
La granularidad de un intervalo KeStallExecutionProcessor es un microsegundo.
Si el dispositivo requiere con frecuencia más de 50 microsegundos para actualizar el estado, considere la posibilidad de configurar un subproceso dedicado del dispositivo en el controlador.