无比蛋疼的开始了新的翻译生活。。。
为了防止看完==忘完,特译此文档,仅供参考备忘,有撒肺腑感言只管讲,有错必纠,如需转载,请著名出处,谢谢合作
桑Q VERY MUCH
要创建/开发一个I/O Kit设备驱动需要一系列知识以及技巧。例如,你需要知道如何打包供安装的驱动。当需要用户参与时,你可能还需要本地化与驱动或者显示对话框相关的文本以及图片。再比如,你需要知道如何调试你的驱动,除非你打包票说你的代码可以完美的运行。
这个文档向我们展示了各种驱动编写者通常需要完成的任务。看起来就像是 I/O Kit Fundamentals(建议读者先看下,可以帮助读者对面向对象编程有一个大概了解,尤其是对C++编程,要是你想要开发能够访问设备的应用,你可以阅读一下 Accessing Hardware From Application, 需要提一下,Objective-C并不提供 I/O Kit或者 BSD的API接口,这些都是C的API,可以通过Cocoa应用调用它们。)的后续篇。本文档主要描述了I/O Kit 的架构以及家族,事件处理,以及内存,电源管理。集合了编写驱动,调试,测试以及发布I/O Kit设备驱动。
文档结构
“libkern C++ 运行时”
讲述了libern库的运行时赋予类型系统以及OSMetaClass在其中的角色,以及对象的创建与销毁,动态转型,对象自省以及二进制兼容的相关技术。
“libkern 集合以及容器类”
讲述了什么是libkern集合以及容器类以及如何使用它们。有一些代码示例,向我们展示了如何使用这些类以让其在运行时进行配置
“IOService API”
本章提供了在定义在IOService中的方法以及类型定义的一个概览, IOService是所有I/O Kit驱动的基类,包括对驱动匹配,发送以及接收通知,客户端以及供应商消息,电池管理以及终端处理等方法的描述。本章对于那些要开发它们自己的I/O Kit家族或者非非家族驱动的人来说是必不可少的资源。
“让应用能够访问硬件”
本章开始探讨有关在驱动以及一个用户空间程序之间传输数据的问题,并总结了一些列实现方式。接着还讲了一种方式:定制化的用户客户端。提供了一种客户端架构预览,并指出了会影响用户客户端设计的因素。最后,讲到了用户客户端两端的实现:在内核以及用户空间库中的IOUserClient的子类。
“内核-用户 通知”
本章讲述了如何使用内核-用户中心来向用户呈现本地化的对话框(阻塞式或者非阻塞式),加载用户空间可执行程序(包括特定的系统偏好设置的偏好设置面板),以及从资源束中加载精确的,本地化的用户界面用户界面。
“显示关于驱动的本地化信息”
总结了我们所熟知的内核扩展的资源束国际化的步骤以及如何从用户空间访问这些本地化的资源。
“调试驱动”
关于调试 I/O Kit设备驱动的话题以及技术相关信息的大汇总。探讨了如何在匹配以及加载阶段调试驱动,如何设置两台机器调试,如何使用内核调试宏,日志技术,以及debugging panics(这是咩啊)和系统挂起。
“测试以及发布驱动”
探讨了驱动测试的策略并提供了一些打包以及发布驱动的指导。