how create c# driver drivers

c# - how to create a driver



Escribiendo drivers en C# (5)

De su descripción no está claro si pretende desarrollar controladores de dispositivos de Windows o interactuar con el hardware a través de los controladores de dispositivos existentes.

Por ejemplo, para interactuar con dispositivos conectados a su puerto serie, no necesita escribir su propio controlador y, de hecho, puede acceder a él a través de la clase SerialPort de .NET.

Incluso se puede acceder a los dispositivos USB desde el espacio del usuario (y, en última instancia, el código administrado) a través de marcos como libusb-win32 , WinUSB , etc.

He escrito anteriormente en C / C ++ pero actualmente, lo necesito para convertir en C #.

¿Alguien puede decirme el código / forma ¿Cómo escribir controladores en C #?

De hecho, actualmente tengo algunos problemas con mi aplicación anterior escrita en C ++ y tenemos que escribir los controladores de nuestras LPT1, impresoras COM y otros controladores USB en C #.


En realidad, puede escribir algunos controladores en C # si utiliza UMDF porque se ejecuta en modo de usuario (consulte Introducción a UMDF ). Pero mi recomendación es usar C / C ++.


No puede escribir controladores de modo kernel en C # (el tiempo de ejecución se ejecuta en modo usuario, por lo que no puede entrar en ring0). Este SO Q / A proporciona algunos enlaces que pueden resultarle útiles:

¿Desarrollo del controlador C #?


No puedes escribir drivers en C #; los controladores deben ejecutarse con privilegios elevados para poder hablar con el hardware; El código administrado no se puede ejecutar en el entorno apropiado.


Simplemente no puedes. C # produce un lenguaje intermedio que es interpretado por una máquina virtual (.NET). Todo esto se ejecuta en modo usuario y los controladores WDM se ejecutan en modo kernel.

Hay un DDK pero tampoco es compatible con VStudio (aunque puede hacer un proyecto de makefile para compilar).

El desarrollo de controladores es complejo, propenso a la pantalla azul y requiere una buena comprensión de C, las estructuras del núcleo y la manipulación de la memoria. Ninguna de esas habilidades es necesaria para C # y .NET, por lo tanto, hay un camino de entrenamiento largo y doloroso.