Como se desarrollan los drivers

Páginas: 5 (1046 palabras) Publicado: 28 de abril de 2014

Principios básicos de desarrollo de drivers en Windows - C

Introducción 




subsystem, ¿que es? 

El proceso de compilado y linkeado genera un binario adecuado para que el sistema operativo en el cual estemos pueda comprenderlo. En Windows, este formato es lo que varios conocen como PE (Portable Executable Format)
Alrededor de PE, tenemos un concepto llamado subsystem. Unsubsystem, entre otras opciones incluidas en la información del header PE, describe como cargar un ejecutable que también incluye el punto de entrada (Entry Point) en el binario. 

 

Conociendo tus herramientas. 

Posiblemente muchos recién se enteran lo que es un subsystem, y esto se debe a que generalmente en la etapa de aprendizaje de lenguajes como C/C++, uno puede simplemente descargar un IDEy ponerse a trabajar. Los errores no causan tantos problemas cuando todavía no salimos del modo usuario. 

Por ejemplo, las personas que utilizan Visual C++, habrán hecho ya alguna aplicacion en consola u alguna aplicacion para Windows. Al crear el proyecto, el subsystem viene predefinido, tal como /SUBSYSTEM:CONSOLE o /SUBSYSTEM:WINDOWS. 

La novedad en todo esto, es que un driver eslinkeado con otro tipo de subsystem, llamado NATIVE. 

MSDN /SUBSYSTEM 


NATIVE 
Device drivers for Windows NT. If /DRIVER:WDM is specified, NATIVE is the default.


 

Los drivers también tienen un "main". 

Por supuesto, los drivers también tienen un main, un Entry Point. 
Si sabemos que es un driver lo que vamos a realizar, basta con que el main reciba los parámetros adecuados y retornelo esperado para un driver. El sistema se encargara de cargar el driver cuando lo requiramos y darse cuenta que es un driver. 

Podemos utilizar cualquier nombre como Entry Point, pero por convención en Windows se utiliza DriverEntry. 
Si estas utilizando el DDK, al seleccionar que vas a construir un driver se utilizan una serie de opciones predefinidas. Esta es la razón por la cualDriverEntry se convirtió en algo similar al Entry Point oficial. 

Al especificar /DRIVER, tenemos tambien otras opciones, directo de la MSDN: 

Use the /DRIVER linker option to build a Windows NT kernel mode driver. 



The UPONLY keyword causes the linker to add the IMAGE_FILE_UP_SYSTEM_ONLY bit to the characteristics in the output header to specify that it is a uniprocessor (UP) driver. Theoperating system will refuse to load a UP driver on a multiprocessor (MP) system.


The WDM keyword causes the linker to set the IMAGE_DLLCHARACTERISTICS_WDM_DRIVER bit in the optional header's DllCharacteristics field. WDM video capture was designed to resolve the problems inherent in the Video for Windows architecture. 

En este caso utilizaremos: 

Código: 

/SUBSYSTEM:NATIVE /DRIVER:WDM-entryverEntry


 

Conceptos básicos. Lo que debes saber. 

Antes de comenzar, hay que cambiar la mentalidad de "Compilar y probar" que todos solemos adquirir mientras aprendemos a programar en modo usuario. 
En el mundo de los drivers la situación cambia y lo hace en forma drástica. 

Como mínimo podrías ocasionar un BSOD, y si estamos ante un driver que iniciara siempre con el sistema,tenemos un problema. 
Igualmente, nada que no puedas revertir entrando en modo seguro u volviendo a configuraciones previas, pero esto solo cabe en las practicas y no en casos reales. 

En conclusión, no compiles y pruebes el código de un driver al menos que entiendas a ciencia cierta que es lo que realiza, y mas aun si antes de compilarlo vas a modificar secciones del código. 

Caberecordar, que esta es solo una introducción de los conceptos básicos, por lo tanto quien quiera interiorizarse a fondo no le queda mas alternativa que revisar la MSDN u libros como "Programming the Windows Driver Model". 

Interrupt Request Level 

Abreviado como IRQL, partamos de la definición del DDK: 



The priority ranking of an interrupt. A processor has an IRQL setting that threads can...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • ¿Como respaldar y restaurar drivers?
  • como instalar un drivers
  • Como Instalar Los Drivers
  • como nos desarrollamos
  • ¿Cómo nos desarrollamos?
  • Cómo Encontrar Drivers Para Dispositivos Desconocidos
  • desarrollo humano como desarrollo de las armas
  • Drivers

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS