Aplicación de un controlador de dispositivo en la implementación de

Anuncio
CCIA’2008
Aplicación de un controlador de dispositivo
en la implementación de unidades virtuales
Yanelis Formoso Valdés, Humberto Díaz Pando, Yulier Nuñez Musa
Resumen. En la actualidad es cada vez más complicado
garantizar la protección de la información considerada
confidencial, o simplemente importante para el
propietario. Por la importancia que adquiere hoy en día
este tema, se desarrollan tecnologías que facilitan el
propósito de preservarla de modificaciones, replicación y
sustitución desautorizada.
Dentro de las soluciones que podría dársele a este
problema se encuentra el almacenamiento de información
en unidades virtuales seguras, entiéndase discos locales
que son virtuales porque físicamente no existen y son
seguras porque el contenido está cifrado. Para la
implementación de estas los controladores de dispositivos
aportan una vía de solución actuando de intermediarios en
la comunicación del sistema operativo con la unidad
virtual, realizando tareas de entrada/salida de datos,
interviniendo en el cifrado, y otros servicios como montar
y desmontar las unidades.
La presente investigación aborda el tema de los
controladores de dispositivos en el sistema operativo
Windows, se explican conceptos importantes como
preámbulo para explicar preceptos comunes que
encuentra el programador al trabajar en el tema.
Palabras claves: almacenamiento seguro, controladores
de dispositivos, seguridad, unidades virtuales.
I. INTRODUCCIÓN
Con el surgimiento y desarrollo de las nuevas
tecnologías y el conocimiento, cada vez se acrecienta
más la posibilidad de que la información, ya sea secreta
o sencillamente significativa, pueda ser extraída de un
medio de almacenamiento para sufrir sustitución,
modificación o replicación, sin la previa autorización
del dueño y por tanto el resultado no sería conveniente
para él.
En la actualidad se hace necesario buscar alternativas
para garantizar la seguridad en el almacenamiento de los
datos y para cubrir esta necesidad coexisten variados
sistemas que formulan soluciones para ello. Una de las
posibles vías que satisface esta situación es la
implementación de unidades virtuales seguras que
protegen
la
información
utilizando
métodos
criptográficos. Las principales soluciones son por lo
general software propietario, de los que se desconoce si
la implementación responde a los requisitos de una
auténtica seguridad por lo que no puede asegurarse que
sean realmente confiables. Por ejemplo, es posible la
presencia de fallas y puertas traseras, sobre todo si se
emplea la criptografía de Windows, las cuales aportan
serias vulnerabilidades y debilitan considerablemente la
seguridad. Aún cuando se hable de código abierto es
complicado analizarlo para verificar que cumpla con los
requisitos y es más confiable desarrollar un mecanismo
propio de criptografía, sin contar que también podrían
contener fallas y puertas traseras.
El problema a resolver está dado entonces por que no
existe un medio confiable para almacenar información.
El objeto de estudio de esta investigación se enmarca
en el concepto de unidades virtuales y de controladores
de dispositivos. El campo de acción lo constituyen los
controladores de dispositivos en el sistema operativo
Windows,
específicamente
los
controladores
relacionados con sistemas de archivo y el aporte que
brindan éstos como alternativa para el trabajo con
unidades virtuales, que es una solución para el
inconveniente planteado sobre la falta de seguridad en el
almacenamiento de la información.
El objetivo general de esta investigación es proponer
una técnica utilizando controladores de dispositivos
como alternativa para el trabajo con unidades virtuales
que contengan información sensible. Específicamente se
requiere buscar información relacionada con el
desarrollo de controladores de dispositivos y su
funcionamiento en el sistema operativo Windows,
investigar el aporte que brinda especialmente un driver
de filtro de sistema de archivo en la implementación de
unidades virtuales y describir un caso de estudio
aplicado a su desarrollo utilizando controladores de
dispositivos.
Entre los beneficios que brinda esta propuesta se tiene
que la documentación llevada a cabo sobre el proceso de
desarrollo de controladores de dispositivos constituirá
un valioso repositorio de conocimientos, en el que podrá
apoyarse todo aquel que trabaje este campo de acción.
El resultado de esta investigación servirá como soporte
para trabajos posteriores relacionados con la
1
CCIA’2008
implementación de un sistema que gestione unidades
virtuales seguras. Dicho sistema constituirá un medio
seguro o confiable de almacenamiento de información
realizado con criptografía propia, o sea, desarrollada en
nuestro país.
II.
LOS CONTROLADORES DE DISPOSITIVO DE
HARDWARE EN WINDOWS
El núcleo (kernel) de Windows no está diseñado para
interactuar por sí mismo con los dispositivos adjuntos a
la máquina, depende de controladores (drivers) para
detectarlos y comunicarse. Los controladores de
dispositivos se encargan de mostrar las capacidades del
dispositivo a clientes como pueden ser aplicaciones,
subsistemas del núcleo u otros driver; son entonces
programas informáticos encargados de controlar un
dispositivo específico de la máquina ya sea físico,
lógico o virtual administrando sus operaciones.
Los controladores de dispositivos se ejecutan en
segundo plano (background), separados de los procesos
de aplicaciones y pueden ser accedidos por múltiples
usuarios; tienen el mismo tiempo de vida que sus
dispositivos, se inician cuando Windows descubre el
dispositivo y se cierran cuando éste es removido;
responden a solicitudes de entrada/salida (E/S)
generadas externamente, pues se basan en el modelo de
E/S de Windows; no tienen interfaz de usuario y se
ejecutan en un espacio de dirección diferente al de la
aplicación que genera una solicitud de E/S [1].
En la arquitectura de Windows los controladores de
dispositivos se encuentran en la base (modo núcleo),
junto al hardware y al núcleo del sistema operativo,
mientras en la parte superior (modo usuario) coinciden
las aplicaciones y los servicios.
ambiente restringido que garantiza estabilidad y
seguridad para el sistema.
Las aplicaciones son las que más comúnmente inician
las solicitudes de E/S dirigidas a un driver. Al ejecutarse
en el modo usuario se comunican con el núcleo
indirectamente, utilizando funciones API (Application
Program Interface)1 de Windows. Estas funciones a su
vez usan componentes del sistema operativo para
transferir la solicitud al componente adecuado del modo
núcleo.
Cuando un driver en el núcleo devuelve datos a una
aplicación, lo hace también indirectamente, a través de
alguno de los subsistemas del núcleo, aunque podría
hacerlo directamente. Dichos subsistemas manipulan
muchas de las funcionalidades de Windows y los drivers
interactúan fundamentalmente con: el administrador de
E/S, el administrador de PnP (Plug and Play) y el
administrador de potencia o energía.
Cuando un controlador de dispositivo recibe una
solicitud de E/S, la procesa y se comunica con el
dispositivo requerido. Cualquier dato que se obtenga es
transferido de regreso al subsistema del núcleo que
transmitió la solicitud y en un final a la aplicación u otro
driver que la inició.
A. Tipos de controladores de dispositivos
Pueden encontrarse disímiles clasificaciones, que
además varían en dependencia del sistema operativo y
versión del que se trate.
Suele clasificarse los drivers en tres categorías según
la dependencia entre ellos: driver de alto nivel (highlevel driver), driver intermedio (intermediate driver) y
driver de bajo nivel (low-level driver). Como indican los
nombres, un driver de alto nivel depende de los
inferiores para completar su trabajo y así un driver
intermedio depende de uno de bajo nivel para completar
el suyo.
Figura 1. Los drivers en la arquitectura de Windows
El modo núcleo es la esencia del sistema operativo
Windows, que provee las funcionalidades básicas para
cualquier dispositivo y opera con pocas restricciones.
En el modo usuario, al ser un ambiente operativo más
simple, se ejecutan programas y servicios en un
Figura 2. Tipos de controladores de dispositivos
1
Interfaz de programación de aplicaciones. Interfaz que permite a una
aplicación comunicarse con el sistema operativo y otros servicios. 2
CCIA’2008
Los drivers del modo usuario, al ejecutarse en un
ambiente restringido, no aportan inestabilidad e
inseguridad al sistema operativo, sin embargo tienen
limitaciones. Los drivers de dispositivo virtual (Virtual
Device Driver)2 son componentes del modo usuario que
permiten a aplicaciones basadas en MS-DOS acceder a
hardware sobre la plataforma Intel x86. Un VDD es
necesario para soportar operaciones de dispositivos que
trabajan bajo una aplicación MS-DOS [2]. Estos son
controladores simulados o virtuales para un hardware de
iguales características [3].
Un controlador de sistema de archivo3 (FSD: file
system driver) es un componente del subsistema de
administración de almacenamiento que provee el medio
de almacenar y recuperar información en discos, cintas
magnéticas o sobre conexiones de red entre otras
funcionalidades [2], [4].
Estos drivers no se ajustan al Modelo de Driver de
4
Windows (WDM) y se debe a que el modelo para
sistema de archivo varía entre sistemas operativos por lo
que no puede aplicársele un estándar de desarrollo. Esto
no quiere decir que no puedan tratar aspectos propios
del modelo WDM, sólo que no es necesario, por
ejemplo administrar energía o soportar mecanismos
5
WMI (Windows Management Instrumentation) [5].
Los tres tipos de drivers de sistema de archivo son:
sistema de archivo local, para ficheros almacenados en
discos conectados directamente a una computadora; de
red, que permite compartir localmente con otros
usuarios los discos conectados; y el distribuido se
desarrolla a partir del anterior ocultando completamente
a los usuarios la ubicación física real de los datos [4].
Figura 3. Driver de sistema de archivo local y de filtro
Existen además los drives de filtro de sistema de
archivo (FSFD: file system filter driver) cuya presencia
es opcional. Si se coloca sobre el sistema de archivo
realiza el procesamiento requerido antes que la solicitud
llegue al driver de sistema de archivo, si se ubica debajo
ejecuta el procesamiento después que el sistema de
archivo termina sus tareas o antes que la solicitud llegue
al driver de disco.
Los FSD son difíciles de desarrollar porque el trabajo
que realizan es complejo y conlleva interacción con el
administrador de memoria y de caché, pero
especialmente porque Microsoft no suministra
abundante información sobre el tema.
Los drivers de legado (legacy drivers) son
controladores que interactúan directamente con
hardware sin requerir ayuda de otros drivers.
Usualmente no soportan PnP o administración de
potencia [6].
Plug-and-Play es una combinación de hardware y
soporte de software que permite a un sistema de
computadora reconocer y adaptarse a cambios de
configuración de hardware con poca intervención o sin
intervención de usuarios, omitiendo un proceso tedioso
y difícil de configuración manual [7].
El Modelo de Driver de Windows (WDM: Windows
Driver Model) es un enfoque unificado para desarrollar
controladores de dispositivos en el modo núcleo para
todos los sistemas operativos Windows [8].
Los controladores de dispositivos que siguen las
reglas de este modelo son llamados drivers WDM. Este
tipo de controlador soporta PnP, administración de
energía y mecanismos WMI [9].
Estos drivers basan su funcionamiento en una
estructura en capas (layered drivers) como muestra la
Fig. 4. y los controladores que interactúan son: driver de
función (function driver), que contiene toda la
funcionalidad, los detalles de cómo trabaja el
dispositivo y por tanto es desarrollado por quien lo
vende; driver de filtro (filter driver) o driver intermedio,
que es opcional e intercepta solicitudes hacia un driver
6
existente para modificarlas; y driver de bus (bus
driver) o driver físico (physical driver), que es el
responsable de manejar la conexión entre el dispositivo
y la computadora y no interviene en las operaciones de
E/S de datos [10], [11].
2
VDD para Windows XP o VxD para Windows 98/Me. Consultar el libro “Windows NT File System Internals, A
Developer's Guide” de Rajeev Nagar. 4
Ver ¡Error! No se encuentra el origen de la referencia.. 3
5
Instrumental de Administración de Windows. Servicio que
proporciona una interfaz común y un modelo de objeto para tener
acceso a la información de administración acerca de un sistema
operativo, dispositivos, aplicaciones y servicios. 6
En este contexto un bus es un componente de hardware, ya sea SCSI
y PCI, puertos paralelos, puertos series, o puertos i8042, al que se
puede adjuntar un dispositivo.
3
CCIA’2008
Las Figs. 5 y 6 corresponden a los drivers de gráfico y
los drivers de red respectivamente.
Figura 5. Los drivers de gráfico en arquitectura de Windows
Figura 4. Arquitectura en capas de los drivers WDM
Al estudiar el modelo WDM se encuentran criterios
que plantean que resulta una tarea desafiante, con una
pronunciada curva de aprendizaje limitada a un pequeño
grupo de desarrolladores especializados. Es por ello que
Microsoft lanza recientemente un nuevo modelo
llamado Fundación de Driver de Windows (WDF:
Windows Driver Foundation) para proveer una vía más
sencilla de aprendizaje e implementación de
controladores de dispositivos en Windows y que viene a
reemplazar en gran medida el modelo WDM. Este
modelo provee un ambiente orientado a objetos y
manejado por eventos. Los drivers de este tipo cumplen
el mismo propósito de comunicar a los dispositivos con
el sistema operativo, reciben y manejan solicitudes de
E/S, administran PnP y cambios del estado de la energía
de la máquina [12].
El nuevo modelo WDF está constituido por dos
frameworks o marcos de trabajo que son los que se
encargan de la interacción con el sistema operativo y
con otros drivers, estos son: User-Mode Driver
Framework (UMDF) y Kernel-Mode Driver Framework
(KMDF) [13], [14].
Además de los drivers antes mencionados, Windows
soporta otros tipos, que por tener una arquitectura
especial no se incluyeron en la clasificación anterior.
Estos son: drivers de gráfico [15], donde se incluyen los
drivers de display y de impresora; y drivers de red [16],
basados en el modelo OSI (Open System
Interconnection)7. Interconexión de sistemas abiertos. Describe
7
los procesos de
comunicación de red mediante el cual los datos se empaquetan y se
transmiten desde una aplicación emisora a través de cables físicos
hacia la aplicación receptora.
Figura 6. Jerarquía de los controladores de red NDIS
B. Solicitudes de Entrada/Salida
El modelo de E/S de Windows controla cómo el
sistema y los drivers asociados manipulan solicitudes de
E/S. Está basado en paquetes que manejan la
comunicación entre los clientes que emiten la solicitud,
y una pila, conocida como pila del dispositivo. Esta pila
almacena estructuras de datos Device Object que
representan en memoria al dispositivo y puede haber
una por cada driver asociado. Si un driver no puede dar
respuesta a una solicitud, la transfiere hacia abajo, al
próximo driver en la pila como muestra la Fig. 7.
Los paquetes que describen la solicitud y transportan
los datos necesarios para satisfacerla se conoce como
paquete de solicitud de E/S (IRP: I/O Request Packet).
4
CCIA’2008
un poco más la vía para implementar unidades virtuales,
introduciendo el tema de los controladores de
dispositivos como mediadores en la comunicación entre
las aplicaciones y el sistema operativo.
Figura 7. Transferencia de solicitudes
III. PROPUESTA DE SOLUCIÓN PARA LA
IMPLEMENTACIÓN DE UNIDADES VIRTUALES
Una de las vías para garantizar la inviolabilidad de la
información considerada sensible lo constituyen las
unidades virtuales cifradas. Éstas son la emulación de
las funcionalidades y el comportamiento de un disco, o
sea que, físicamente no existen, pero el sistema
operativo las reconoce como tal. Las propuestas que se
pueden implementar varían en cuanto a dónde se
almacenan los datos. La más conveniente está en
gestionar discos locales virtuales cuyos datos se
almacenen en ficheros con un sistema de archivo
independiente.
A. Estado del arte
Haciendo un estudio de los productos software
existentes en el mundo, vinculados a la gestión de
unidades virtuales, se encuentran múltiples soluciones.
De manera general estos productos satisfacen en alguna
medida la necesidad de asegurar información sensible.
Algunas de estas soluciones son software propietario,
otras a pesar de ser software libre, tienen el
inconveniente de no suministrar el código fuente. Otros
casos, aún siendo libre y de código abierto, incurrirían
en un proceso complejo y extenso de análisis del código
fuente. De ninguna de las situaciones anteriores puede
asegurarse que sea realmente confiable, pues podrían
tener puertas traseras o fallas.
Algunas de estas propuestas son CryptoExpert [17],
TrueCrypt [18], CallbackDisk [19] y Callback File
System [20]. Las dos primeras soluciones se asemejan
en el tratamiento que dan a la seguridad. Ambas cifran y
descifran los datos de forma transparente para el usuario
y el acceso a los volúmenes es a través de contraseña.
Brindan una interfaz de usuario que garantiza un fácil
manejo de las unidades y los datos se almacenan en un
fichero contenedor. Las dos últimas son productos que
facilitan el trabajo de los programadores. Ambas aclaran
B. Requisitos de un sistema de gestión de unidades
virtuales
Entiéndase por gestión las acciones de crear el
volumen, montar y desmontar las unidades. Para crear el
volumen debe generarse un fichero con un sistema de
archivo para sí.
Al ser la seguridad de los datos tan importante es
primordial que los mecanismos de cifrado y descifrado
sean propios para ser confiables, y no desarrollados por
un desconocido, pues no es posible distinguir sus
verdaderos propósitos. A esto se agrega que desarrollar
un sistema propio posibilita, en un momento dado,
cambiar los algoritmos de cifrado y descifrado.
Para poder montar una unidad virtual ya creada y que
su contenido sea accesible será necesario conocer la
contraseña de acceso. De esta manera se garantiza que
la información protegida en la unidad sea disponible
para un único usuario considerado el propietario, y para
aquel autorizado a poseer dicha contraseña.
El fichero que contiene la información cifrada podrá
estar ubicado en cualquier parte del disco duro. Este
fichero puede ser transportado fácilmente y sin riesgos
de seguridad asociados, pues el contenido será accesible
sólo si se conoce la contraseña y posteriormente se
monta la unidad con el mismo sistema de gestión.
Los procesos de cifrado y descifrado asociados a las
operaciones con la unidad virtual serán transparentes
para el usuario. Cuando se desee copiar o leer datos
desde la unidad este se descifrará antes. Igualmente
debe ocurrir con el proceso contrario de copiarlos hacia
la unidad, pues es preciso cifrarlo antes. Para mover
información hacia el disco virtual, además del debido
proceso de cifrado debe borrarse físicamente del medio
donde
se
encontraba
para
garantizar
que
verdaderamente no queden copias temporales de los
datos.
C. Caso de estudio
La solución encontrada al problema que ha venido
planteándose conlleva la implementación de un
controlador de dispositivo, específicamente un driver de
filtro de sistema de archivo. La función fundamental de
este driver es interceptar las solicitudes y cifrar los datos
antes que lleguen al sistema de archivo dispuesto en el
fichero para ser almacenados. De igual forma el driver
de filtro se encarga de descifrar la información antes de
ser devuelta a un usuario.
El caso de estudio investigado, implementa las
funcionalidades básicas de montar y desmontar los
volúmenes virtuales, de escribir y leer de ellos.
Antes que un usuario pueda acceder a la información
almacenada en un volumen, este debe ser montado en el
sistema. Cuando esto ocurre, un driver de sistema de
archivo (FSD) verifica los metadatos y los utiliza para
5
CCIA’2008
administrar el volumen creando además estructuras de
datos en memoria basadas en estos. Para ser
administrado por un FSD local, cada volumen debe
tener un formato válido de sistema de archivo. Este
formato incluye los metadatos apropiados, específicos
para el tipo de FSD que se use [4].
Cuando se formatea un volumen se crean los
metadatos del sistema de archivo que posteriormente
son usados por el FSD para suministrar funcionalidades
como las de asignar espacio de almacenamiento para los
datos del usuario, asociándolos con el nombre del
archivo especificado por él, y crear índices usados en la
recuperación de la información para el usuario [4].
Cómo se montan los volúmenes depende del sistema
de archivo y si se ha montado previamente. Cuando un
sistema de archivo recibe la solicitud de montar un
nuevo volumen, crea un volume device object (VDO)
que forma la base de la pila de sistema de archivo del
volumen. Si se tiene un driver de filtro del sistema de
archivo (FSFD) cualquier solicitud de E/S enviada al
sistema de archivo es automáticamente enviada primero
al Device Object creado por el FSFD y adjunto en la
parte superior de la nueva pila [21].
El proceso de montar un volumen es típicamente
iniciado por una solicitud para abrir un fichero o un
volumen lógico. El administrador de E/S determina cual
volumen es el destino de la solicitud y verifica si su
Device Object está montado. Si el volumen no ha sido
montado desde el inicio de sistema, el administrador de
E/S envía una solicitud de montar volumen al sistema
de archivo que presenta el volumen. Cada sistema de
archivo que recibe esta solicitud, examina en su sector
de arranque para determinar si la estructura del volumen
y otras informaciones indican que fue formateado para
ese sistema de archivo particular. Si el formato se
corresponde el sistema de archivo monta el volumen
[22].
Para desmontar un volumen se sigue una secuencia
tradicional de operaciones que comienza por bloquear el
volumen, enviando al sistema de archivos el código
FSCTL_LOCK_VOLUME, para asegurar que no
existan archivos abiertos accediendo al volumen. Esto
obliga a devolver los datos, almacenados en caché,
hacia el disco. En este punto algunas aplicaciones
ejecutan procedimientos adicionales. Finalmente el
volumen es desmontado, enviando el código
FSCTL_DISMOUNT_VOLUME. Algunas aplicaciones
además desbloquean el volumen, enviando el código
FSCTL_UNLOCK_VOLUME, para que pueda ser
utilizado por otro proceso [5].
Una alternativa para esta última operación es
desmontar el volumen por la fuerza, es decir sin
bloquear antes el acceso, pues típicamente el sistema de
archivo regresa los datos al disco y entonces desmonta
el volumen [5].
Las Figs. 8 y 9 describen una secuencia de pasos que
sigue el caso de estudio para montar y desmontar
unidades virtuales
6
CCIA’2008
Figura 8. Secuencia para montar unidades virtuales
Figura 9. Secuencia para desmontar unidades virtuales
7
CCIA’2008
CONCLUSIONES
Al término de esta investigación y cumpliendo el
objetivo de indagar sobre el desarrollo y funcionamiento
de los controladores de dispositivos, centrándose en el
aporte que brindan a la gestión de unidades virtuales, se
tiene que: la implementación de unidades virtuales
seguras es la vía más confiable para brindar seguridad a
la información considerada sensible, basándose en los
requerimientos del cliente; las soluciones encontradas al
realizar el estado del arte no brindan la seguridad
necesaria, ya sea porque es software propietario, o
software libre que no facilita el código fuente, al menos
no todo, o porque en el resto de los casos se incurre en
un proceso complejo y extenso de análisis del código;
de las técnicas encontradas para implementar unidades
virtuales, la relacionada con controladores de
dispositivos es la más conveniente; los controladores de
filtro de sistema de archivo aportan un beneficio
considerable al cifrar los datos antes que lleguen a la
unidad virtual y descifrándolos antes de extraerlos; es
complejo aprender a desarrollar controladores de
dispositivos, la tarea necesita mucho tiempo y esfuerzo;
los programadores dedicados al tema son pocos, y más
aún en nuestro país; la bibliografía y ejemplos en
ocasiones es insuficiente; y no se puede adquirir
documentación actualizada relacionada con el tema, de
forma directa con el suministrador.
http://www.microsoft.com/whdc/driver/wdf/wdf-intro.mspx.
P. Orwick and G. Smith, Chapter 4: Overview of the
Driver Frameworks, in Developing Drivers with the
Microsoft Windows Driver Foundation. 2007, Microsoft
Press.
[15] Display and Print Devices, in Windows DDK
Documentation. 2003.
[16] Network Devices and Protocols, in Windows DDK
Documentation. 2003, Microsoft Corporation.
[14]
[17]
SecureAction. CryptoExpert. Available from:
http://www.secureaction.com/cryptoexpert/lite/.
[18] TrueCrypt - Free open-source disk encryption software for
Windows Vista/XP/2000 and Linux. Available from:
http://www.truecrypt.org.
[19] CallbackDisk. 2008. Available from: http://eldos.com/cbdisk/.
[20] Callback File System. 2008. Available from:
http://eldos.com/cbfs/.
[21] How the Volume Is Mounted, in Installable File System
[22]
Kit. 2007, Microsoft Corporation.
Mounting a Volume, in Installable File System Kit.
2007, Microsoft Corporation.
REFERENCIAS
[1]
[2]
[3]
[4]
[5]
P. Orwick and G. Smith, Chapter 2: Windows Driver
Fundamentals, in Developing Drivers with the Microsoft
Windows Driver Foundation. 2007, Microsoft Press.
W. Oney, Chapter 1: Beginning a Driver Project in
Programming the Microsoft Windows Driver Model 2nd Edition. 2003, Microsoft Press.
A. Baker and J. Lozano, Chapter 1: Introduction to
Windows 2000 Drivers, in The Windows 2000 Device
Driver Book, A Guide for Programmers, 2nd Edition.
2000, Prentice Hall PTR
R. Nagar, Chapter 2: File System Driver Development,
in Windows NT File System Internals, A Developer's
Guide. 1997, O'REILLY. p. 780.
IFS FAQ. Installable File System 2007 [cited 8/mayo/2008];
Available from:
http://www.osronline.com/article.cfm?article=17.
Legacy driver, in Windows DDK Documentation. 2003,
Microsoft Corporation.
[7]
Introduction to Plug and Play, in Windows DDK
Documentation 2003.
[8]
Windows Driver Model (WDM) Defined, in Windows
DDK Documentation. 2003, Microsoft Corporation.
[9]
Windows Driver Model, in Windows DDK
Documentation. 2003, Microsoft Corporation.
[10] Layered Driver Architecture, in Windows DDK
Documentation. 2003, Microsoft Corporation.
[11] Bus Drivers, in Windows DDK Documentation. . 2003,
Microsoft Corporation.
[12] P. Orwick and G. Smith, Chapter 3: WDF
Fundamentals, in Developing Drivers with the Microsoft
Windows Driver Foundation. . 2007, Microsoft Press.
[6]
[13]
I. Tsigkogiannis. Introduction to the Windows Driver
Foundation. 2006. Available from:
8
Descargar