缓冲区读写操作

在驱动程序开发中,创建设备对象时需要确定读写方式。通常通过设置设备对象的Flags,如DO_DIRECT_IO。ReadFile和WriteFile函数用于触发IRP_MJ_READ和IRP_MJ_WRITE操作。当使用DO_DIRECT_IO时,内核和用户模式共享内存。测试ReadFile返回特定字符,但要确保IRP_MJ_CREATE有对应的派遣函数,否则ReadFile会失败。
摘要由CSDN通过智能技术生成

1.在驱动程序创建设备对象的时候,需要考虑好该设备时采用何种读写方式。当IoCreateDevie创建设备后,需要对设备对象的Flags进行设置。


2.设备对象有3中读写方式:
1.DO_BUFFER_IO
2.DO_DIRECT_IO
3.其他

读写操作一般由ReadFile或者WriteFile函数引起的。


3.DO_BUFFER_IO 是系统在内核中申请一块空间,和应用程序通信时,ReadFile时操作系统把内核空间数据复制到ReadFile提供的用户缓冲区中。WriteFile反之。总之,内核和用户模式通信用了两块内存。

4.DO_DIRECT_IO  内核和用户模式通信用了同块内存。

用ReadFile,测试DO_BUFFER_IO

此API触发IRP_MJ_READ,派遣函数如下:

NTSTATUS MyDispatchRoutinRead(PDEVICE_OBJECT pDevObj,PIRP pIrp)
{

	DbgPrint("EnterDriverDispatchRouti
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值