Compartir a través de


Introducción a la notificación del controlador

A partir de Windows Server 2008, el sistema operativo puede notificar a un controlador de dispositivo cuando un procesador o módulo de memoria se agrega dinámicamente a una partición de hardware. Hay varias notificaciones diferentes que se producen en distintas fases del proceso de una operación de adición activa. Cada una de estas notificaciones usa un método de notificación diferente para notificar al controlador del dispositivo sobre el evento. Puede usar uno o varios de estos métodos de notificación para que el sistema operativo notifique al controlador cuando se produce una operación de adición activa. Después, el controlador puede responder según sea necesario para una operación segura y óptima.

En la tabla siguiente se identifican los distintos métodos de notificación y si se aplican a procesadores, memoria o tanto procesadores como memoria.

Método de notificación Para procesadores Para memoria

Notificación del controlador sincrónico

X

Notificación de controlador asincrónica

x

x

Evento de notificación de memoria

x

Reequilibrio de recursos

x

Notificación del controlador sincrónico

Con la notificación del controlador sincrónico, el sistema operativo notifica sincrónicamente a los controladores de dispositivo que se ha agregado un nuevo procesador a la partición de hardware. Esta es la primera notificación que recibe un controlador de dispositivo sobre un cambio en el número de procesadores.

Cuando se agrega un nuevo procesador a la partición de hardware, el sistema operativo envía esta notificación a los controladores de dispositivo después de que el sistema operativo haya iniciado el nuevo procesador, pero antes de que el sistema operativo comience a programar subprocesos en el procesador. Cuando un controlador de dispositivo recibe esta notificación, puede asignar cualquier estructura de datos por procesador y asignar cualquier otro recurso por procesador al nuevo procesador. Esto prepara el controlador de dispositivo para ejecutar sus rutinas de envío, interrumpir rutinas de servicio (ISR), llamadas a procedimientos diferidos (DPC) y cualquier otro subproceso de controlador en el nuevo procesador.

Un controlador de dispositivo debe registrarse en el sistema operativo para recibir una notificación de controlador sincrónica. Para obtener más información, vea Registro para notificaciones de controladores sincrónicos.

Este método de notificación solo es aplicable a los procesadores. No hay ningún mecanismo de notificación sincrónico para la memoria.

Notificación de controlador asincrónica

Con la notificación de controlador asincrónica, el sistema operativo notifica de forma asincrónica a los controladores de dispositivo que se ha agregado un nuevo procesador o módulo de memoria a la partición de hardware. A partir de Windows Server 2008, los procesadores y los módulos de memoria se consideran dispositivos Plug and Play (PnP). Por lo tanto, el sistema operativo usa el mecanismo de notificación PnP para la notificación del controlador asincrónico.

Cuando se agrega un nuevo procesador o módulo de memoria a la partición de hardware, el sistema operativo envía esta notificación a los controladores de dispositivo después de que el sistema operativo haya iniciado el nuevo procesador o dispositivo de memoria. En el caso de un nuevo procesador, el sistema operativo no envía esta notificación a los controladores de dispositivo hasta que haya empezado a programar subprocesos en el nuevo procesador.

Nota

Todas las notificaciones PnP son asincrónicas. Por lo tanto, es posible que un controlador de dispositivo no reciba estas notificaciones hasta algún momento después de que el sistema operativo haya iniciado el procesador o el módulo de memoria.

Cuando un controlador de dispositivo recibe esta notificación, puede ajustar algunos o todos los siguientes elementos en consecuencia:

  • Búfer de memoria y otras asignaciones de recursos

  • Asignación de recursos a procesadores específicos

  • Programación de DPC y otros subprocesos en procesadores específicos

  • Algoritmos de equilibrio de carga

Importante

Cuando se agrega un nuevo procesador a una partición de hardware, el sistema operativo no envía la notificación PnP hasta después de que se haya iniciado el nuevo procesador y el sistema operativo haya comenzado a programar subprocesos en él. Si un controlador de dispositivo debe realizar determinadas tareas antes de que el sistema operativo comience a programar subprocesos en el nuevo procesador, como asignar una estructura de datos por procesador, debe usar el método de notificación sincrónico para el controlador.

Un controlador de dispositivo debe registrarse en el sistema operativo para recibir una notificación de controlador asincrónica. Para obtener más información, vea Registro de notificaciones de controladores asincrónicos.

Evento de notificación de memoria

Con el método de evento de notificación de memoria, puede hacer que el controlador de dispositivo programe un subproceso que espere a que el sistema operativo establezca el objeto de evento \KernelObjects\HighMemoryCondition . El sistema operativo establece este objeto de evento cuando la cantidad de memoria física libre supera un valor determinado. Este evento notifica a los subprocesos que están esperando en el objeto de evento que hay una cantidad significativa de memoria física disponible actualmente en el sistema. Este evento podría ser una indicación de que ha agregado dinámicamente un nuevo módulo de memoria al sistema. Cuando el sistema operativo establece este objeto de evento, el controlador de dispositivo puede responder al evento asignando búferes de memoria adicionales.

Para obtener más información sobre el objeto de evento \KernelObjects\HighMemoryCondition , vea Objetos de evento estándar.

Importante

Si el sistema operativo establece el objeto de evento \KernelObjects\HighMemoryCondition , el evento solo proporciona una indicación de que podría haber agregado dinámicamente un nuevo módulo de memoria a la partición de hardware. Hay otras situaciones que pueden hacer que el sistema operativo establezca este objeto de evento. Por lo tanto, a partir de Windows Server 2008, no se recomienda que los controladores de dispositivo usen este método de notificación. En su lugar, los controladores de dispositivo deben usar el método de notificación de controlador asincrónico.

Este método solo es aplicable a la memoria. No hay ningún mecanismo de notificación correspondiente para los procesadores.

Reequilibrio de recursos

A partir de Windows Server 2008, al agregar un nuevo procesador a una partición de hardware, el sistema operativo inicia un reequilibrio de recursos en todo el sistema. Si un dispositivo participará en este reequilibrio de recursos viene determinado por la configuración de la propiedad de dispositivo DEVPKEY_Device_DHP_Rebalance_Policy para el dispositivo. El comportamiento predeterminado de los dispositivos de la clase de configuración del dispositivo Adaptador de red (clase = Net) es que no participarán en el reequilibrio de recursos cuando se agrega dinámicamente un nuevo procesador al sistema. El comportamiento predeterminado de los dispositivos de todas las demás clases de configuración de dispositivos es que participarán en el reequilibrio de recursos cuando se agrega dinámicamente un nuevo procesador al sistema.

Si un dispositivo es un dispositivo Plug and Play (PnP) y participa en este reequilibrio de recursos, el sistema operativo envía IRP_MN_QUERY_STOP_DEVICE, IRP_MN_STOP_DEVICE y IRP_MN_START_DEVICE IRP de PnP al controlador para el dispositivo durante la operación de reequilibrio de recursos. Estas solicitudes PnP notifican al controlador que se ha producido un cambio de hardware en la partición de hardware. Un controlador de dispositivo debe admitir el reequilibrio de recursos controlando correctamente el IRP_MN_QUERY_STOP_DEVICE y IRP_MN_STOP_DEVICE solicitudes PnP. Un controlador de dispositivo nunca debe rechazar una solicitud IRP_MN_QUERY_STOP_DEVICE PnP.

Estas solicitudes PnP permiten que un controlador de dispositivo use completamente el nuevo conjunto de procesadores activos en la partición de hardware después de agregar un nuevo procesador. En concreto, un controlador de dispositivo que admite el reequilibrio de recursos usa las solicitudes PnP que recibe durante el reequilibrio de recursos para desconectar sus rutinas de servicio de interrupción (ISR) y volver a conectarlas con el valor de afinidad de procesador actualizado. Esto permite al controlador de dispositivo usar todos los procesadores activos actualmente en la partición de hardware, incluidos los nuevos procesadores, para controlar las solicitudes de interrupción.

Los controladores de dispositivos deben poner en cola todas las solicitudes de E/S durante el reequilibrio de recursos.

Para obtener más información sobre el reequilibrio de recursos, consulte Detener un dispositivo para reequilibrar recursos.

Este método solo es aplicable a los procesadores. El sistema operativo no inicia un reequilibrio de recursos en todo el sistema al agregar un nuevo módulo de memoria a una partición de hardware.