C#驱动程序开发?

Ada*_*vis 15 c# drivers kernel device

在我一头扎进C#之前......

我一直觉得C或者C++最适合在Windows上开发驱动程序.我不喜欢在.NET机器上开发驱动程序的想法.

但.NET似乎是MS推动应用程序开发的方式,所以我现在想知道:

  • 人们是否正在使用C#来开发驱动程序?
  • 你是否需要做很多API挂钩,或者C#是否具备与内核接口的设施而没有太多的hackery?
  • 任何人都能说出比通常情况更接近环0的C#程序运行的可靠性和安全性吗?

我希望我的设备可以在C#中使用,如果C#中的驱动程序开发成熟,这显然是要走的路,但如果不推荐,我不想在那里花费很多精力.

  • 开始使用简单的虚拟串口驱动程序有哪些好的资源?

-亚当

ang*_*son 26

您无法在C#中创建内核模式设备驱动程序,因为运行时无法安全地加载到ring0并按预期运行.

此外,C#不会创建适合作为设备驱动程序加载的二进制文件,尤其是关于驱动程序需要公开的入口点.在加载期间依赖运行时跳转并分析和JIT二进制文件禁止驱动程序子系统加载二进制文件所需的直接访问.

然而,正在进行的工作是将一些设备驱动程序升级到用户模式,你可以在这里看到UDMF(用户模式驱动程序框架)团队的Peter Wieland 的采访.

用户模式驱动程序更适合托管工作,但您必须谷歌一点,以了解是否直接支持C#和.NET.我所知道的只是C#中的内核级驱动程序是不可行的.

但是,如果您必须在C#中编写大量代码,则可以创建C/C++驱动程序和C#服务(或类似服务器)并让驱动程序与托管代码通信.