快速业务通道

从Windows 向Linux 迁移设备控制应用程序

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-05-07

通过认识 Microsoft Windows? 和 Linux? 操作系统设备控制的工作原理,本文将简化从 Microsoft Windows? 向 Linux? 迁移设备控制应用程序.作者分析二者的差别,并给出 C/C 示例.

如果读者开发过不同平台的设备控制应用程序,那么肯定了解 Windows 和 Linux 的设备控制方式的差别,从一个平台向另一个平台迁移应用程序相当复杂.本文分析两种操作系统的设备控制原理,探究从架构到系统调用的各个方面,重点比较二者差别.本文还给出一个迁移示例(用 C/C 编写),详细演示迁移过程.

工作条件:

根据本文的写作目的,“Windows” 是指 Windows 2000 或其后续版本,且安装有 Microsoft Visual C ? 6.0 或其后续版本.Linux应当基于 2.6 版内核,且安装有 GNU GCC.

比较设备控制的架构

Windows 和 Linux 设备控制的方式是不同的.

Windows 设备控制架构

Windows 的 I/O 子系统将用户应用程序和设备驱动程序联系起来,并定义基础结构支持设备驱动程序.设备驱动程序为具体设备提供 I/O 接口(参见图 1).

Windows 设备控制架构

图 1:Windows 设备控制架构

在设备控制过程中,I/O 操作封装为 IRP(I/O 请求数据包).I/O 管理器创建 IRP,并将它发送到堆栈顶部.然后,设备驱动程序获取 IRP 的堆栈地址.IRP 包含着 I/O 请求的参数.根据 IRP 包含的请求(比如 创建、 读取、写入、设备 I/O 控制、清除 或 关闭),各驱动程序通过硬件接口工作.

Linux 设备控制架构

Linux 的设备控制架构有所不同.主要区别是,Linux 的普通文件、目录、设备和 socket 都是文件 —Linux 的所有东西都是文件.为了访问设备,Linux 内核将设备操作调用通过文件系统映射到设备驱动程序.Linux 没有 I/O 管理器.所有 I/O 请求从开始就进入文件系统(参见图 2).

Linux 设备控制架构

图 2. Linux 设备控制架构 拥有帝国一切,皆有可能。欢迎访问phome.net

比较设备文件名和路径名

从开发的角度来看,获取设备句柄是设备控制的先决条件.但是,设备控制架构的差异,获取设备句柄会根据所用平台不同(Windows 还是 Linux)而有不同的过程.

一般而言,设备句柄由具体设备驱动程序的名称决定.

Windows 设备驱动程序的文件名不同于普通文件,通常称为设备路径名.它具有固定格式,形如 .DeviceName.在 C/C 编程中,这个字符串应当是 \.DeviceName.在代码中表示为 \\.\DeviceName.DeviceName 应当与相应设备驱动程序定义的设备名称相同.

有些设备名称由 Microsoft 定义,因此不能修改(如表 1 所示).

表 1. Windows 设备名称(x = 0,1,2 等)

设备 路径名
软盘驱动器 A: B:
硬盘逻辑子区 C: D: E: . . .
物理驱动器 PhysicalDrivex
CD-ROM、DVD/ROM CdRomx
磁带驱动器 Tapex
COM 端口 COMx

例如,我们在 C/C 编程中使用设备路径名,比如 \\.\PhysicalDrive1、\\.\CdRom0 和 \\.\Tape0. 关于这个列表未收录的其他设备的详细情况,请查看本文后面的 参考资料 小节.

Linux 将设备描述为文件,可以在目录 ./dev 中找到所有设备文件.这个目录的设备驱动程序包括:

IDE(Integrated Drive Electronics)硬盘驱动器,比如 /dev/hda 和 /dev/hdb
CD-ROM 驱动器,有些是 IDE;也有些是模拟 SCSI(Small Computer Systems Interface)设备的 CD-RW(CD 读/写)驱动器,比如 /dev/scd0
串行口,例如 /dev/ttyS0 表示 COM1,/dev/ttyS1 表示 COM2,依此类推
定位设备,包括 /dev/input/mice 等
打印机,比如 /dev/lp0
常见设备文件大多可以按照上述描述找到.有关其他设备文件名和设备的详细信息,请使用命令 dmesg. 拥有帝国一切,皆有可能。欢迎访问phome.net

比较主系

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号