跳至内容

Windows 编程/DDK

来自维基教科书,开放的书籍,开放的世界

它是什么

[编辑 | 编辑源代码]

Windows DDK 附带 CD,并提供许多不同的选项。具体来说,DDK 能够为许多不同的平台(Win9x、WinNT、WinServer)编写设备驱动程序,并且能够针对多个不同的处理器(IA-32、IA-64 和 Itanium)。在每个处理器上安装每个平台所需的组件可能占用大量硬盘空间。此外,DDK 还附带了许多关于如何编写从并行端口控制器到文件系统驱动程序、显示驱动程序和以太网驱动程序等各种内容的示例。安装所有示例也可能占用大量磁盘空间。

另请参阅:获取 DDK

检查和自由环境

[编辑 | 编辑源代码]

DDK 附带了许多不同的批处理文件,这些文件将创建一个合适的驱动程序编程环境。不同的批处理文件将创建一个环境,用于为特定的操作系统/处理器组合进行编程。每个不同的环境都将设置一些全局变量,编译器和链接器将读取这些变量,以决定代码生成的方案。使用错误的环境编译驱动程序会导致驱动程序可能与您的系统不兼容(并且可能会使您的计算机不稳定)。

对于每个目标平台,都有两个环境可用:检查自由。检查环境本质上是一个调试环境,它将向已编译的驱动程序添加额外的调试膨胀,并执行额外的错误检查和警告。然而,自由环境不包含任何调试信息,只应用于编译完全调试的设备驱动程序。

DDK 附带编译器:cl.exe,链接器:link.exe 和汇编器:ml.exe。在编写设备驱动程序时,建议您只使用这些特定文件,并且不要使用您计算机上可能存在的任何其他版本的这些程序(无论是来自 SDK 还是 Visual Studio)。DDK 还将附带许多头文件。您可能熟悉其中一些头文件,但其中一些将包含内核模式库的函数原型,大多数程序员都不熟悉这些函数。

不透明成员

[编辑 | 编辑源代码]

DDK 定义了许多不同的数据结构,供设备驱动程序使用。但是,由于驱动程序在内核模式下运行,因此重要的是要意识到这些结构的许多字段仅供内核内部使用,您的驱动程序不应该修改它们。这些数据字段被称为结构的“不透明”成员,应该像对待 C++ 类的“受保护”或“私有”成员一样对待。在本维基教科书中未明确提及的数据字段应被视为可疑,如果有关于特定数据字段的可用性和使用情况的任何未解决问题,请咨询 MSDN 或 DDK 文档。

设备驱动程序应始终在安装到系统之前进行彻底的调试。如果在系统中安装了有缺陷的设备驱动程序,它可能会在引导时破坏内核,使整个系统不稳定,甚至完全无法使用。卸载有缺陷的驱动程序可能很困难,尤其是在您需要对计算机执行救援引导操作时。设备驱动程序应谨慎编写,并在安装之前进行全面调试。

华夏公益教科书