idaxsy
驱动大牛
驱动大牛
  • 注册日期2004-12-09
  • 最后登录2006-03-17
  • 粉丝0
  • 关注0
  • 积分386分
  • 威望54点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
阅读:964回复:3

buffer methods,初学者不妨来看看

楼主#
更多 发布于:2005-05-16 16:37
今天上了一下whdc,看到一篇关于buffer methods的文章,感觉受益匪浅。就翻译其中一些内容,并整理了一下。仅供参考。

1)DeviceObjects有三种buffer methods,为:DO_BUFFERED_IO,DO_DIRECT_IO,NEITHER,共三种;
2)所有标准的文件系统都是使用NEITHER的方式;
3)以下的IRP根据DeviceObject的buffering flag来确定所使用的buffer methods,包括:
IRP_MJ_READ
IRP_MJ_WRITE
IRP_MJ_QUERY_EA
IRP_MJ_SET_EA
IRP_MJ_DIRECTORY_CONTROL
IRP_MJ_QUERY_QUOTA
IRP_MJ_SET_QUOTA
4)以下的IRP永远都是DO_BUFFERED_IO,包括:
IRP_MJ_CREATE
IRP_MJ_QUERY_INFORMATION
IRP_MJ_SET_INFORMATION
IRP_MJ_QUERY_VOLUME_INFORMATION
IRP_MJ_SET_VOLUME_INFORMATION
IRP_MJ_SYSTEM_CONTROL



[b]万水千山总是情,回个帖子行不行?[/b]
idaxsy
驱动大牛
驱动大牛
  • 注册日期2004-12-09
  • 最后登录2006-03-17
  • 粉丝0
  • 关注0
  • 积分386分
  • 威望54点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-05-16 16:44
5)以下irp永远都是NEITHER,包括:
IRP_MJ_QUERY_SECURITY
IRP_MJ_SET_SECURITY
IRP_MJ_PNP

6)以下的IRP不会使用buffer,包括:
IRP_MJ_CREATE_NAMED_PIPE
IRP_MJ_CREATE_MAILSLOT
IRP_MJ_LOCK_CONTROL

7)以下的IRP根据哦IoControlCode中的参数值来确定使用哪种buffering methods,包括:
IRP_MJ_FILE_SYSTEM_CONTROL
IRP_MJ_DEVICE_CONTROL
IRP_MJ_INTERNAL_DEVICE_CONTROL


[b]万水千山总是情,回个帖子行不行?[/b]
idaxsy
驱动大牛
驱动大牛
  • 注册日期2004-12-09
  • 最后登录2006-03-17
  • 粉丝0
  • 关注0
  • 积分386分
  • 威望54点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-05-16 16:47
完了。
[b]万水千山总是情,回个帖子行不行?[/b]
eagelangel
驱动牛犊
驱动牛犊
  • 注册日期2005-04-13
  • 最后登录2005-06-29
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-05-16 19:15
谢谢!
游客

返回顶部