现在的位置: 首页 > 综合 > 正文

编写驱动学习日记–二

2014年01月23日 ⁄ 综合 ⁄ 共 1155字 ⁄ 字号 评论关闭
看来离目标不远了!! 虽然我还一点也没有开始动手,但教程里讲环境配置

,开发步骤很详细..
环境上, 在我写这篇文章的时候, 2003sp1 DDk正在安装.看它的帮助文档,好像这个DDK是可以支持2000,xp的.装的好慢啊,光盘200M,装完了也不过700多M而已..
还有发现Emule真是好东西,倍儿专业,我找了两天了,怎么就没想到它呢..真是电影下多了都忘了它的这个好了..在这方面,好像其他的什么P2P软件都不行.哈哈,N个版本的DDK,SDK一股脑的都有了.(不过下的不快,东西太多了.).Driverstudio 3.2,3.1都找到了.xp,2000的两个虚拟机也弄好了.一上C盘,发现用了10多个G,吓了我一跳,顺便也清理了下.
环境都建好,也许得明天了.但愿明天晚上不加班.明天可是周日啊!!!!

IRQL: 中断级别. windows 有32级中断.普通程序都是在一个叫 passive*** (记不清了)的中断级别,大概是最低的一个.中断调度方式是低优先级的中断无条件的让位与高优先级的中断.前几级的中断是软件中断,后几级的中断都是硬件中断了.我不清楚为什么这么分.反正软件照样可以产生硬件中断.访问被置换的内存时 ,会发生一个中断,这个中断是软件中断.如果一个程序在作比内存访问的页故障中断优先级高的中断处理时,访问了被置换的内存,这时理论上会锁死,页故障中断无法中断当前的处理,只能排在队列的最后等待.当前的中断又因为内存访问没有返回而等待...理论上锁死,实际上会蓝屏的...
所有的中断不会丢失.同一级别的顺序也是先来後到按引发中断的时间来.

IRP: I/O请求包.又多知道了点.它是为驱动程序通信设计的一个数据结构..相当于一封标准的公文信.里面会携带着一条指令和相关的数据 ..

WDM 模型是分层的.我还很不清楚这块.IRP在各层之间传送,知道某层自己能够处理.

WDM 驱动程序都分为2部分, Function 和 Bus. 功能驱动和总线驱动. 功能驱动是实现硬件的具体功能(functions)的.Bus驱动是负责让设备连接到计算机的.

应用程序同驱动程序打交道的时候,一般的流程是:
OpenFile 打开设备.
Control*** 访问设备. 包括write file 和 read file.
最后不用了就调用 CloseHandle 关闭设备。

看了下,上面弄错了.应该是调用 CreateFile打开设备.

系统管理内存池有两种: Paged pool, Nonpaged pool.  Paged Pool 会被置换到硬盘页面文件中.而Nonpaged Pool是常驻内存. 当编写中断级别高于页故障中断的驱动的时候,切记要使用Nonpaged Pool.否则就等着蓝屏吧 .

最后的这部分使用 谷歌拼音 打出来的.感觉似乎真的比紫光要强好多.紫光是有些Bug的.

 

抱歉!评论已关闭.