用C#编写驱动程序
我之前在C / C ++中写过,但是目前我需要它转换成C#。
任何人都可以告诉我代码/方式如何用C#编写驱动程序?
实际上目前我用C ++编写的旧应用程序存在一些问题,我们必须用C#编写LPT1,COM打印机和其他USB驱动程序的驱动程序。
只是你不能。 C#生成由虚拟机(.NET)解释的中间语言。 所有这些东西都以用户模式运行,WDM驱动程序以内核模式运行。
有一个DDK但它在VStudio中也不受支持(但你可以创建一个makefile项目进行编译)。
驱动程序开发很复杂,容易出现蓝屏,需要很好地理解C,内核结构和内存操作。 C#和.NET都不需要这些技能,因此有一条漫长而痛苦的训练路径。
实际上,如果使用UMDF,可以在C#中编写一些驱动程序,因为它在usermode中运行(请参阅UMDF入门 )。 但我的建议是使用C / C ++。
您无法在C#中编写内核模式驱动程序(运行时在用户模式下执行,因此您无法进入ring0)。 这个SO Q / A提供了一些您可能会发现有用的链接:
C#驱动程序开发?
从您的描述中不清楚您是打算开发Windows设备驱动程序还是通过现有设备驱动程序与硬件交互。
例如,要与连接到串行端口的设备进行交互,您不需要编写自己的驱动程序,事实上,您可以通过.NET的SerialPort
类访问它。
甚至USB设备也可以通过libusb-win32 , WinUSB等框架从用户空间(最终是托管代码)访问。
你不能用C#编写驱动程序; 驱动程序需要以提升的权限运行才能与硬件通信; 托管代码无法在适当的环境中运行。
- 任务一直在等待激活
- 类型引用找不到名为的公共类型
- ExtractMethodCodeRefactoringProvider的原因遇到错误并已被禁用?
- 当它为空时,在WPF DataGrid上显示“找不到记录”消息
- 要在Select()查询中使用的Lambda表达式
- 模拟DataReader并获取Rhino.Mocks.Exceptions.ExpectationViolationException:IDisposable.Dispose(); 期望#0,实际#1
- 在Forms身份validation中获取当前的MembershipUser
- C#,运算符’*’不能应用于’double’和’decimal’类型的操作数
- 性能优化使用生成的XmlSerializer类