Windows NT 设备驱动程序开发基础(5) (转)

Windows NT 设备驱动程序开发基础(5) (转)[@more@]1.3.6 缓冲的I/O与直接I/O 
 
 在 驱动 程序创建了一个设备后,可以通过设置Device object的Flags域的值来将设备设 
置成缓冲的I/O或直接的I/O。 
 
 如果该值被设为DO_BUFFERED_IO,每当I/O管理器收到一个读写请求,就在 内存的非分 
页区分配一块与 用户区大小相同的区域,并将首指针存放于Irp 对象的AssociatedIrp.S 
ystemBuffer中,驱动程序就通过这个缓冲区与用户 交换数据。每当一个读请求被完成时 
I/O管理器自动将该缓冲区中的内容复制到用户区,并释放该区域。 
 
 如果用户区大于一页(在80x86上为4096字节),一般将该值设为DO_DIRECT_IO。 
这时每当I/O管理器收到一个读写请求,先锁定用户区的物理内存,然后为其创建一个内 
存描述表(MDL),并将该表的首指针存放于Irp对象的MdlAddress中,驱动程序可以通过 
调用MmGetSystemAddres sforMdl获得用户区在 系统空间中的地址。每当一个读请求被完 
成时I/O管理器自动将该区域解锁。 
 
 
 1.3.7 定时 

 
为了防止当设备出现某种故障时导致读写请求超时,或需要定时轮询某些设备的状态 
,驱动程序需要设置一些定时器。驱动程序中有两种方法可以设置定时器。一种是调用 
IoInitializeTimer将一个定时器过程IoTimer与一个设备对象联系起来。在调用IoStar 
tTimer后,系统将每一秒钟调用一次IoTimer,直至驱动程序调用IoStopTimer。如果需 
要设置更小间隔的定时器,需要用到被称为CustomTimerDpc的一种推迟过程调用机制。 
它可以设置系统每隔一定时间将一个设置好的DPC对象放到DPC队列的末尾, 执行一个指 
定的定时器Dpc过程。这个时间间隔可以精确到100ns。 
 
 
 
-- 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752043/viewspace-992241/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10752043/viewspace-992241/

Windows NT架构相关资料 Windows NT架构相关资料 文章目录Windows NT架构相关资料Windows NT架构——WikiWindows API——WikiWindow API分类微软Windows库文件——Wiki1. 内部组件1.1 HAL.DLL(未明确翻译)1.2 NTDLL.DLL2. Win32 API2.1 KERNEL32.DLL2.2 GDI32.DLL2.3 USER32.DLL2.4 ... 阅读详情

相关推荐

驱动开发之 加载NT式驱动

设备驱动程序的动态加载主要由服务控制飞、管理che

Lydia的博客 1404

最简单明了的驱动开发说明: Windows NT 设备驱动程序开发基础()

关键字 设备驱动程序 一、背景介绍 1.1 Windows NT操作系统的组成 1.1.1 用户模式(User Mode)与内核模式(Kernel Mode) 从Intel 80386开始,出于安全性和稳定性的考虑,该系列的CPU可以运行于ring0 ~ring3从高到低四个不同的权限级,对数据也提供相应的四个保护级别。运行于较 低级别的代码不能随意调用高级别的

阿木的专栏 2407

Windows NT 设备驱动程序开发基础

我看到的最简单明了的驱动开发说明: Windows NT 设备驱动程序开发基础!(载CSDN)  关键字 设备驱动程序 一、背景介绍 1.1 Windows NT操作系统的组成 1.1.1 用户模式(User Mode)与内核模式(Kernel Mode) 从Intel 80386开始,出于安全性和稳定性的考虑,该系列的CPU可以运行于ring0 ~ring3从高到低

789

Windows NT 设备驱动程序开发基础(2)

1.2 Windows NT下内核模式设备驱动程序的结构和运行     一般来说,设备驱动程序的任务主要有二:第一,接受来自用户程序的读写请求,把 用户的数据传送给设备,或把从设备接收到的数据传送给用户;第二,轮询设备或处理 来自设备的中断请求,完成数据传输。     1.2.1 驱动程序与用户程序的通信     I/O管理器把每一个设备对上层都抽象成了文件,所以在Win32用户程序中只要通过以 

kingzeus的专栏 1648

WindowsNT设备驱动程序开发基础

一、背景介绍 1.1WindowsNT操作系统的组成 1.1.1用户模式(UserMode)与内核模式(KernelMode)   从Intel80386开始,出于安全性和稳定性的考虑,该系列的CPU可以运行于ring0~ring3从高到低四个不同的权限级,对数据也提供相应的四个保护级别。运行于较低级别的代码不能随意调用高级别的代码和访问较高级别的数据,而且也只有ring0层的代码可以直

xd1103121507的专栏 1328

WINDOWS NT下的禁止关机

<br />WINDOWS NT下的禁止关机<br /><br />WINDOWS将核心代码封装,而仅仅提供接口API,也就是说,你只需要根据说明书来操作遥控板,而不需要自己去研究遥控板是怎么<br />实现的。<br />同样的,如果你想关机,那么流程如下:<br />    调用系统关机API--送入该API必要的参数--由系统执行关机<br /><br />一、用OD载入c:/windows/system32/shutdown.exe后,可以看到它调用的相关API:<br />ExitWindows

ty1921的学习历程 2996

Windows NT 设备驱动程序开发基础(4)

1.3.4 查找硬件信息       i) 系统自动搜索到的设备         在系统启动时,组件NTDETECT会自动地搜索计算机上已有的硬件,包括串、并行 口,键盘,鼠标,以及大多数PCI和EISA设备。并将它们的信息,包括总线类型,总线号 ,用到的端口号及数量、中断向量号、DMA通道号、占用内存等按一定格式添入注册表的 /HKEY_LOCAL_MACHINE/Hardware/descri

kingzeus的专栏 1620

NT、WDM、WDF驱动概念

一、概念介绍 NT是驱动模型:NT式驱动程序模型是一种比较老式的驱动程序模型,但适用于现有的Windows系统。NT式驱动模型没有固定的形式,最简单的NT式驱动程序模型这一特点,程序开发者可以编写一个完全不支持硬件工作的驱动程序,却可以将代码运行在内核模式中。 WDM驱动程序模型:WDM式驱动程序在NT式驱动程序的基础上,还必须: 1、包括wdm.h头文件,问不是ntddk.h(...

u013218636的博客 3363

NT DDK的安装以及设备驱动程序的编译

作者:程序员客栈提交者:eastvc 发布日期:2003-10-19 20:01:54原文出处:http://www.driverdevelop.com/经常有人问及如何安装DDK,如何编译第一个设备驱动程序以及如何消除掉编译驱动程序 时出现的大量错误信息.  其实, DDK的安装和驱动程序的编译是很简单的. 为了编译驱动程 序, 你必须首先打开一个DOS窗口, 并正确设置好所需的全部环境变量

2283

Windows NT 内核架构(主通用模型)流 NT 5.x/10+

2. **User32.dll** 窗口管理:窗口创建、消息循环、菜单、按钮、控件、桌面交互。3. **Gdi32.dll** 图形设备接口:绘图、字体、位图、窗口渲染、打印。--- # 三、内核态(Kernel Mode)核心架构(NT 内核本体) 内核态由 **4 大层级** 组成,从上至下依次为:**执行体 → 内核核心 → 驱动程序 → HAL** ## 1. 系统执行体(Executive) 文件:`ntoskrnl.exe` 主体部分,对外提供**系统调用接口**,是用户态与内核的桥梁。

大坡3D软件开发 512

Windows NT 设备驱动程序开发基础(5)

1.3.6 缓冲的I/O与直接I/O     在驱动程序创建了一个设备后,可以通过设置DeviceObject的Flags域的值来将设备设 置成缓冲的I/O或直接的I/O。     如果该值被设为DO_BUFFERED_IO,每当I/O管理器收到一个读写请求,就在内存的非分 页区分配一块与用户区大小相同的区域,并将首指针存放于Irp对象的AssociatedIrp.S ystemBuffer中,驱

kingzeus的专栏 1465

WINDOWS NT引导过程

WINDOWS NT引导过程:1.运行加电自检(POST)程序2.BIOS读取磁盘第一个物理扇区,并将其映象加载到内存,然后BIOS把主引导扇区的执行传递给该映象.3.加载主引导记录到内存,其中包括磁盘分区表和少量的可执行代码.然后,主引导记录查找活动分区的起始位置.4.活动分区的引导扇区加载到内存并执行.5.从引导扇区加载并初始化NTLDR.6.NTLDR执行适当的小型文件系统驱动程序.小型

IT老兵 1543

Windows NT注册表

Windows NT注册表 注册表提供了一个安全,统一的数据库,用来以一个层次结构来保存配置信息。注册表中的每一个主键和一个.INI文件中的用方括号括住的条目一样。 .INI文件的一个缺点就是不支持条目的嵌套,以及包含非纯文本信息。注册表的主键能包含嵌套的付键。这些付键为配置...

chenqunan3231的博客 314

window NT - WDM - WDF 驱动概念

式驱动程序模型这一特点,程序开发者可以编写一个完全不支持硬件工作的驱动程序,却可以将代码运行在内核模式中。文件,其中记录了必要的硬件安装信息,包括设备类型、设备生产厂商名称、适用产品等信息,格式的文件,前者即所谓的设备信息文件,后者是预编译信息文件。式驱动程序模型是一种比较老式的驱动程序模型,但适用于现有的。式驱动增加了对即插即用的支持,这需要安装的时候提供一个。驱动程序类型,如总线驱动、功能驱动,过滤驱动等;驱动程序包括两个类型,一个是内核级的,称为。驱动程序的架构做了改进,形成了全新的。

1152

windows设备驱动开发-总结篇

总结整个驱动开发系列的文档

王马的博客 1067

Windows NT 驱动程序开发人员提示 -- 应注意避免的事项

下面是开发人员在使用 Windows NT 设备驱动程序时应当避免的事项列表: 1.  一定不要在没有标注 I/O 请求数据包 (IRP) 挂起 (IoMarkIrpPending) 的情况下通过调度例程返回 STATUS_PENDING。  2.  一定不要通过中断服务例程 (ISR) 调用 KeSynchronizeExecution。 它会使系统死锁。  3.  一定不要将 Devic...

weixin_34344403的博客 100
上一篇: Windows NT 设备驱动程序开发基础(4) (转)
下一篇: Windows NT 设备驱动程序开发基础(7) (转)
csd3176
博客等级 码龄11年 20粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值