# Driver Chain Manager

Driver Chain Manager (DCM) es una tecnología de Microsoft que facilita instalar y trabajar con múltiples tecnologías de asistencia que utilizan la interfaz del driver de la pantalla (Display Driver Interface o DDI) en un mismo equipo.
DCM permite a un programa tener conocimiento de la existencia de las otras aplicaciones de asistencia. Permite evitar que se produzcan problemas entre ellas., como fallos, mal funcionamiento, que se corrompan o incluso que no funcionen.
La tecnología DCM viene instalada en Windows. La biblioteca se actualiza cuando se actualizan las ayudas. Un programador puede utilizar DCM en sus aplicaciones programando desde Microsoft Visual Studio empleando la biblioteca MSDN.

## ¿Qué hace?

DCM es un conjunto de rutinas de la biblioteca MSDN usada por la tecnología de asistencia de Windows. Permite la instalación, desinstalación y mantenimiento de interceptadores del driver gráfico.
Las aplicaciones de asistencia utilizan éstas rutinas para saber en que posición de la cadena de drivers deben colocar el suyo, de manera que no interfieran con las demás aplicaciones y éstas con ella

### Objetivos

* Proporcionar suficiente información sobre los objetos en la pantalla.
* Asegurarse de que otras aplicaciones de asistencia instaladas en el sistema no interfieran con las que ya se están ejecutando.
* Asegurarse de que varias aplicaciones de asistencia pueden ejecutarse simultáneamente.

### Capacidades de DCM

* Cuando múltiples drivers están instalados y solo se está ejecutando uno, los demás no interferirán en ésta independientemente de su posición.
* Un usuario puede instalar o desinstalar un driver en cualquier momento sin afectar a los demás.
* Existen aplicaciones de control remoto que también se basan en este encadenamiento.
* Todos los drivers de la cadena usarán el mismo código de escape para controlar la comunicación entre los usuarios y los controladores.
* En caso de que se cambie el adaptador de la pantalla se detectará si el ajuste de la cadena puede llevarse a cabo.
* Los drivers instalados no interferirán con los nuevos.

### Cuestiones fuera del alcance de DCM

* DCM no garantiza que 2 drivers se puedan ejecutar al mismo tiempo. Esto queda en manos de los desarrolladores de estos.
* Para los vendedores que soportan DCM, Los drivers instalados pueden permanecer después de los que usan DCM. Sin embargo DCM no tendrá conocimiento de ellos.
* Puede haber otros driver que no usen DCM, pero DCM no tendrá conocimiento de ellos.
* DCM no soporta usuarios con múltiples monitores.

## Software que utiliza DCM
### Aplicaciones que utilizan DCM

Las siguientes aplicaciones ya utilizan esta tecnología.
* Dolphin Computer Access:
** Hal 5.20 y superior,
** Lunar 5.20 y superior,
** Lunar Plus 5.20 y superior,
** Supernova 5.20 y superior.
* Freedom Scientific:
** JAWS 4.51 y superior,
** Magic 8.1 y superior.
* GW Micro:
** Window-Eyes 4.21 y superior.
* Ai Squared:
** ZoomText 7,11 con el programa de utilidad del driver.
** ZoomText 8.0 o superior (DCM built-in).

### Empresas desarrolladoras

DCM es el resultado de un esfuerzo común de Microsoft y de las empresas asociadas Ai Squared, Dolphin Computer Access, GW Micro, y Freedom Scientific.

### Sistemas operativos que soportan ‘DCM

DCM 1.0 es compatible con Windows NT versión 4, Windows 2000 y Windows XP.

## Funcionamiento de la cadena de drivers

El sistema operativo Windows permite instalar una cadena de drivers para la generación de la imagen de la pantalla. El primer driver obtendrá la información de las aplicaciones y se la pasará al siguiente driver y así sucesivamente con el resto de los drivers, esta cadena acabará en el driver de la tarjeta gráfica. Al colocar otros drivers lo que se pretende es capturar y/o modificar la información.
Por ejemplo, un lector de pantalla no modificará la información que reciba, pero capturará los datos necesarios que requiera para poder leer por el altavoz. Por el contrario un magnificador de pantalla recortará un rectángulo de la entrada y se lo pasará al siguiente driver.

### El problema

El problema es que el orden de la cadena no es aleatorio. Algunas aplicaciones deben ejecutar sus rutinas antes que otras. Por ejemplo, si ejecutamos el magnificador antes que un lector de pantalla, es posible que el primero haya eliminado la información que el segundo necesita, imposibilitando su funcionamiento.
Actualmente no existe ninguna regla que diga en que orden se ejecutan los controladores, eso sin tener en cuenta que puede haber más de un lector o magnificador instalados en la misma máquina. En caso de haber 2 magnificadores surgiría el problema de cual magnífica la pantalla o si se amplía 2 veces consecutivas (ampliación de la ampliación).
Además las dos aplicaciones no tienen conocimiento una de la otra, por lo que no pueden solucionar el problema. El problema se agrava si son software de diferentes compañías.
Otro problema se crea al desinstalar uno de los drivers, pudiéndose producir que se rompa la cadena y por ello que se pierda el controlador final.

### Forma de solucionarlo

DCM aporta a los desarrolladores de estas aplicaciones una aplicación llamada “DCMUtil” que les permite manejar el orden de los drivers y ajustarlos para un correcto funcionamiento.

## Otras aplicaciones que utilizan DCM

Existen otras aplicaciones, de distintas tipologías, que pueden utilizar DCM. De ellas se destaca el software de acceso remoto, el cual necesita capturar la imagen de la pantalla y enviarla por la red.