用C#编写驱动程序

Gau*_*raa 29 c# drivers driver

我之前用C/C++编写过,但是目前我需要它转换成C#.

任何人都可以告诉我代码/方式如何用C#编写驱动程序?

实际上目前我用C++编写的旧应用程序存在一些问题,我们必须用C#编写LPT1,COM打印机和其他USB驱动程序的驱动程序.

Ser*_*bry 27

实际上,如果使用UMDF,可以在C#中编写一些驱动程序,因为它在usermode中运行(请参阅UMDF入门).但我的建议是使用C/C++.


No *_*ema 25

简直就是你不能.C#生成由虚拟机(.NET)解释的中间语言.所有这些东西都以用户模式运行,而WDM驱动程序以内核模式运行.

有一个DDK但它在VStudio中也不受支持(但你可以创建一个makefile项目进行编译).

驱动程序开发很复杂,容易出现蓝屏,需要很好地理解C,内核结构和内存操作.C#和.NET都不需要这些技能,因此有一条漫长而痛苦的训练路径.

  • 并非Windows上的所有设备驱动程序都需要运行内核模式.视频驱动程序,我相信音频驱动程序,现在在Windows Vista和Windows 7中都以用户模式运行.此外,现在还有Microsoft提供的用户模式驱动程序框架.请注意,如果它适用于.NET,可能仍然是基于C/C++的.http://www.microsoft.com/whdc/driver/wdf/UMDF.mspx (3认同)

Rob*_*ick 11

您无法在C#中编写内核模式驱动程序(运行时在用户模式下执行,因此您无法进入ring0).这个SO Q/A提供了一些您可能会发现有用的链接:

C#驱动程序开发?


Ily*_*lya 8

从您的描述中不清楚您是打算开发Windows设备驱动程序还是通过现有设备驱动程序与硬件交互.

例如,要与连接到串行端口的设备进行交互,您不需要编写自己的驱动程序,事实上,您可以通过.NET的SerialPort类访问它.

甚至USB设备也可以通过libusb-win32,WinUSB等框架从用户空间(最终是托管代码)访问.