什么是windows驱动开发? windows 驱动程序包 -是什么

\u4ec0\u4e48\u662fwindows\u9a71\u52a8\u7f16\u7a0b

Linux\u7684\u5185\u6838\u7f16\u7a0b\u5927\u5bb6\u90fd\u662f\u6bd4\u8f83\u719f\u6089\u7684\u3002\u800cWindows\u5185\u6838\u7f16\u7a0b\u5219\u4e0d\u5927\u4e3a\u4e00\u822c\u8bfb\u8005\u6240\u719f\u6089\u3002\u5e38\u5e38\u6709\u8fd9\u6837\u7684\u95ee\u9898\uff1a
\u201c\u4f60\u53c8\u6ca1\u6709Windows\u7684\u4ee3\u7801\uff0c\u4f60\u5982\u4f55\u641e\u5185\u6838\u7f16\u7a0b\uff1f\u201d
\u201c\u9664\u4e86\u5fae\u8f6f\u7684\u4eba\uff0c\u96be\u9053\u8fd8\u6709\u4eba\u505aWindows\u5185\u6838\u5417\uff1f\u201d
\u201cWindows\u5185\u6838\u7f16\u7a0b\u6709\u7528\u5417\uff1f\u201d
\u5176\u5b9eWindows\u5185\u6838\u7f16\u7a0b\u4e0d\u4f46\u6709\u7528\uff0c\u800c\u4e14\u5e38\u7528\u3002\u5f88\u591a\u6211\u4eec\u6bcf\u5929\u90fd\u4f7f\u7528\u7684\u8f6f\u4ef6\uff0c\u5c31\u6beb\u65e0\u7591\u95ee\u7684\u4f7f\u7528\u4e86Windows\u5185\u6838\u7f16\u7a0b\u7684\u6280\u672f\u3002\u6700\u5178\u578b\u7684\u5c31\u662f\u5b9e\u65f6\u76d1\u63a7\u7684\u6740\u6bd2\u8f6f\u4ef6\u3002\u6b64\u5916\u8fd8\u6709\u9632\u706b\u5899\u3001\u865a\u62df\u5149\u9a71\u3001\u4ee5\u53ca90%\u7684\u9a71\u52a8\u7a0b\u5e8f\u3002\u8fd9\u4e9b\u7a0b\u5e8f\u7684\u6709\u4e00\u4e2a\u5171\u540c\u7684\u7279\u70b9\uff0c\u4ed6\u4eec\u7684\u4e00\u90e8\u5206\u7ec4\u4ef6\uff0c\u662f\u4f5c\u4e3aWindows\u7684\u4e00\u90e8\u5206\uff0c\u80fd\u5bf9 Windows\u4e0a\u8fd0\u884c\u7684\u6240\u6709\u7684\u5e94\u7528\u7a0b\u5e8f\u8d77\u4f5c\u7528\u3002
\u56e0\u6b64\u5185\u6838\u7f16\u7a0b\u7684\u5e94\u7528\uff0c\u5f80\u5f80\u7ed9\u4f20\u7edf\u8f6f\u4ef6\u5e26\u6765\u66f4\u5f3a\u7684\u529f\u80fd\uff0c\u5b9e\u73b0\u6280\u672f\u4e0a\u7684\u98de\u8dc3\u3002
\u4e3e\u4e2a\u4f8b\u5b50\u3002\u6211\u4eec\u5e38\u5e38\u542c\u8bf4\uff0c\u5bf9\u6587\u4ef6\u8fdb\u884c\u52a0\u5bc6\uff0c\u53ef\u4ee5\u4f7f\u6587\u6863\u66f4\u52a0\u5b89\u5168\u3002\u5bf9\u6587\u4ef6\u52a0\u5bc6\u5e76\u4e0d\u9700\u8981\u4efb\u4f55\u5185\u6838\u7ec4\u4ef6\u3002\u6211\u4eec\u53ef\u4ee5\u5199\u4e00\u4e2a\u5e94\u7528\u7a0b\u5e8f\uff0c\u8bfb\u5165\u6587\u4ef6\uff0c\u52a0\u5bc6\u6570\u636e\uff0c\u7136\u540e\u91cd\u5199\u4e3a\u4e00\u4e2a\u52a0\u5bc6\u6587\u4ef6\u3002\u89e3\u5bc6\u4e5f\u53ef\u4ee5\u540c\u6837\u5982\u6b64\u3002
\u4f46\u662f\u5b9e\u9645\u4e0a\u8fd9\u5e76\u4e0d\u6ee1\u8db3\u4e00\u822c\u7684\u7528\u6237\u9700\u6c42\u3002\u5bf9\u4e00\u4e2a\u516c\u53f8\u7684\u5458\u5de5\u6765\u8bf4\uff0c\u90a3\u4e9b\u201c\u91cd\u8981\u7684\u6587\u6863\u201d\u5f88\u53ef\u80fd\u5c31\u662f\u6bcf\u5929\u5de5\u4f5c\u6240\u7528\u7684\u6587\u4ef6\u3002\u60f3\u8c61\u4e00\u4e0b\uff0c\u4ed6\u5fc5\u987b\u8981\u6bcf\u5929\u4ece\u670d\u52a1\u5668\u4e0a\u4e0b\u8f7d\u52a0\u5bc6\u7684\u6587\u4ef6\uff0c\u7136\u540e\u7528\u89e3\u5bc6\u5de5\u5177\u89e3\u5bc6\u3002\u7136\u540e\u7528Office\u5f00\u59cb\u5de5\u4f5c\u3002\u5de5\u4f5c\u5b8c\u6bd5\u540e\uff0c\u7528\u52a0\u5bc6\u5de5\u5177\u52a0\u5bc6\uff0c\u518d\u4e0a\u4f20\uff0c\u7136\u540e\u5220\u9664\u5de5\u4f5c\u6587\u6863\u3002\u4e14\u4e0d\u8bf4\u5927\u90e8\u5206\u65f6\u95f4\u6587\u6863\u662f\u4ee5\u89e3\u5bc6\u7684\u65b9\u5f0f\u4fdd\u5b58\u5728\u786c\u76d8\u4e0a\u7684\u4e0d\u5b89\u5168\u6027\uff0c\u8fd9\u4e2a\u5de5\u4f5c\u6d41\u7a0b\u662f\u53ef\u4ee5\u63a5\u53d7\u7684\u5417\uff1f\u6ca1\u6709\u4eba\u4f1a\u63a5\u53d7\u7684\u3002
\u6bd4\u8f83\u201c\u4eba\u6027\u5316\u201d\u7684\u65b9\u5f0f\u5c31\u662f\u8ba9Office\u53ef\u4ee5\u76f4\u63a5\u6253\u5f00\u5df2\u7ecf\u52a0\u5bc6\u7684\u6587\u6863\u3002\u4fdd\u5b58\u7684\u65f6\u5019\uff0c\u76f4\u63a5\u5c31\u4fdd\u5b58\u6210\u52a0\u5bc6\u7684\u6587\u6863\u3002\u786c\u76d8\u4e0a\uff0c\u8fd9\u4e2a\u6587\u6863\u59cb\u7ec8\u662f\u52a0\u5bc6\u7684\u3002\u800c\u4e14\u5bf9\u5408\u6cd5\u7684\u7528\u6237\u900f\u660e\u3002\u5bf9\u975e\u6cd5\u7684\u7528\u6237\uff0c\u5219\u53ea\u80fd\u770b\u89c1\u5bc6\u6587\uff0c\u4ece\u800c\u65e0\u6cd5\u7f16\u8f91\u4e5f\u65e0\u6cd5\u9605\u8bfb\u3002\u800c\u4e14\u4e5f\u4e0d\u4ec5\u4ec5Office,\u8fd8\u6709AutoCAD\u3001Visual Studio\u3001Photoshop\u7b49\u7b49\u7528\u6237\u53ef\u80fd\u7528\u4e8e\u7f16\u8f91\u673a\u5bc6\u6587\u4ef6\u7684\u6240\u6709\u7684\u5de5\u5177\u3002\u8fd9\u662f\u53ef\u4ee5\u5b9e\u73b0\u7684\u5417\uff1f\u5982\u679c\u6211\u4eec\u4e0d\u80fd\u53bb\u4fee\u6539Office\u548c\u5176\u4ed6\u7684\u5de5\u4f5c\u8f6f\u4ef6\u3002
\u8fd9\u5f53\u7136\u662f\u53ef\u4ee5\u5b9e\u73b0\u7684\u3002\u65e2\u7136\u6211\u4eec\u7f16\u5199Windows\u5185\u6838\u7a0b\u5e8f\uff0c\u5f53\u7136\u53ef\u4ee5\u8ba9Windows\u7684\u6587\u4ef6\u7cfb\u7edf\u4ece\u786c\u76d8\u8bfb\u53d6\u6587\u4ef6\u7684\u65f6\u5019\uff0c\u5bf9\u7279\u5b9a\u7684\u8fdb\u7a0b\u8fdb\u884c\u7279\u522b\u7684\u89e3\u5bc6\u3002\u7b49\u8fd9\u4e9b\u8f6f\u4ef6\u8bfb\u53d6\u5230\u6570\u636e\u7684\u65f6\u5019\uff0c\u5b83\u4eec\u8bfb\u5230\u7684\u5df2\u7ecf\u662f\u6b63\u5e38\u7684\u6570\u636e\u4e86\u3002\u8fd9\u4e2a\u8fc7\u7a0b\u548c\u5b9e\u65f6\u626b\u63cf\u75c5\u6bd2\u7684\u539f\u7406\u662f\u4e00\u6837\u7684\uff0c\u4f7f\u7528\u4e00\u4e2a\u6587\u4ef6\u8fc7\u6ee4\u9a71\u52a8\u7a0b\u5e8f\u3002\u8fd9\u5c31\u662f\u8bfb\u8005\u53ef\u80fd\u5df2\u7ecf\u542c\u5230\u8fc7\u7684\u6587\u4ef6\u900f\u660e\u52a0\u5bc6\u6280\u672f\u3002
\u5728\u548c\u300a\u5929\u4e66\u591c\u8bfb\uff1a\u4ece\u6c47\u7f16\u8bed\u8a00\u5230Windows\u5185\u6838\u7f16\u7a0b\u300b\u4e00\u4e66\u540c\u4e00\u7cfb\u5217\u7684\u300a\u5bd2\u6c5f\u72ec\u9493\u2014\u2014Windows\u5185\u6838\u7f16\u7a0b\u4e0e\u4fe1\u606f\u5b89\u5168\u300b\uff08\u9884\u8ba1\u660e\u5e74\u51fa\u7248\uff09\u4e2d\uff0c\u5bf9\u952e\u76d8\u8fc7\u6ee4\u3001\u786c\u76d8\u8fc7\u6ee4\u3001\u6587\u4ef6\u8fc7\u6ee4\u3001\u7f51\u7edc\u8fc7\u6ee4\u7b49\u5b89\u5168\u76f8\u5173\u7684\u5185\u6838\u7f16\u7a0b\uff0c\u90fd\u6709\u8be6\u5c3d\u7684\u8bb2\u89e3\u548c\u4f8b\u5b50\u3002
\u5185\u6838\u7f16\u7a0b\u7684\u53e6\u4e00\u4e2a\u7279\u70b9\u662f\uff1a\u8fd9\u4e9b\u4ee3\u7801\u8fd0\u884c\u5728R0\u7ea7\u3002R0\u7ea7\u522b\u662f\u6700\u9ad8\u7279\u6743\u7ea7\u522b\u3002\u5bf9CPU\u6709\u5b8c\u5168\u63a7\u5236\u7684\u80fd\u529b\u3002\u8fd9\u975e\u5e38\u7684\u9002\u5408\u4e00\u4e9b\u5b89\u5168\u8f6f\u4ef6\uff0c\u5f53\u7136\u4e5f\u9002\u5408\u505a\u7834\u574f\u7684\u5de5\u4f5c\u3002\u56e0\u4e3a\u5185\u6838\u7a0b\u5e8f\u6709\u6700\u9ad8\uff08\u4e5f\u5c31\u662f\u6839\uff09\u6743\u9650\uff0c\u8fd9\u6837\u7684\u6280\u672f\u5728\u5b89\u5168\u9886\u57df\uff08\u6216\u8005\u7834\u574f\u9886\u57df\uff09\u88ab\u79f0\u4e3arootkit\u6280\u672f\u3002rootkit\u6280\u672f\u662f\u5f53\u524d\u5b89\u5168\u9886\u57df\u6700\u70ed\u95e8\u7684\u6280\u672f\u4e4b\u4e00\u3002
\u8bb8\u591a\u75c5\u6bd2\u4f7f\u7528\u4e86rootkit\u6280\u672f\u3002\u7528\u6765\u9690\u85cf\u75c5\u6bd2\u6587\u4ef6\uff0c\u7a83\u53d6\u5bc6\u7801\u3001\u53d1\u9001\u653b\u51fb\u5305\u7b49\u7b49\u3002rootkit\u75c5\u6bd2\u611f\u67d3\u540e\u6781\u96be\u6e05\u9664\uff0c\u5728\u611f\u67d3\u524d\u63d0\u524d\u9632\u8303\u662f\u6700\u6709\u6548\u7684\u529e\u6cd5\u3002
Windows\u5185\u6838\u786e\u5b9e\u6ca1\u6709\u516c\u5f00\u6e90\u4ee3\u7801\u3002\u4f46\u662fMS\u63d0\u4f9bWindows\u5185\u6838\u7a0b\u5e8f\u7684\u5f00\u53d1\u5305\uff1aWDK\u3002WDK\u5b9e\u9645\u4e0a\u4e3b\u8981\u7528\u4e8e\u5f00\u53d1\u9a71\u52a8\u7a0b\u5e8f\u3002\u800c\u9a71\u52a8\u7a0b\u5e8f\u57fa\u672c\u4e0a\u90fd\u662f\u5185\u6838\u7a0b\u5e8f\u3002WDK\u63d0\u4f9b\u7684\u5934\u6587\u4ef6\u4ee5\u53ca\u90e8\u5206\u6e90\u4ee3\u7801\uff0c\u5b9e\u9645\u4e0a\u5c31\u662fWindows\u5185\u6838\u7684\u4ee3\u7801\u7684\u4e00\u90e8\u5206\u3002\u6709\u90e8\u5206\u9a71\u52a8\u7a0b\u5e8f\uff08\u6bd4\u5982FAT32\u6587\u4ef6\u7cfb\u7edf\uff09\u7684\u4ee3\u7801\u662f\u5b8c\u5168\u516c\u5f00\u7684\u3002\u6211\u4eec\u4e5f\u53ef\u4ee5\u5728\u8fd9\u91cc\u770b\u5230Windows\u5185\u6838\u5f00\u53d1\u8005\u7684\u4ee3\u7801\u98ce\u683c\u3002\u540c\u65f6\uff0c\u5fae\u8f6f\u4e5f\u63d0\u4f9b\u4e86\u6240\u6709Windows\u7248\u672c\u7684\u7b26\u53f7\u8868\u5728\u7f51\u4e0a\u4f9b\u7814\u7a76\u8005\u4e0b\u8f7d\u3002\u5e76\u63d0\u4f9b\u4e86\u529f\u80fd\u65e0\u6bd4\u5f3a\u5927\u7684\u8c03\u8bd5\u5668WinDbg\u3002\u6709\u4e86\u5b83\u4eec\uff0c\u4f60\u5c31\u53ef\u4ee5\u8f7b\u677e\u7684\u8c03\u8bd5Windows\u5185\u6838\u4e86\u3002\u65e0\u8bba\u662f\u4f60\u81ea\u5df1\u5199\u7684\u4ee3\u7801\u7684\u90e8\u5206\uff0c\u8fd8\u662fWindows\u5185\u6838\u5f00\u53d1\u8005\u4eec\u7f16\u5199\u7684\u90e8\u5206\u3002\u867d\u7136\u770b\u5230\u7684\u662f\u6c47\u7f16\u8bed\u8a00\uff0c\u4f46\u662f\u51fd\u6570\u540d\u548c\u5168\u5c40\u53d8\u91cf\u540d\u90fd\u662f\u5b58\u5728\u7684\u3002\u800c\u4e14\uff0c\u6240\u6709\u7684\u8fd9\u4e9b\uff08WDK\u3001WinDBG,\u7b26\u53f7\u8868\uff09\u90fd\u662f\u514d\u8d39\u7684\u3002

\u90a3\u60a8\u8fd8\u5728\u7b49\u4ec0\u4e48\u5462\uff1f\u6b22\u8fce\u8fdb\u5165Windows\u5185\u6838\u7f16\u7a0b\u7684\u4e16\u754c\uff01



\u672c\u6587\u6765\u81eaCSDN\u535a\u5ba2\uff0c\u8f6c\u8f7d\u8bf7\u6807\u660e\u51fa\u5904\uff1ahttp://blog.csdn.net/broadviewprograming/archive/2009/03/10/3975093.aspx

windows \u9a71\u52a8\u7a0b\u5e8f\u5305\u662fwin\u81ea\u5e26\u7684\u5e38\u7528\u7a0b\u5e8f\u9a71\u52a8\u3002\u5982\u4f60\u63d2u\u76d8win\u4f1a\u81ea\u52a8\u5b89\u88c5\uff0c\u6dfb\u52a0\u5176\u5b83\u4e00\u4e9b\u8bbe\u5907\u65f6\uff0cwin\u4e5f\u4f1a\u81ea\u52a8\u5728windows \u9a71\u52a8\u7a0b\u5e8f\u5305\u67e5\u627e\u81ea\u5e26\u7684\u9a71\u52a8\uff0c\u6709\u4e9b\u50cf\u4e07\u80fd\u9a71\u52a8\u3002\u5220\u4e86\u4e5f\u4e0d\u8981\u7d27\uff0c\u4f60\u53ef\u4ee5\u7528\u81ea\u5e26\u7684\u7a0b\u9a71\u52a8\u5c31\u884c\u4e86

这个,介绍只好复制来说了。我觉得你要是有兴趣,随便在那都能找到很多有趣的资料。看下面驱动的发展史:

Windows 驱动程序的发展演变
我们在学习开发驱动程序时有必要弄清楚Windows设备驱动程序的发展演变过程(为了简便起见,以下简称驱动程序),以便明白我们将要开发什么样的驱动程序。这就象你开发一个应用程序时必须弄清楚它是运行在WINDOWS平台下还是在DOS平台下,否则我们能写出什么样的应用程序就可想而知了。
驱动程序开发者的各项任务之中,有许多是为特定的硬件编写驱动程序。由于WINDOWS的发展,这样的工作在 Windows 9X 下要比在前一版Windows(windows3.x 、Windows Workgroup) 中容易得多。先了解一些历史演变,可能会对驱动程序的编写有所帮助。
实模式Windows(Real-Mode Windows)
从一开始,MS-DOS 和系统基本输入输出系统(BIOS) 就已经提供了许多硬件设备的驱动程序。BIOS 通过一些常用的软件中断,开放出驱动程序的服务 ,像INT 10h 是显示系靳中断,INT 13h是磁盘子系靳中断,INT 16h 是键盘中断等等。BIOS 也处理硬件中断,并承担对“可编程中断控制器”(Programmable Interrupt Controller ,PIC )的管理任务。MS-DOS 也通过软件中断(如 INT 21h 、INT 25h 、INT 26h )提供了系统服务 ,并提供一个机制(CONFIG.SYS 中的 device= 语句),让新的或强化后的驱动程序能?蛟谙到y启动时被加载进操作系统内核。
标准模式Windows(Standard-Mode Windows)
早期的 Windows 中,MS-DOS 和 BIOS 是最重要的。Windows运行在实模式状态中,这时的Windows充其量不过是一个强化后的MS-DOS图形用户界面而已。从系统角度看,Windows只不过是个大的图形应用程序。Intel 80286 的出现,使 Windows能?蛟诒;つJ街性诵胁⒒竦酶叽? 16MB 实际内存空间。依靠保护模式和实模式的转换,Windows 仍然继续使用MS-DOS 和 BIOS 提供的服务来完成所有的系统需求。这种运作模式被称为 Windows标准模式(Windows standard mode) 。在 80286 机器上切换实模式和保护模式,系统开销很大。Intel 于是提供了一个快又有效率的指令,让你从实模式切换到保护模式。但Intel 认为没有什么人还需要再从保护模式切换回实模式。结果,唯一能?蛉帽;つJ匠绦颍ㄈ? Windows standard mode )存取实模式软件(如 MS-DOS )的方法就是复位CPU(reset CPU) 。在人们开发出来的各种复位方法中,最普遍的一种就是触发键盘控制器,提供由 Ctrl-Alt-Delete 键所发出的外部信号。于是引发所谓的三键失效(triple fault,即三键热启动),这是 CPU 先天无法处理的一种“失效“。事实上无论哪一种作法,代价都很昂贵,因为它们至少都得经过 BIOS 的引导程序 。事实上,在某些 286 机器,模式的切换要花掉好几毫秒。显然 Windows 需要一种方法,避免每次一有事件发生,像是键盘被按下或鼠标移动等等,就得切换到实模式。解?Q方法就是写一个保护模式驱动程序,可以在保护模式中处理 I/O 中断。这些驱动程序直到今天我们都还在使用,你在 SYSTEM 子目录中看到的扩展名为 .DRV 的文件都是!包括 MOUSE.DRV 、COMM.DRV 等等。我把它们称为 ring3 DLL 驱动程序,因为它们实质上都是 16 位 Windows 动态链接库(DLLs ),在 ring3层 (Intel CPU 最不受保护的层,一般应用程序运行在ring3层,核心态的驱动程序动行在ring0层)执行。它们的任务是在不离开 CPU保护模式的前提下,和 Windows KERNEL 、USER 、GDI 模块之间形成接口。
增强模式Windows(Enhanced-Mode Windows )
Intel 80386 CPU 使 Windows的第三种操作模式(所谓的 enhanced mode)成为可能。在此模式中 Windows 采用分页(paging) 和虚拟86(V86) 特性,创造出??拟机器(VirtualMachines ,VMs )。对一个应用程序而言,VM 就像一独立的的个人电脑,独自拥有自己的键盘、鼠标、显示器等等硬件。而实际上,经过所谓的??拟化(virtualization ),数个 VMs 共享相同硬件。对最终用户而言,最大的好处是他现在能?蛟诖翱谧刺?中(而非全屏幕)运行MS-DOS程序 。"??拟化"是 VxDs 的工作。VxD 的名称来自于 "virtual x device",意思是此驱动程序用来??拟化某个(x )设备。例如:VKD用来??拟化键盘,使Windows 和任何一个MS-DOS程序都自认为独立拥有属于自己的键盘。VMD 用来??拟化鼠标。某些 VxDs 并不是为了??拟化某些硬件,而是为了提供各种底层系统服务。页面交换(PAGESWAP) 和 页面文件(PAGEFILE)就属于这种非设备VxD ,它们共同管理交换文件(swap file ),使 增强模式Windows (enhanced-modeWindows) 得以将磁盘空间分配成为??拟内存的一部份。尽管基础技术令人耳目一新,但增强模式Windows (enhanced-mode Windows )还是继续在磁盘和文件 I/O 方面使用 MS-DOS 和 BIOS 。需要交换(swap )一个文件时,它还是把 CPU 切换到 V86 模式,让 MS-DOS 和 BIOS 来处理 I/O 操作。在保护模式、真实模式、V86 模式之间的所有切换动作都使得 Windows 慢下来。更多
的延时则来自于MS-DOS 和 BIOS 不可重入这一问题(即不能两个程序同时使用相同的服务)。Windows 必须强迫所有应用程序在同一个队列等待实模式服务。
Windows95
Windows 95 将终结这一份对历史的回忆。Windows 95 使用数种不同的驱动程序模型,大部份是使用 32 位 ring0层的虚拟设备驱动程序(VxDs) ,而非 rin3层的 DLLs 。所有的设备驱动程序都有一个具有管理功能的核心虚拟机VMM(虚拟机管理器)管理。
Windows对中断的处理与MS-DOS大不一样。当中断发生时,处理器转换为ring0级保护模式。Windows系统并不像MS-DOS那样通过中断描述符表IDT(Interrupt Descriptor Table)直接指向中断处理过程,而是由IDT入口指向VMM中的程序。该程序将判断是否为中断调用,如果是,则把中断控制权交给虚拟可编程中断控制器VPICD(Virtual Programmable Interrupt Controller Device),VPICD实际上是一个重要的VxD。VPICD再将其交给另一个注册了该中断的VxD(如Audcard.vxd)来处理。VxD程序是通过调用VPICD服务VPICD_Virtualize_IRQ来注册中断的。
Windows 95 对于设备 (device) 的处理,一般的模型是:由一个 VxD 掌管所有中断并执行所有数据传输,应用程序则使用函数调用 (function calls) 的方式对 VxDs 发出服务请求。这种VxD 为主的设备规划模型的一个好例子就是:Windows 95 的串行通信(serial communications) 。从前 Windows的串行通讯是使用一个 ring3 驱动程序(COMM.DRV ),?群?硬件中断处理程序以及驱动一个通用异步收发蕊片(universal asynchronous receiver-transmitter (UART )蕊片)所需的全部逻辑功能代码。在未让此驱动程序知道的情?r下,两个 VxDs (VCD 和COMBUFF )拦截了硬件中断和软件 IN/OUT 指令,为的是??拟化每一个 port ,并且改善因多任务而引起的问题。Windows 95 也有一个 ring3 组件名为 COMM.DRV ,但这个组件已经成为新的VxD (VCOMM )的一个简单的外层程序,只用来提供 16 位程序和 VCOMM之间的接口。VCOMM 则处于底层,联结一般应用程序、VxD clients 、 VxD 端口驱动程序和实际的硬件。端口驱动程序现在负责处理所有中断,并执行真正与硬件起作用的 IN/OUT 指令。
Windows 95 文件系统是另一个好例子。过去,对文件系统服务的请求(requests ),源自于16 位保护模式程序所发出的 INT 21h 。有一个 VxD 用来处理这些 INT 21h ,并将它们切换到 V86 模式,以便让MS-DOS 处理。MS-DOS 发出 INT 13h中断 ,以请求使用 BIOS 的磁盘 I/O 功能;发出 INT 2Fh ,允许网络的 "redirector modules"(重新定向模块)将此请求通过网络传输出去。Windows 95 提供给应用程序的,仍是向上兼容的接口,INT 21h 仍旧是导至文件系统的动作,但是底层基础却大不一样。
在 Windows 95 之中,一个名为“可安砚文件系统“(Installable File System ,IFS )的管理器会处理所有 INT 21h ,甚至是来自于 V86 模式的。然后它把控制权交斤一个文件系统驱动程序(File System Driver ,FSD )。有一个 FSD 名为 VFAT ,是针对 MS-DOS
文件系统(所谓 File Allocation Table ,FAT )而设计;另一个 FSD 名为 CDFSD ,可以解析 CD-ROM 格式;此外还有其他 FSDs ,知道如何经由各种网络彼此通讯。针对本机(local 端)FSD (如VFAT )的磁盘操作,会经过被I/O管理器(Input/Output Supervisor ,IOS)监视管理的一堆VxDs处理。甚至 V86 模式的 INT 13h 中断调用最终也是由 IOS 处理。换句??真,实模式和保护模式所发出的对文件系靳的请求(request ),不论是针对本地(local )或远程(remote )磁盘,有可能完全(或几乎完全)由 VxDs 来处理。Windows 95 这种以 VxD 为中心的驱动程序模型,好处之一是,系统程序员不一定要是 MS-DOS 和 BIOS 的专家,就可以写驱动程序。那些准备提供系统扩展组件的程序员,也同享这个好处;原本你必须了解DOS保护模式接口(DPMI)以及 Windows 核心模块的许多神秘特性或未公开特性,现在只需了解 Win32 的 DeviceIoControl API 函数,以及那些支持所谓 "alertable waits”(即时唤醒,大意是那些可以在VXD中调用的Windows 32位 API函数,但数量极其有限,)的 Win32 API 即可。这两个接口可以让你把 VxD 当做 32 位应用程序的扩展组件。尽管Windows系统驱动程序设计的任务主要是在系统底层上扩展 Windows 的功能,但Windows 95 还是保留了令人印象深刻的向上兼容能力(对上层程序,如dos程序来说,它们的调用接口没变,但底层实际操作却大不一样了)。DPMI 还是存在(有些16 位程序还是需要它),你还是可以运行实模式的网络驱动程序或文件系统驱动程序--如果这是你的必要选择。事实上,你往往可以把 Windows 3.1 的一整组硬件设备、网络驱动程序、16 位应用程序及其必要的 VxDs 整个搬到 Windows 95 ,不至于遭遇什么大问题。

Windows98&2k&NT
1996年的Windows Hardware Engineering Conference(WinHEC)会议上,Microsoft宣布了一种新的Windows设备驱动程序模型――Win32 Driver Model(WDM)。这种新的设备驱动程序模型将成为Windows 2000(即Windows NT 5.0)的核心。
这个消息令从事Windows设备驱动程序(VxD)开发的程序员感到沮丧(虽然大家早已预料到Windows系列与Windows NT系列最终将走到一起)。WDM将vxd的开发人员带到了一个新的起点上,什么都是新的:新的模式,新的观点。如果你曾看过DDK的汇编代码的话,你一定可以体会这个消息对VxD开发者是个沉重的打击,而对于Windows NT设备驱动程序(Kernel Mode Driver)的开发者来说,却是另一番心情――因为WDM基本等于Kernel Mode Driver+Plug and Play。

VxD将让位于WDM,现在令我们欣慰的是Microsoft宣布Windows 98(Windows 98支持VxD,推荐使用WDM方式驱动,但有些设备,如打印机等还不能用它,微软预先设想的是Windows98和Windows 2k x86版在WDM驱动上可以二进制码兼容,但实际上没有完全实现)可能会坚持到200X年(天知道,估计也就是三两年)。在这期间,掌握VxD技术的你还是可以主动要求老板给你加薪的。即使到了WDM一统天下之时,也不用灰心,因为无论是VxD还是WDM,都要求开发人员对计算机硬件有着全面而细致的了解。通过VxD的锻炼,你至少熟悉了计算机的硬件资源并对保护模式有了比较深刻的认识,这些东西都是将来从事WDM开发的硬功夫。

好了,该说说Windows NT了。在Windows NT中,80386保护模式的“保护”比Windows 95中更坚固,这个“镀金的笼子”更加结实,更加难以打破。在Windows 95中,至少应用程序I/O操作是不受限制的,而在Windows NT中,我们的应用程序连这点权限都被剥夺了。在NT中几乎不太可能进入真正的ring0层。
在Windows NT中,存在三种Device Driver:

1.“Virtual device Driver” (VDD)。通过VDD,16位应用程序,如DOS 和Win16应用程序可以访问特定的I/O端口(注意,不是直接访问,而是要通过VDD来实现访问)。

2.“GDI Driver”,提供显示和打印所需的GDI函数。

3.“Kernel Mode Driver”,实现对特定硬件的操作,比如说CreateFile, CloseHandle (对于文件对象而言), ReadFile, WriteFile, DeviceIoControl 等操作。“Kernel Mode Driver”还是Windows NT中唯一可以对硬件中断和DMA进行操作的Driver。SCSI 小端口驱动和 网卡NDIS 驱动都是Kernel Mode Driver的一种特殊形式。

Windows NT的驱动程序模型与Windows 3.1、Windows 95是截然不同的。所以如你的程序使用的某些特有驱动程序是VXD驱动的话,在Windows nt和windows 2k中是不能运行的。你听说过的CIH病毒就是运用的是VXD相似技术。所以不可能在nt和windows 2k中感染CIH病毒。
关于WDM驱动程序方面的相关知识,可以参看《WINDOWS WDM设备驱动程序开发指南》和《Programming the Microsoft Windows Driver Model》两本书或参看微软DDK文档。在本专栏以后的文章中,我们将一起学习WDM驱动程序的开发技术(大势所趋嘛)。

  • 浠涔堟槸鐢佃剳椹卞姩,鐢佃剳椹卞姩绋嬪簭濡備綍鍒嗙被?
    绛旓細浣嗘槸瀵逛簬鍒殑鐨勭‖浠讹紝姣斿锛氱綉鍗★紝澹板崱锛屾樉鍗$瓑绛夊嵈蹇呴』瑕佸畨瑁椹卞姩绋嬪簭锛屼笉鐒惰繖浜涚‖浠跺氨涓嶈兘澶熸甯稿伐浣溿備笁銆侀┍鍔ㄧ▼搴忕殑鐣屽畾 椹卞姩绋嬪簭鑳藉鐣屽畾涓哄畼鏂规寮忕増銆佸井杞疻HQL瑙佽瘉鐗堛佺涓夋柟椹卞姩銆佸彂鐑у弸淇敼鐗堛丅eta娴嬭瘯鐗堛1銆佸畼鏂规寮忕増 瀹樻柟姝e紡鐗堥┍鍔ㄦ槸鎸囨寜鐓ц姱鐗囧巶鍟嗙殑璁捐寮鍙鍑烘潵鐨勶紝閫氳繃鍙嶅娴嬭瘯銆佷慨姝o紝鏈鍚...
  • 濡備綍寮鍙慦indows NT璁惧椹卞姩绋嬪簭
    绛旓細2锛屽紑鍙戝伐鍏 鏈汉涓昏浣跨敤鈥淲DK7600鈥濓紙鐐瑰嚮鎵撳紑閾炬帴锛夊拰"VS2015+wdk10"锛堢偣鍑绘墦寮閾炬帴锛夈傛垜鎶婂墠鑰呭畨瑁呭湪鈥渨in7 X64鈥濊櫄鎷熸満涓畨瑁咃紝鎶婂悗鑰呭畨瑁呭湪鏈満鍜屽疄楠屽鐢佃剳涓娿傜敱浜庢垜浣跨敤鐨勬暀鏉愩Windows椹卞姩寮鍙璇﹁В銆嬪拰瀛︿範鍗氬閮芥槸鐢╳dk7杩欎釜鐗堟湰寮鍙戯紝涓轰簡鐜涓鑷达紝鏁呴夋嫨浜嗗湪铏氭嫙鏈轰笂璇曢獙杩欎簺鏁欐潗涓婄殑...
  • 鎬庝箞鐢╒isual Studio缂栬瘧鍐呮牳椹卞姩
    绛旓細鍦╓in8浠ュ墠寮鍙戝唴鏍搁┍鍔紝鍑嗗缂栬瘧鐜鏄釜杈冪箒鐞愮殑浜嬫儏銆傜▼搴忓憳闇瑕佹墜鍔ㄤ笅杞絎DK骞跺畨瑁咃紙娉1锛夛紝寮鍙戠幆澧冨氨鍦ㄥ畨瑁呭ソ鐨刉DK涓俉DK鏄疻indows Driver Kit缂╁啓锛屽嵆Windows椹卞姩寮鍙鍖呫傚畠鎻愪緵鐨勫紑鍙戠幆澧冪畝闄嬪緱寰堬紝瀹冧笉鏄竴涓究浜庡紑鍙戠殑IDE鐜锛岃屼粎浠呮槸涓浜涙暎瑁呯殑缂栬瘧宸ュ叿鍖呫傚畨瑁呭ソWDK鍚庯紝WDK鐨勭紪璇戠幆澧冮摼鎺ュ氨...
  • windows 椹卞姩绋嬪簭鍖呮槸浠涔?
    绛旓細寰蒋鐨windows鎿嶄綔绯荤粺涔熷湪涓嶆柇鍗囩骇锛屼粠16浣嶃32浣嶅埌64浣嶆搷浣滅郴缁熴備粠鏈鍒濈殑windows1.0鍒板ぇ瀹剁啛鐭ョ殑windows3.1銆亀indows3.2銆亀indows95銆丯T銆97銆98銆2000銆丮e銆乆P銆丼erver銆乂ista銆Windows 7锛寃indows8銆亀indows8.1浠ュ強windows10鍚勭鐗堟湰鐨勬寔缁洿鏂帮紝寰蒋涓鐩村湪灏藉姏浜嶹indows鎿嶄綔鐨寮鍙鍜屽畬鍠勩
  • 浠涔堟槸椹卞姩绋嬪簭?鏈変綍浣滅敤?鑻ョ數鑴戦噸浣滅郴缁,鏄惁灏嗗叾澶囦唤?
    绛旓細涓嶈繃,澶у鏁版儏鍐典笅,鎴戜滑骞朵笉闇瑕佸畨瑁呮墍鏈夌‖浠惰澶囩殑椹卞姩绋嬪簭,渚嬪纭洏銆佹樉绀哄櫒銆佸厜椹便侀敭鐩樸侀紶鏍囩瓑灏变笉闇瑕佸畨瑁呴┍鍔ㄧ▼搴,鑰屾樉鍗°佸0鍗°佹壂鎻忎华銆佹憚鍍忓ご銆丮odem绛夊氨闇瑕佸畨瑁呴┍鍔ㄧ▼搴忋傚彟澶,涓嶅悓鐗堟湰鐨勬搷浣滅郴缁熷纭欢璁惧鐨勬敮鎸佷篃鏄笉鍚岀殑,涓鑸儏鍐典笅鐗堟湰瓒婇珮鎵鏀寔鐨勭‖浠惰澶囦篃瓒婂,渚嬪绗旇呬娇鐢ㄤ簡Windows XP,瑁呭ソ...
  • Windows椹卞姩宸ョ▼甯堟槸鍋浠涔鐨
    绛旓細宀椾綅鑱岃矗:璐熻矗windows 绯荤粺鐨刄SB搴曞眰椹卞姩寮鍙銆傚矖浣嶈姹:1銆佺啛鎮Windows鍐呮牳,鏈塛indows USB椹卞姩绋嬪簭寮鍙戠粡楠(鍖呮嫭WDM,DDK鐨勫紑 鍙)銆2銆佺啛缁冩帉鎻¢┍鍔ㄧ▼搴忚皟璇曟柟娉曞拰璋冭瘯宸ュ叿銆傜啛鎮塙SB鎺ュ彛鍗忚,鏈塙SB璁惧寮鍙戠粡楠岃呬紭鍏堛3銆佺簿閫氱‖浠堕┍鍔ㄣ佺‖浠禪SB椹卞姩鍗忚寮鍙,鎵庡疄鐨凜/C++浠ュ強澶氱嚎绋嬬▼搴忚璁″姛搴;4銆佸悆鑻﹁愬姵,...
  • 濡備綍姝g‘鍏ラ棬Windows绯荤粺椹卞姩寮鍙棰嗗煙
    绛旓細涓瀹氳鏄庣櫧涓涓亾鐞:鏈笟鏈変笓鏀,涓嶈鐩茬洰璺熼.[鏈唴瀹归傜敤鐜鍙婂伐鍏穄1> Windows绯荤粺涓 2> VS2003鐗堟湰浠ヤ笂 3> Windows椹卞姩寮鍙鍖(DDK(鑰佺増鏈) WDK(鏂扮増鏈))4> 鏈夎兘鍔涚潃鍙互瀹夎VMWare [鏈唴瀹归傜敤缇や綋]1> 鍏锋湁C/C++璇█鍩虹鐨勪汉 2> 鍏锋湁80x86姹囩紪鍩虹鐨勪汉 3> 鍏峰楂樹腑浠ヤ笂鏂囧寲姘村钩鐨勯昏緫鎬濈淮 ...
  • Windows Dokan绠浠
    绛旓細Dokan鍒涘缓涔嬪垵鐨勭洰鐨勫拰FUSE锛團ilesystem in Userspace锛変竴鏍凤紝鍗充负浜嗗疄鐜扮敤鎴疯嚜宸辩殑鏂囦欢绯荤粺銆傚紑鍙戣呴氳繃dokan寮鍙戞枃浠剁郴缁燂紝瀹炵幇鐨勬槸涓涓簲鐢ㄧ▼搴忚屼笉鏄鏉傜殑鍐呮牳椹卞姩銆傦紙Windows鍐呮牳椹卞姩寮鍙涔熶笉瑙佸緱姣擫inux绠鍗曘傦級Dokan灏鏄疻indows涓婄殑FUSE銆傝岀洰鍓岲okan宸茬粡鏀寔Fuse锛屾剰鍛崇潃Linux Fuse绋嬪簭涔熷彲浠ュ疄鐜板悜...
  • windows鏄粈涔?
    绛旓細windows鏄搷浣滅郴缁熴Windows鎿嶄綔绯荤粺锛屾槸鐢辩編鍥藉井杞叕鍙革紙Microsoft锛夌爺鍙戠殑鎿嶄綔绯荤粺锛岄棶涓栦簬1985骞淬傝捣鍒濇槸MS-DOS妯℃嫙鐜锛屽悗缁敱浜庡井杞鍏惰繘琛屼笉鏂洿鏂板崌绾э紝鎻愬崌鏄撶敤鎬э紝浣縒indows鎴愪负浜嗗簲鐢ㄦ渶骞挎硾鐨勬搷浣滅郴缁熴俉indows閲囩敤浜嗗浘褰㈢敤鎴风晫闈紙GUI锛夛紝姣旇捣浠庡墠鐨凪S-DOS闇瑕佽緭鍏ユ寚浠や娇鐢ㄧ殑鏂瑰紡鏇翠负浜烘у寲銆傞殢鐫...
  • 宓屽叆寮忔柟鍚戝拰杞欢寮鍙鏂瑰悜
    绛旓細鈥淟inux鈥濅唬琛ㄧ殑鏄祵鍏ュ紡浜у搧涓娇鐢ㄧ殑杞欢鎿嶄綔绯荤粺锛屼篃灏辨槸璇存垜浠夋嫨Linux鎿嶄綔绯荤粺浣滀负涓昏瀛︿範瀵硅薄銆備綘鍙互鐞嗚В涓哄畠鐩稿浜嶱C鏈轰笂鐨windows鎿嶄綔绯荤粺銆傗滈┍鍔ㄢ濅唬琛ㄧ殑鏄疞inux鎿嶄綔绯荤粺寮鍙戜腑鐨勪竴涓柟鍚戔椹卞姩寮鍙鈥濓紝璇存槑鎴戜滑褰撳墠鍏虫敞鐨勬槸linux椹卞姩寮鍙戯紝鑰屼笉鏄痩inux搴旂敤寮鍙戙備綘鍙互鐞嗚В涓虹浉瀵逛簬PC涓殑windows...
  • 扩展阅读:驱动器图片 ... windows驱动器中的文件指什么 ... silicon laboratories驱动 ... windows mac ... windows10驱动下载官网 ... windows驱动更新有必要吗 ... windows7系统 ... windows驱动开发教程 ... windows驱动器未就绪是什么意思 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网