用C#编写驱动程序

时间:2009-06-15 05:33:47

标签: c# driver drivers

我之前用C / C ++编写过,但目前我需要将其转换为C#。

有谁能告诉我代码/方式如何用C#编写驱动程序?

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

5 个答案:

答案 0 :(得分:27)

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

答案 1 :(得分:24)

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

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

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

答案 2 :(得分:11)

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

C# driver development?

答案 3 :(得分:8)

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

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

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

答案 4 :(得分:1)

你不能用C#编写驱动程序;驱动程序需要以提升的权限运行才能与硬件通信;托管代码无法在适当的环境中运行。