Aislamiento del controlador de impresora
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 aislamiento del controlador de impresora mejora la confiabilidad del servicio de impresión de Windows al permitir que los controladores de impresora se ejecuten en procesos independientes de aquel en el que se ejecuta el administrador de trabajos de impresión.
La compatibilidad con el aislamiento de controladores de impresora se implementa en Windows 7, Windows Server 2008 R2 y sistemas operativos posteriores.
A partir de Windows 7 y Windows Server 2008 R2, un controlador de impresora de serie debe admitir el aislamiento del controlador de impresora y poder ejecutarse en un proceso aislado.
En versiones anteriores de Windows, los controladores de impresora siempre se ejecutaban en el mismo proceso que el administrador de trabajos de impresión. Los componentes del controlador de impresora que se ejecutaban en el proceso del administrador de trabajos de impresión incluían lo siguiente:
Módulos de configuración del controlador de impresión
Procesadores de impresión
Módulos de representación
El error de un único componente de controlador de impresión podría provocar un error en el subsistema de impresión, detener las operaciones de impresión para todos los usuarios y para todos los componentes de impresión.
A partir de Windows 7 y Windows Server 2008 R2, un administrador puede, como opción, configurar un controlador de impresora para que se ejecute en un proceso aislado, un proceso independiente del proceso de cola. Al aislar el controlador, el administrador puede impedir que un error en un componente de controlador detenga el servicio de impresión.
Para obtener más información sobre las funciones del administrador de trabajos de impresión, consulte Funciones y estructuras del componentes del administrador de trabajos de impresión.
Compatibilidad con el aislamiento de controladores en archivos INF
De forma predeterminada, si el archivo INF que instala un controlador de impresora no indica que el controlador admite el aislamiento del controlador, el instalador de clase de impresora configura el controlador para que se ejecute en el proceso del administrador de trabajos de impresión. Sin embargo, si el archivo INF indica que el controlador admite el aislamiento del controlador, el instalador configura el controlador para que se ejecute en un proceso aislado. Un administrador puede invalidar estas opciones de configuración y especificar, para cada controlador, si se va a ejecutar el controlador en el proceso del administrador de trabajos de impresión o en un proceso aislado.
Para admitir el aislamiento de controladores, el archivo INF que instala un controlador de impresora puede usar la palabra clave DriverIsolation para indicar si el controlador admite el aislamiento del controlador de impresora. Si se establece DriverIsolation=2, indica que el controlador admite el aislamiento del controlador. Si se establece DriverIsolation=0, indica que el controlador no admite el aislamiento del controlador. Omitir la palabra clave DriverIsolation del archivo INF tiene el mismo efecto que establecer DriverIsolation=0.
Funciones del administrador de trabajos de impresión para la configuración de aislamiento de controladores
En la tabla siguiente se muestran las funciones del administrador de trabajos de impresión que un administrador puede usar para configurar las opciones de aislamiento de controladores.
Nombre de la función | Operación |
---|---|
GetPrinterDataEx | Obtiene la configuración de aislamiento del controlador para una impresora. |
SetPrinterDataEx | Establece la configuración de aislamiento del controlador para una impresora. |
EnumPrinterDataEx | Enumera la configuración de aislamiento del controlador para una impresora. |
FindFirstPrinterChangeNotification, FindNextPrinterChangeNotification | Solicita notificaciones de cambios en la configuración de aislamiento del controlador para una impresora. |
El formato de los datos es el siguiente:
El controlador de cada grupo está separado por '\'
Cada grupo de controladores está separado por '\\'
El primer grupo carga el controlador en los procesos del administrador de trabajos de impresión. Cada grupo posterior carga los controladores en procesos aislados por grupo. El segundo grupo se considera el grupo "compartido" en el que otros controladores compatibles con aislamiento se cargan de forma predeterminada.
Configuración del modo de aislamiento de controladores a través de la administración
Un administrador de equipos puede usar la consola de administración de impresión de Windows o llamar a las funciones del administrador de trabajos de impresión de Windows para configurar los valores de aislamiento de controladores para cada controlador de impresora instalado en un equipo. El administrador configura el controlador para que use una de las opciones enumeradas en la tabla siguiente.
Modo de aislamiento de controladores | Significado |
---|---|
Compartido | Ejecuta el controlador en un proceso que se comparte con otros controladores de impresora, pero que es independiente del proceso del administrador de trabajos de impresión. |
Aislado | Ejecuta el controlador en un proceso independiente del proceso del administrador de trabajos de impresión y no se comparte con otros controladores de impresora. |
Ninguno | Ejecuta el controlador en el proceso del administrador de trabajos de impresión. |
Lo ideal es que un controlador de impresora pueda ejecutarse en modo compartido. Es decir, que se ejecute en un proceso aislado compartido con otros controladores de impresora, pero separados del proceso del administrador de trabajos de impresión. Es posible que un controlador tenga que ejecutarse en modo aislado si se puede ejecutar en un proceso independiente del proceso del administrador de trabajos de impresión, pero tiene dificultades para compartir el proceso con otros controladores. Por ejemplo, un controlador mal diseñado podría tener nombres de archivo que entren en conflicto con los de controladores relacionados o de versiones diferentes del mismo controlador, o el controlador podría producir errores con frecuencia o tener una pérdida de memoria que interfiera con el funcionamiento de otros controladores que se ejecutan en el mismo proceso.
Para solucionar estos problemas, el administrador de dominio puede deshabilitar la característica de aislamiento de controladores en un equipo del dominio o el administrador puede forzar a todos los controladores de impresora del equipo a ejecutarse en modo aislado. En modo aislado, cada controlador debe ejecutarse en un proceso independiente del administrador de trabajos de impresión y de los demás controladores de impresora.
Si la directiva de grupo deshabilita el aislamiento de controladores, el aislamiento está desactivado para todos los controladores de impresora. Si el aislamiento está habilitado, se comprueba el modo de los controladores individuales. Si un controlador tiene establecido el modo de aislamiento, se ejecuta en modo compartido, aislado o ninguno, en función de la entrada del Registro. Sin embargo, si el controlador no tiene el modo de aislamiento establecido y es compatible con el aislamiento, se ejecuta en modo compartido. Si el controlador no es compatible con el modo, la invalidación de la directiva de grupo determina si el controlador se ejecuta en modo compartido o ninguno.
En el gráfico siguiente se muestra un mapa de decisión para elegir el modo de aislamiento de controladores:
Funciones del administrador de trabajos de impresión permitidas bajo el aislamiento de controladores
Solo se permiten funciones específicas bajo el aislamiento de controladores.
Funciones de Spoolss.dll
Las siguientes funciones se exportan mediante spoolss.dll y están disponibles para complementos del administrador de trabajos de impresión mediante la vinculación a spoolss.lib.
Funciones de WinSpool.drv
Las siguientes funciones se exportan mediante winspool.drv y están disponibles para complementos del administrador de trabajos de impresión mediante la vinculación a Winspool.h.
Consulte también
Funciones y estructuras de componentes del administrador de trabajos de impresión