Compartir a través de


Conceptos de configuración del controlador V4

Importante

La plataforma de impresión moderna es el medio preferido de Windows para comunicarse con impresoras. Se recomienda usar el controlador de clase de bandeja de entrada IPP de Microsoft, junto con aplicaciones de soporte técnico de impresión (PSA), para personalizar la experiencia de impresión en Windows 10 y 11 para el desarrollo de dispositivos de impresora.

Para obtener más información, consulte Plataforma de impresión moderna y la Guía de diseño de aplicaciones para compatibilidad con impresión.

El modelo de controlador de impresión v4 usa un nuevo modelo de configuración para mejorar la experiencia del usuario y reducir los costes de soporte técnico.

El controlador de impresión v4 se ejecuta directamente desde el Almacén de controladores, lo que elimina la posibilidad de colisiones de archivos y mejora el rendimiento de la instalación. El modelo de instalación v4 sigue usando archivos INF, pero también emplea un nuevo archivo de manifiesto para capturar las directivas de configuración específicas de la impresora.

Identificadores del dispositivo

CompatibleIDS

Los identificadores compatibles son un concepto clave para los controladores de clase de impresión, ya que permiten que los controladores admitan dispositivos que se publican después de que se publique la nueva versión de Windows, sin necesidad de actualizar el controlador. Esto es posible porque los ID compatibles permiten a los dispositivos anunciar la compatibilidad con un controlador de impresión menos específico que un HardwareID.

Si un controlador de clase de impresión ya admite un ID compatible determinado, los controladores de impresión v4 no deben especificarlo de nuevo. Si la fecha de un controlador de impresión es más reciente que la fecha del controlador de clase de impresión, el controlador de impresión se descargará automáticamente desde el sitio de Windows Update.

Los dispositivos deben incluir ID compatibles en su cadena 1284ID. Si un controlador de clase de impresión existente admite el dispositivo, el controlador de impresión debe usar ese ID compatible; de lo contrario, se recomienda usar el siguiente formato.

1284_CID_<manufacturer identifier>_<PDL identifier>_device family identifier

Por ejemplo:

1284_CID_FA_PCL5e_Laser

Si los ID compatibles ya están implementados en dispositivos existentes, el controlador de impresión debe seguir usando esos ID compatibles.

Los identificadores compatibles no se usan en la instalación de dispositivos de impresión basados en TCP/IP. Como resultado, los usuarios tendrán que identificar un controlador adecuado con solo el nombre del controlador. Cuando se trate de controladores de clase de impresión, se recomienda que los fabricantes proporcionen listas de compatibilidad en sus sitios web para cualquier dispositivo compatible con un controlador de clase de impresión. Para obtener más información sobre cómo implementar ID compatibles en el hardware, incluida una lista completa de reglas y restricciones, consulte Cómo implementar identificadores compatibles en dispositivos de impresión.

Microsoft admite algunos identificadores compatibles estándar con el fin de admitir varios controladores de clase de impresión independientes del fabricante (estándar). En la tabla siguiente se muestran estos ID compatibles estándar y sus tipos de archivo PDL asociados.

Tipo de archivo PDL ID compatible estándar
XPS 1284_CID_MS_XPS
OpenXPS (ECMA-388) 1284_CID_MS_OXPS
PCL6 1284_CID_MS_PCL6
PS 1284_CID_MS_PS

Estos controladores de clase de impresión estándar solo admiten un pequeño conjunto de características, por lo que los fabricantes que eligen utilizar estos controladores de clase deben implementar la configuración mejorada del controlador, usando bidi para agregar tamaños de papel y configuración más específicos. En la tabla siguiente se muestran las características y las opciones asociadas compatibles con los controladores de clase de impresión estándar.

Característica Opciones
Tamaño de papel Carta, A4
Solución 300 ppp, 600 ppp
Tipo de medio Papel normal
N hasta 1, 2, 4, 6, 9, 16

PrinterDriverID

PrinterDriverID es un nuevo identificador que se usa para determinar la compatibilidad entre controladores para el uso compartido de impresoras, así como la compatibilidad entre controladores y extensiones de impresora. Por ejemplo, si el controlador del servidor especifica un PrinterDriverID en su archivo de manifiesto y el controlador se comparte, los clientes que se conectan a esta impresora buscarán en el Almacén de controladores local y Windows Update para un controlador que especifique el mismo PrinterDriverID en su controlador INF. Si se encuentra una coincidencia, se realizará una conexión mediante ese controlador. Las máquinas cliente no filtran los resultados coincidentes con el nombre del controlador.

PrinterDriverID debe especificarse para todos los controladores compatibles de las maneras siguientes:

  • Usando la directiva PrinterDriverID en el manifiesto v4.

  • Como hardwareID del INF del controlador v4.

Para que dos controladores diferentes compartan el mismo PrinterDriverID, deben ser compatibles para compartir. Para que la conexión siempre se realice correctamente, los dos controladores deben poder hacer lo siguiente:

  • Admitir la misma PDL

  • Usar el mismo tipo de archivos de configuración (GPD o PPD)

  • Ser capaces de representar las características u opciones especificadas en los archivos GPD, PPD o de restricción JS del controlador del servidor

  • Admitir las mismas extensiones de impresora

El administrador de trabajos de impresión no valida estas limitaciones y se basa únicamente en PrinterDriverID para indicar si dos controladores son compatibles con el uso compartido. Los fabricantes deben asegurarse de cambiar PrinterDriverID para un controlador si se realizan cambios en cualquiera de los elementos anteriores.

Las extensiones de impresora también se pueden asociar con controladores a través de PrinterDriverIDs. Como resultado, dos controladores que comparten un PrinterDriverID deben funcionar con las mismas extensiones de impresora. La última extensión de impresora instalada sobrescribirá todas las extensiones de impresora anteriores para todos los dispositivos que usen los PrinterDriverID de destino, por lo que deben funcionar correctamente con la misma aplicación.

Procedimientos recomendados para usar GUID

Los GUID se usan ampliamente a través del modelo de controlador de impresión v4, especialmente en PrinterDriverID, y también en PrinterExtensionID, EventID y ModelID. Se usan para identificar de forma única diferentes elementos del sistema o para identificarlos como iguales a efectos de mantenimiento, uso compartido, etc.

Al crear nuevos GUID, use siempre un generador de GUID, como el incluido en Microsoft Visual Studio o en el SDK. Los GUID y GUID diseñados manualmente que se han copiado y pegado erróneamente son propensos a colisiones.

Comportamientos de configuración

Para los controladores v3, el nombre de la cola de impresión venía dictado primero por el nombre del controlador y después por el usuario. Con la introducción de controladores de clase de impresión, el nombre del controlador es mucho menos útil para el reconocimiento de usuarios del dispositivo. Windows cambiará el nombre de la cola automáticamente para los dispositivos Plug and Play instalados para ejecutar un controlador de impresión v4 de la siguiente manera:

  1. Inicialmente, el nombre de la cola de impresión se establece en el nombre del controlador.

  2. Si el controlador es un controlador de impresión v4, Windows consultará el dispositivo mediante Bidi.

    1. Si se especifica \Printer.DeviceInfo:FriendlyName, se usará como el nuevo nombre de la cola.

    2. De lo contrario, Windows consultará \Printer.DeviceInfo:Manufacturer, \Printer.DeviceInfo:ModelName.

      1. Si se especifican ambos, Windows los concatenará en "Manufacturer ModelName".

      2. Si solo se produce un error en una de estas consultas bidi, Windows usará la devolución correcta de la otra consulta como el nombre de la cola.

  3. Si se produce un error en todas las consultas bidi, Windows usará IEEE 1284ID para determinar los nombres de fabricante y modelo.

    1. Si se especifica DESCRIPTION o DES, se usará como nombre de la nueva cola.

    2. De lo contrario, Windows buscará MANUFACTURER o MFG y MODEL o MDL.

      1. Si se especifican ambos, Windows los concatenará en "MANUFACTURER MODEL".

      2. Si solo se produce un error en una de estas opciones, Windows usará el valor de la otra clave como nombre de la cola.

Asistente para agregar impresoras

El nombre del controlador seguirá siendo el único identificador disponible para los usuarios que elijan un controlador en el Asistente para agregar impresora. Los dispositivos basados en TCP/IP deben implementar el MIB del monitor de puertos (PWG 5107.1-2005) para admitir la detección automática de TCP/IP. Los dispositivos existentes que se agregan a un controlador de clase de impresión mediante una asignación de identificador de hardware (HWID) también pueden usar un nombre de modelo específico del dispositivo.

Cambio de puertos y tratamiento con los nodos de desarrollo de impresora

Para proporcionar una experiencia de interfaz de usuario coherente, todas las colas de impresión reciben un nodo de dispositivo de software (devnode). Así es como se detectan impresoras en la interfaz de usuario y permite enumerar y acceder a impresoras virtuales, conexiones a impresoras compartidas e impresoras de red de la misma manera que las impresoras Plug and Play (PnP). Los devnodes de software para impresoras PnP físicas heredarán las propiedades del devnode PnP que desencadenó la creación de la cola.

La interfaz de usuario agrupará los nodos de desarrollo en contenedores de dispositivos cuando dos objetos diferentes estén relacionados. Esta agrupación es lo que permite que una impresora multifunción (MFP) aparezca como un icono en la carpeta Dispositivos e impresoras. El identificador de contenedor de todas las funciones de una MFP debe ser el mismo para que todas las funciones aparezcan en el mismo icono. Esto se hace automáticamente para los dispositivos PnP.

Al cambiar el puerto asociado a una cola, se cambiará el identificador de contenedor asociado al nodo devnode de la cola. Esto hará que la cola ya no se agrupe en el mismo contenedor de dispositivos que el resto de los objetos PnP para el dispositivo físico. No hay suficiente información en el sistema operativo para limpiar correctamente situaciones en las que la cola y el objeto PnP se separan. En algunos casos, esa es la intención real del usuario. Solo el usuario o la aplicación que cambia el nombre del puerto sabe cuál es el resultado previsto y depende del usuario o la aplicación limpiar cualquier estado confuso que quede después de cambiar el puerto de una cola. Estas son dos situaciones de ejemplo, con instrucciones que muestran cómo limpiar correctamente.

  1. Configuración de impresoras de administración de TI: un administrador de TI usa la detección de WS para buscar una impresora en la red y cambia el puerto a TCP/IP porque les gusta su proceso de administración de TCP/IP.

    1. Expectativa: solo hay un "dispositivo" en la carpeta dispositivos e impresoras.

    2. Solución: el administrador de TI quita el nodo de desarrollo PnP de WSD de la carpeta dispositivos e impresoras.

  2. Software de instalación de IHV: el IHV instala un controlador junto con un monitor de puerto personalizado (los monitores de puerto personalizados no se permiten en v4, pero el mismo control de nodo de desarrollo se aplica a los controladores v3). El IHV cambia el puerto USB de la cola de impresión a un puerto que crea el fabricante del dispositivo.

    1. Expectativa: solo hay un "dispositivo" en la carpeta dispositivos e impresoras.

    2. Solución 1 - El devnode PnP sigue siendo necesario: el programa de instalación cambia el identificador de contenedor del nodo devnode de cola para que coincida con el objeto PnP.

    3. Solución 2 - El nodo de desarrollo PnP es ajeno: el programa de instalación quita el dispositivo PnP original.

Clasificación de controladores

La introducción de los controladores de impresión v4 no modifica el comportamiento de clasificación plug and play. Cuando se conecta un dispositivo, se seleccionará el controlador disponible con la puntuación más alta. Si el controlador seleccionado es un controlador de clase de impresión y hay un controlador mejor clasificado coincidente en el sitio de Windows Update, el controlador seleccionado se reemplazará automáticamente la próxima vez que el usuario descargue las actualizaciones de Windows.

Para obtener más información sobre la clasificación de controladores, consulte Cómo clasifica Windows los controladores.

Procedimientos recomendados de configuración de controladores

Empaquetado

Los controladores de impresión V4 no emplean las directivas del archivo INF Needs ni Includes, o tecnologías de controladores principales para controlar archivos compartidos. Como resultado, los controladores de impresión v4 deben ser independientes, con solo algunas excepciones.

Los controladores de impresión V4 pueden seguir teniendo dependencias en los archivos comunes que proporciona Windows. Estos incluyen los archivos de NTPrint.INF o NTPrint4.INF. Los controladores pueden incluir estos archivos especificando la directiva RequiredFiles en el archivo de manifiesto v4.

Si hay controladores de clase de impresión existentes que proporcionan funcionalidad de representación básica para los dispositivos o PDL, también existe un mecanismo para tomar una dependencia en el controlador de clase mediante la directiva RequiredClass. Esta directiva hace que Windows compile un controlador mediante los archivos del controlador de impresión v4 y del controlador de clase de impresión necesario. Los archivos GPD y PPD se combinan y los archivos más específicos tienen prioridad sobre los archivos menos específicos. En el diagrama siguiente se muestra la lógica utilizada para combinar los archivos GPD/PPD y también se incluyen archivos de configuración de controladores mejorados obtenidos de bidi. Otros archivos de controlador, como las restricciones de JavaScript, no se combinan en el paquete de controladores.

lógica de combinación de archivos gpd/ppd.

Líneas de modelo de impresora

Plug and Play mantiene una clasificación implícita de todos los HardwareID y CompatibleID en una línea de modelo. Como resultado, Microsoft recomienda que los partners usen los siguientes procedimientos recomendados para evitar comportamientos impredecibles con respecto a la clasificación.

Controlador de impresión v4

  1. Los INF del controlador de impresión V4 deben definir dos tipos diferentes de líneas de modelo:

    1. Líneas HardwareID: "Driver name" = INSTALL_SECTION, busenumerator\HardwareID

    2. Líneas PrinterDriverID: "Driver name" = INSTALL_SECTION,{GUID}

  2. Los INF del controlador de impresión V4 deben definir identificadores de hardware específicos del bus en líneas individuales:

    1. "Driver name" = INSTALL_SECTION,WSDPRINT\HardwareID

    2. "Driver name" = INSTALL_SECTION,USBPRINT\HardwareID

    3. "Driver name" = INSTALL_SECTION,LPTENUM\HardwareID

  1. Los INF del controlador de clase de impresión deben definir tres tipos diferentes de líneas de modelo:

    1. Líneas HhardwareID: "Driver name" = INSTALL_SECTION,HardwareID

    2. Líneas PrinterDriverID: "Driver name" = INSTALL_SECTION,{GUID}

    3. Líneas CompatibleID: "Print Class Driver name" = INSTALL_SECTION,,1284_CID_CompatID

  2. Los INF del controlador de clase de impresión no deben definir ningún enumerador de bus (por ejemplo, WSDPRINT)

Cómo implementar identificadores compatibles en dispositivos de impresión

Cómo Windows clasifica los controladores

MIB de monitor de puerto (PWG 5107.1-2005)