我将如何为自己的内核制作设备驱动程序?

时间:2018-06-21 04:13:03

标签: operating-system kernel driver hardware device-driver

我正在制作自己的操作系统,很有趣。我正在从英特尔的64位和IA-32架构手册中阅读和学习很多知识,这对开发操作系统很有帮助。

但是我无法在任何地方找到的一件事是如何制作设备驱动程序。我在互联网上能找到的关于设备驱动程序的唯一文章都是关于制作Linux或Windows驱动程序的。但这不同于为我自己的内核制作驱动程序。

有经验的人可以给我指出正确的方向,启发我在哪里我可以学习为自己的操作系统制作自己的设备驱动程序吗?

首先,简单的键盘或鼠标驱动程序就足够了,但无论是简单的键盘驱动程序还是复杂的网络驱动程序,我都会感激不尽

TL; DR:我需要一个扎实的资料来说明如何为自己的内核制作设备驱动程序。我找不到任何东西,希望有人偶然发现了一个人

(我不是问“如何制造司机?”,而是问“我是否可以链接到有关制造司机的书籍/帖子?”)

1 个答案:

答案 0 :(得分:2)

所有内核模式设备驱动程序都是在内核下执行的代码,该代码不被视为“主”内核映像本身-将其视为对主内核映像的“扩展”。例如,在Windows上,内核模式设备驱动程序(倾向于使用* .sys文件扩展名,该文件扩展名也属于Portable Executable(PE)格式)被视为ntoskrnl.exe(这是主内核映像)的模块。在Windows上)。

这个想法是,您的内核模式设备驱动程序将有权访问您的主内核映像导出的例程(例如,如果您要实现诸如内核模式回调之类的机制)。您可以先创建自己的简单格式以供内核理解,然后再开始实现适用于您自己的文件格式(用于主内核映像)的导出支持和导入支持(供使用的其他内核模式软件)。它应访问的API的名称(由主内核映像提供)。

如果想要良好的设计实现,您将有很多工作要做。