Windows驱动能用Python编写吗?

13 投票
7 回答
16209 浏览
提问于 2025-04-15 12:10

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

7 个回答

3

想要理解为什么这几乎是不可能的,看看微软关于在驱动程序中使用C++的建议会很有帮助。虽然C++是C语言的一个衍生版本,看起来使用起来很简单,但实际上并不是这样。

举个例子,你需要为每一个函数(实际上是每一条汇编指令)决定它是在可分页内存还是不可分页内存中。这就需要对C语言进行一些扩展,谨慎使用新的C++特性,或者在这种情况下,还需要对Python语言和虚拟机进行特别的扩展。此外,你的驱动程序兼容的虚拟机还必须处理不同的IRQL(中断请求级别)——这是一种“级别”的层次结构,会限制你可以做什么和不能做什么。

4

确切的答案是,如果你不在你的C或汇编驱动程序中嵌入一个解释器,那么就没有办法了。除非有人提供了一个框架,否则答案就是不行。一旦你有了解释器和绑定的设置,剩下的逻辑就可以用Python来完成。

不过,写驱动程序是C语言最擅长的事情之一。我想最终得到的Python代码看起来会和C代码非常相似,这样反而失去了使用解释器的意义。

18

是的,你不能创建“经典”的内核模式驱动程序。不过,从Windows XP开始,微软提供了一种叫做用户模式驱动框架的东西。显然,这种驱动程序不能做所有事情——比如,启动操作系统时需要的驱动程序必须是内核模式的。但使用用户模式驱动框架,你只需要实现一些COM组件就可以了。

除了启动时的驱动程序,你还不能写一些用户模式驱动程序,这些驱动程序:

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

撰写回答