Compartir a través de


Aislamiento del controlador de impresora

Importante

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 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 del proceso en el que se ejecuta el administrador de impresión.

La compatibilidad con el aislamiento del controlador 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 bandeja de entrada 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 ejecutaron en el mismo proceso que el colador. Los componentes del controlador de impresora que se ejecutaron en el proceso de cola incluían lo siguiente:

  • Módulos de configuración del controlador de impresión

  • Procesadores de impresión

  • Representación de módulos

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 de cola, consulte Funciones y estructuras de componentes de Spooler.

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 de cola. 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 de cola 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, se indica que el controlador admite el aislamiento del controlador. Si se establece DriverIsolation=0, se indica que el controlador no admite el aislamiento del controlador. La omisión de la palabra clave DriverIsolation del archivo INF tiene el mismo efecto que establecer DriverIsolation=0.

Funciones de cola para la configuración de aislamiento de controladores

En la tabla siguiente se muestran las funciones de cola que un administrador puede usar para configurar las opciones de aislamiento de controladores.

Nombre de la función Operación
GetPrinterDataEx Obtenga la configuración de aislamiento del controlador para una impresora.
SetPrinterDataEx Establezca la configuración de aislamiento del controlador para una impresora.
EnumPrinterDataEx Enumerar la configuración de aislamiento de controladores para una impresora.
FindFirstPrinterChangeNotification, FindNextPrinterChangeNotification Solicite 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 de cola. 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 de cola 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 Ejecute el controlador en un proceso que se comparte con otros controladores de impresora, pero que sea independiente del proceso de cola.
Aislado Ejecute el controlador en un proceso independiente del proceso de cola y no se comparta con otros controladores de impresora.
None Ejecute el controlador en el proceso de cola.

Idealmente, un controlador de impresora puede ejecutarse en modo compartido. Es decir, se ejecuta en un proceso aislado compartido con otros controladores de impresora, pero separados del proceso de cola. Es posible que un controlador tenga que ejecutarse en modo aislado si se puede ejecutar en un proceso independiente del proceso de cola, 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 admitir la solución de 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 de la cola 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, los controladores individuales están activados en modo. 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:

diagrama de flujo para elegir el modo de aislamiento del controlador.

Funciones de cola permitidas bajo aislamiento de controladores

Solo se permiten funciones específicas bajo aislamiento de controladores.

funciones de Spoolss.dll

Las siguientes funciones se exportan mediante spoolss.dll y están disponibles para complementos de cola mediante la vinculación a spoolss.lib.

Funciones winSpool.drv

Winspool.drv exporta las siguientes funciones y están disponibles para complementos de cola mediante la vinculación a Winspool.h.

Consulte también

Funciones y estructuras de componentes de Spooler