Compartir a través de


Configuración automática durante la instalación del dispositivo

En la ilustración siguiente se muestra el flujo de datos en la configuración automática cuando se instala un dispositivo.

diagrama que ilustra el flujo de datos en la configuración automática cuando se instala un dispositivo.

  1. Cuando se instala una impresora, el administrador de cola inicializa el controlador llamando DrvPrinterEvent a y pasando PRINTER_EVENT_INITIALIZE en la llamada.

  2. El controlador usa interfaces de comunicación bidi para obtener los datos de interés, incluidos los valores de las opciones instalables, como \Printer.Configuration.DuplexUnit:Installed y \Printer.Configuration.HardDisk:Installed.

  3. La interfaz de comunicación bidi consulta el monitor de puerto para conocer los valores de estos atributos. Es posible que el monitor de puertos tenga algunos de los datos solicitados en su caché. Para fines ilustrativos en los pasos siguientes, supongamos que el valor de \Printer.Configuration.HardDisk:Installed está en la memoria caché del monitor de puertos, pero el valor de \Printer.Configuration.DuplexUnit:Installed no es.

  4. Si el monitor de puertos tiene una memoria caché y ha guardado uno o varios de los valores solicitados en él, el monitor de puertos devuelve estos valores a la interfaz de comunicación bidi. Para los valores que no están en la memoria caché, el monitor de puertos devuelve ERROR_NO_DATA. Tenga en cuenta que una consulta bidi puede producir un error si el monitor de puertos implementa una caché, pero la caché está vacía. Para evitar este problema, el monitor de puertos debe notificar a la interfaz de comunicación bidi cuando se rellena su caché.

  5. La interfaz de comunicación bidi pasa la información que recibe del monitor de puerto al controlador. Si la llamada desde la interfaz de comunicación bidi al monitor de puertos produce un error por cualquier motivo, el controlador debe establecer valores predeterminados para estos atributos. En cuanto el monitor de puerto recibe información sobre los atributos solicitados, debe enviar una notificación que contenga esta información a la interfaz de comunicación bidi.

    El controlador actualiza el registro con el valor de \Printer.Configuration.HardDisk:Installed (obtenido de la memoria caché del monitor de puertos) y el valor predeterminado de \Printer.Configuration.DuplexUnit:Installed.

  6. El monitor de puerto consulta el dispositivo para ambos valores, incluido el valor almacenado en caché (\Printer.Configuration.HardDisk:Installed).

  7. El dispositivo envía sus valores para los atributos consultados al monitor de puertos. Para cualquier atributo cuyo valor aún no estuviera presente en la memoria caché, o cuyo valor difiere del de la caché, el monitor de puertos coloca el nuevo valor en su caché.

  8. El monitor de puertos envía al colador una notificación que contiene los valores que anteriormente no estaban en la memoria caché o que cambiaron. En este ejemplo, el monitor de puertos envía una notificación al colador sobre el nuevo valor de \Printer.Configuration.DuplexUnit:Installed. Tenga en cuenta que si el valor almacenado en caché es el mismo que el nuevo valor recibido del dispositivo, el monitor de puertos no envía una notificación al administrador de colas.

  9. El administrador de colas responde a la notificación desde el monitor de puerto llamando a DrvPrinterEvent, pasando PRINTER_EVENT_CONFIGURATION_UPDATE además de información sobre todos los valores modificados de la llamada. Esta acción tiene dos propósitos: notificar al controlador el valor de cualquier atributo cuyo valor se colocó en la memoria caché por primera vez o cuyo valor cambió (\Printer.Configuration.DuplexUnit:Installed, en este ejemplo); para actualizar el registro. Para cada impresora, el colador serializa sus llamadas a DrvPrinterEvent, de modo que el controlador no necesite ser seguro para subprocesos.

    Dado que la información del dispositivo se almacena en el registro, el controlador puede satisfacer las llamadas para actualizar la información de la interfaz de usuario o de las funcionalidades del dispositivo sin necesidad de comunicarse directamente con el dispositivo físico. El controlador puede estar seguro de que la información almacenada en el registro es correcta, ya que las notificaciones de cambio desencadenan el controlador para consultar el dispositivo y actualizar el estado de configuración del dispositivo.

  10. El controlador actualiza la interfaz de usuario según la configuración más reciente.

    El controlador puede determinar cuándo se ha producido un cambio durante la instalación del dispositivo, porque el mensaje de notificación contiene el valor cambiado. Sin embargo, si la notificación es demasiado grande para enviarse a través del mecanismo de notificación, la notificación tendrá una o varias instancias de ReducedSchema, cada una de las cuales indica que ha cambiado una característica del dispositivo, pero sin detalles de su nuevo valor.