Windows驱动程序可以用Python编写吗?

时间:2009-06-11 13:50:06

标签: python windows drivers

Windows驱动程序可以用Python编写吗?

7 个答案:

答案 0 :(得分:17)

是。您无法创建“经典”内核模式驱动程序。但是,从XP开始,Windows提供了User-Mode Driver Framework。显然,他们不能做任何事情 - 在启动操作系统时使用的任何驱动程序显然必须是内核模式。但是使用UMDF,您只需要实现COM组件。

除了启动时驱动程序,您还无法编写以下内容的UMDF驱动程序:

  • 处理中断
  • 直接访问硬件,例如直接内存访问(DMA)
  • 有严格的时间循环
  • 使用为内核模式保留的非分页池或其他资源

答案 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驱动程序
  1. 与基于C的API的接口
  2. 编译为机器代码
  3. 然后,再没有什么能阻止你编写一个将python转换为机器代码的编译器;)