驱动笔记

1.对PNP(plug and play )and IRP 处理 ,是NT式驱动和WDM驱动的重大区别之一

2.windows 的I/0 操作死基于异步设计的。也就是线程在发起一个I/0操作的时候,可以不等待这个I/o操作完成。就发起另一个I/O操作请求。这样CPU就不会将时间浪费在等待I/O 操作完成上。这样就大大提高了操作系统设计对I/O的吞吐能力。编写驱动程序的时候尽量让驱动程序支持异步操作,提高I/o吞吐能力。

3. 现在操作系统总体设计是基于分层设计思路,每层由若干个组件组成。操作系统最为整体,它的运行依赖于上层组件向下层
组件的调用。每层的组件有固定的接口,靠近底层组件有更高的操作权限,靠近上层的组件将任务转化成对底层组件调用。

4.系统服务函数通过I/O管理器将消息传递给驱动程序。

5.在内核模式下,执行体组件提供了大量的内核函数共驱动程序调用。内核函数主要负责进程,线程的调度情况。驱动程序通过硬件抽象层与具体硬件进行操作

6.Native API ,大部分win32子系统的API,都通过NativeAPI 实现的。native api 的函数是一般都是win32 api 上加上 Nt两个字母。

7.windows 执行体组件位于Ntoskrnl.exe的上层,而内核位于其下层。执行程序组件是内核模式下的一组服务函数,他们位于
ntoskrnl.exe中。执行组件又可以细分为若干个组件。
比如: 1.对象管理程序
2.进程管理程序
3.虚拟内存管理程序
4.I/O管理器(用户模式代码和设备程序之间的接口(IRP))
5.配置管理程序


8.I/O管理器,接收应用程序的请求后,创建相应的IRP,并传送至驱动程序进行处理。


9.内核从执行体组件分割出来。和执行体组件相比,内核非常小。内核为执行体组件提供最基本的支持,它负责提供线程和进程的调度,通过自旋锁(Spin Lock)提供对CPU的同步支持,提供中断处理。


10.windows 为用户提供了内核态的运行时函数,它可以替代应用程序的运行时函数。在内核态的运行时函数一般形如:Rtlxxxx。


11.WDM式加载和NT式加载不同,WDM式驱动程序不是被当做服务来加载的,因此不能简单地依靠修改注册表来加载驱动。WDM式驱动的加载要由一个以INF为扩展名的文本文件来描述安装的过程。WDM式驱动比NT式的驱动增加了对即插即用的支持,这需要安装的时候提供一个INF文件进行配合。例如,在PC上新插入的一个设备,系统会枚举到这个新设备,并报告操作系统这个设备的VenderID and ProductID.


12.windows驱动中重要的2个数据结构,分别是驱动对象(Driver Object)和设备对(Device Object)象数据结构。 驱动程序经常要创建和维护这些数据结构的实例。


13..当文件扩展名是.cpp时候,编译器会用C++方式编译,当文件扩展名是.C时候,编译器会用C编译器方式编译。void __stdcall fun(int a,int b),c++编译器中会编译成符号?fun@@*(通配符)@Z,而C编译器重会编译成符号_fun@8.windows 驱动入口函数规定_DriverEntry@8,则c++编译会导致符号错误

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值