正在加载图片...
1.3.1移植性 Windows2000输出两个系统提供的运行时库,它们包含了以Rtl为前缀的函数。内核模式 驱动程序可以使用相同的内核模式Rt1Xx例程作为执行组件,但是不能调用用户模式 TxxX例程。 每个NT执行组件输出一组内核模式支持的例程,驱动程序和所有其他的内核模式组件可以 调用这些例程。如果支持例程的底层实现随着时间的推移发生了变化,它的调用者依然可 以保持不变,因为定义组件的接口没有发生变化。 大多数 Windows2000组件完全是用C写成的,仅仅少部分的HAL和内核是用汇编语言写成 的。所以操作系统对于硬件平台来说是容易移植的。内核模式驱动程序应该也使用C来 写,从而使得它能被系统兼容的C编译器重新编译、链接,并且运行在不同的 Windows 2000平台上。如果是一个wDM驱动程序,不用重新书写驱动程序部分的代码,也不用替换 驱动程序中的模块,就可以在 Windows98平台上运行 如果相同的特性不能保证被其他系统兼容的编译器所支持,驱动程序则不应该依赖于任何 特定系统兼容的C编译器或C支持库的特性。通常,驱动程序代码应该符合 ANSI C标准 要避免使用任何这个标准中描述为“实现定义的”的部分 特别地,编写可移植的 Windows2000驱动程序,最好避免以下的情况: 对数据类型的依赖,因为它可能随着平台的不同而在大小和表现形式上有所不同 调用任何保持状态的标准C运行时库函数 调用任何标准C运行时库函数,而操作系统已经提供了一个可以替换被调用函数的支 持例程 K提供了一组包含文件,这些文件中定义了系统特定的数据类型和常数,驱动程序(以 及所有其他内核模式组件)可以使用它们来保证平台之间的可移植性。大多数驱动程序包 含了主DDK内核模式的包含文件之一,这些文件是: ntddk.h和wdm.h。这些主包含文件不 仅收录了系统提供的头文件,它们定义了基本的内核模式类型;而且,还收录了针对不同 处理器构架特定的头文件的合适选择,从而驱动程序能被使用相应的编译器指令编译。 对于WDM驱动程序,DK提供了一组包含文件,它们输出 Windows2000内核模式支持例 程、宏、常数以及类型的一个子集。WDM驱动程序使用主DDK包含文件wdm.h而不是 ntddk.h。包含wdm.h以及只使用它所输出的支持例程、宏、常数以及类型,使得WDM驱动 程序可以象在 Windows2000上一样在 Windows98上编译运行 如果驱动程序需要与平台有关的定义,最好是将这些定义用# ifdef语句单独分割开,这样 就能使驱动程序针对合适的硬件平台被编译和连接。当然,使用DK主头文件提供的支持 例程、宏、常数和类型,你几乎可以避免实现任何与平台有关的条件编译代码 某些驱动程序包含系统提供的其他头文件来确保 Windows平台上的可移植性,特别是 SCSI、NIS、以及视频微端口驱动程序。关于这些类型的驱动程序的头文件的详细信息分 别参看第3部分,“存储驱动程序”;以及在线DDK中的“ Graphics Driver Desi Guide(图形驱动程序设计指南)”和“ Reference(参考)”,“ Network Driver guide (网络驱动程序设计指南)”和“ Reference(参考)” 1.3.2可配置性 因为 Windows nt/ Windows2000是一个可移植的操作系统,所以,设备及其驱动程序必须 是硬件可配置和软件可配置的。6 1.3.1 移植性 Windows 2000 输出两个系统提供的运行时库,它们包含了以 Rtl 为前缀的函数。内核模式 驱动程序可以使用相同的内核模式 RtlXxx 例程作为执行组件,但是不能调用用户模式 RtlXxx 例程。 每个 NT 执行组件输出一组内核模式支持的例程,驱动程序和所有其他的内核模式组件可以 调用这些例程。如果支持例程的底层实现随着时间的推移发生了变化,它的调用者依然可 以保持不变,因为定义组件的接口没有发生变化。 大多数 Windows 2000 组件完全是用 C 写成的,仅仅少部分的 HAL 和内核是用汇编语言写成 的。所以操作系统对于硬件平台来说是容易移植的。内核模式驱动程序应该也使用 C 来 写,从而使得它能被系统兼容的 C 编译器重新编译、链接,并且运行在不同的 Windows 2000 平台上。如果是一个 WDM 驱动程序,不用重新书写驱动程序部分的代码,也不用替换 驱动程序中的模块,就可以在 Windows 98 平台上运行。 如果相同的特性不能保证被其他系统兼容的编译器所支持,驱动程序则不应该依赖于任何 特定系统兼容的 C 编译器或 C 支持库的特性。通常,驱动程序代码应该符合 ANSI C 标准, 要避免使用任何这个标准中描述为“实现定义的”的部分。 特别地,编写可移植的 Windows 2000 驱动程序,最好避免以下的情况: ▪ 对数据类型的依赖,因为它可能随着平台的不同而在大小和表现形式上有所不同 ▪ 调用任何保持状态的标准 C 运行时库函数 ▪ 调用任何标准 C 运行时库函数,而操作系统已经提供了一个可以替换被调用函数的支 持例程 DDK 提供了一组包含文件,这些文件中定义了系统特定的数据类型和常数,驱动程序(以 及所有其他内核模式组件)可以使用它们来保证平台之间的可移植性。大多数驱动程序包 含了主 DDK 内核模式的包含文件之一,这些文件是:ntddk.h 和 wdm.h。这些主包含文件不 仅收录了系统提供的头文件,它们定义了基本的内核模式类型;而且,还收录了针对不同 处理器构架特定的头文件的合适选择,从而驱动程序能被使用相应的编译器指令编译。 对于 WDM 驱动程序,DDK 提供了一组包含文件,它们输出 Windows 2000 内核模式支持例 程、宏、常数以及类型的一个子集。WDM 驱动程序使用主 DDK 包含文件 wdm.h 而不是 ntddk.h。包含 wdm.h 以及只使用它所输出的支持例程、宏、常数以及类型,使得 WDM 驱动 程序可以象在 Windows 2000 上一样在 Windows 98 上编译运行。 如果驱动程序需要与平台有关的定义,最好是将这些定义用#ifdef 语句单独分割开,这样 就能使驱动程序针对合适的硬件平台被编译和连接。当然,使用 DDK 主头文件提供的支持 例程、宏、常数和类型,你几乎可以避免实现任何与平台有关的条件编译代码。 某些驱动程序包含系统提供的其他头文件来确保 Windows 平台上的可移植性,特别是, SCSI、NDIS、以及视频微端口驱动程序。关于这些类型的驱动程序的头文件的详细信息分 别参看第 3 部分,“存储驱动程序”;以及在线 DDK 中的“Graphics Driver Design Guide(图形驱动程序设计指南)”和“Reference(参考)”, “Network Driver Guide (网络驱动程序设计指南)”和“Reference(参考)”。 1.3.2 可配置性 因为 Windows NT/Windows 2000 是一个可移植的操作系统,所以,设备及其驱动程序必须 是硬件可配置和软件可配置的
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有