Windows驱动程序可以用Python编写吗?
答案 0 :(得分:17)
是。您无法创建“经典”内核模式驱动程序。但是,从XP开始,Windows提供了User-Mode Driver Framework。显然,他们不能做任何事情 - 在启动操作系统时使用的任何驱动程序显然必须是内核模式。但是使用UMDF,您只需要实现COM组件。
除了启动时驱动程序,您还无法编写以下内容的UMDF驱动程序:
答案 1 :(得分:3)
明确的答案并非没有在您的C /汇编驱动程序中嵌入解释器。除非有人有框架,否则答案是否定的。一旦你有了解释器和绑定,那么其余的逻辑就可以在Python中完成。
然而,编写驱动程序是C最适合的事情之一。我想,生成的Python代码看起来很像C代码,并且破坏了解释器开销的目的。
答案 2 :(得分:3)
通过阅读Microsoft's advice关于在驱动程序中使用C ++的一个好方法来获得洞察力,这实际上是不可能的。作为C的衍生物,C ++的使用似乎很简单。在实践中,并非如此。
例如,您必须决定每个函数(以及每个汇编指令)是否在可分页或不可分页的内存中。这需要扩展C,小心使用新的C ++特性,或者在这种情况下是Python语言和VM的特殊扩展。此外,与驱动程序兼容的VM还必须处理不同的IRQL - “层次”的层次结构限制了您可以做什么和不能做什么。
答案 3 :(得分:1)
Python在虚拟机中运行,所以没有。
BUT:
您可以编写一个将Python代码转换为机器语言的编译器。一旦你完成了,你就可以做到。
答案 4 :(得分:1)
我不知道Windows上驱动程序的限制(内存分配方案,库的动态加载等),但是你可以在你的驱动程序中嵌入一个python解释器,此时你可以做任何你想做的事情。不是我认为这是一个好主意:))
答案 5 :(得分:0)
永远不要说永远,但是......没有
你可能能够一起破解一些东西来在python中运行驱动程序的用户模式部分。但内核模式的东西只能在C或汇编中完成。
答案 6 :(得分:0)
不,他们不能。必须使用可以
的语言编写Windows驱动程序然后,再没有什么能阻止你编写一个将python转换为机器代码的编译器;)