在我一头扎进 C# 之前……
我一直认为 C 或 C++ 最适合在 Windows 上开发驱动程序。我不喜欢在 .NET 机器上开发驱动程序的想法。
但 .NET 似乎是 MS 应用程序开发的方向,所以我现在想知道:
- 人们正在使用 C# 来开发驱动程序吗?
- 您是否必须执行大量 API 挂钩,或者 C# 是否具有与内核交互的设施,而无需进行大量黑客操作?
- 谁能谈谈在比通常情况更接近 Ring 0 的位置运行 C# 程序的可靠性和安全性吗?
我希望我的设备可以在 C# 中使用,如果 C# 中的驱动程序开发成熟,这显然是可行的方法,但如果不推荐的话,我不想在那里花费大量精力。
- 例如,开发一个简单的虚拟串行端口驱动程序有哪些好的入门资源?
-Adam
您无法在 C# 中制作内核模式设备驱动程序,因为运行时无法安全地加载到ring0 中并按预期运行。
此外,C# 不会创建适合作为设备驱动程序加载的二进制文件,特别是关于驱动程序需要公开的入口点。加载期间对运行时跳转、分析和 JIT 二进制文件的依赖禁止驱动程序子系统加载二进制文件所需的直接访问。
不过,正在进行的工作是将某些设备驱动程序提升到用户模式,您可以看到采访here http://channel9.msdn.com/posts/Charles/Peter-Wieland-User-Mode-Driver-Framework/与 UDMF(用户模式驱动程序框架)团队的 Peter Wieland 合作。
用户模式驱动程序更适合托管工作,但您必须在 google 上搜索一下以了解是否直接支持 C# 和 .NET。我所知道的是内核级驱动程序不能仅在 C# 中实现。
但是,如果您确实必须用 C# 编写大量代码,那么您可以制作一个 C/C++ 驱动程序和一个 C# 服务(或类似服务),并让驱动程序与托管代码进行对话。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)