如何在没有任何库或框架的情况下编写驱动程序?

时间:2012-05-07 15:16:57

标签: c++ c driver

我的问题是“如何编写没有WDK或DDK的驱动程序或......?” 我用Google搜索,但我找不到任何东西......
我只是想为了教育目的而这样做 我想在Windows 7中做到这一点 我知道c和汇编(但不是汇编的专业人员)

非常感谢帮助!

6 个答案:

答案 0 :(得分:2)

为任何操作系统编写驱动程序需要了解操作系统内核的驱动程序结构和系统调用以及其他行为:这就是DDK为您提供的内容。尝试在没有DDK的情况下执行此操作与尝试从头开始重新实现所有内核的驱动程序结构和系统调用相同。

可以想象,这可以做到:实际上它并不是真的可能,特别是对于任何成熟的操作系统,例如Windows 7。

答案 1 :(得分:1)

如果你的意思是让系统使用某些硬件的驱动程序 - 它(几乎)是不可能的。驱动程序必须以某种方式与系统接口,这就是DDK的用途。

但如果您只想访问某些设备(例如通过COM,LPT或USB连接),则除了COM,LPT或USB(已在系统中)之外,您不需要任何驱动程序。

答案 2 :(得分:0)

如果不使用驱动程序工具包,就没有办法做到这一点 - 美国政府司法部的微软受法律约束法令授权通过特权向任何人(甚至是他们自己的开发者)提供操作系统访问权限/未发布的API。

答案 3 :(得分:0)

你需要知道WDK或DDK做了什么并重新创建它。您将把特殊值推入特殊寄存器,响应特殊中断......等等。

未来的工作很多。

祝你好运!

答案 4 :(得分:0)

如果您的驱动程序是在Win7等特定操作系统下运行的驱动程序,那么您自然需要一个开发工具包,例如WDK,除非您想重新发明轮子。 这就像在不使用框架的情况下开发游戏,或者在不使用Android SDK的情况下开发Android应用程序。这可能是一项非常艰巨的任务,可以使用WDK等开发套件轻松完成。 编辑:如果你真的想深入研究处理驱动程序的代码,可以使用DDK创建驱动程序,然后使用逆向工程来查看低级代码,看看它如何与CPU交互以处理硬件

答案 5 :(得分:0)

我对Windows内部机构一无所知,但Andrew Tridgell使用LD_Preload进行了逆向工程Windows驱动程序的讨论。他没有使用任何驱动程序包或类似的东西

我对Window的动态链接器一无所知(我很确定Windows不使用.so的)但是他在Linux下通过虚拟机(他使用虚拟盒)运行Windows的技术应该可行。

您可以在此处查看更多详细信息http://lwn.net/Articles/425714/

对现有驱动程序进行逆向工程应该可以为您自己编写一个良好的开端。