Windows驱动可以用Python编写吗?

Windows驱动可以用Python编写吗?

是。 您不能创建“经典”的内核模式驱动程序。 但是,从XP开始,Windows提供了一个用户模式驱动程序框架 。 他们不能做任何事情,显然 – 用于启动操作系统的驱动程序显然必须是内核模式。 但是对于UMDF,您只需要实现COM组件。

除了启动时驱动程序,您也不能写UMDF驱动程序:

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

明确的答案不是没有将解释器嵌入到C / assembly驱动程序中。 除非有人有框架,否则答案是否定的。 一旦你有解释器和绑定的地方,然后其余的逻辑可以在Python中完成。

然而,编写驱动程序是C最适合的事情之一。 我想象得到的Python代码看起来很像C代码,并且打破了解释器开销的目的。

通过阅读微软关于在驱动程序中使用C ++ 的建议 ,了解为什么实际上不可能的一个好办法是。 作为C的衍生物,C ++的使用看起来很简单。 在实践中,并非如此。

例如,你必须决定每个函数(还有每个汇编指令)是否在可分页或不可分页的内存中。 这需要对C进行扩展,仔细使用新的C ++特性,或者在这种情况下是对Python语言和VM的特殊扩展。 另外,与驱动程序兼容的虚拟机也必须处理不同的IRQL – 有一个层次的“层次”限制了你可以做什么和不可以做什么。

Python在虚拟机上运行,​​所以不行。

但:

你可以编写一个将Python代码翻译成机器语言的编译器。 一旦你完成了,你可以做到这一点。

我不知道Windows上驱动程序的限制(内存分配方案,库和所有的动态加载),但是你也许可以在你的驱动程序中嵌入一个Python解释器,在这一点上你可以做任何你想做的事情。 不是我认为这是一个好主意:)

永远不要说永远,但呃..不

你可能能够一起破解一些东西在Python中运行用户模式驱动程序的一部分。 但是内核模式的东西只能在C或汇编中完成。

不,他们不能。 Windows驱动程序必须用可以的语言编写

  1. 与基于C的API接口
  2. 编译成机器码

再次,没有什么能够阻止你编写一个将python翻译成机器码的编译器;)