kissfire
驱动牛犊
驱动牛犊
  • 注册日期2004-09-09
  • 最后登录2006-01-05
  • 粉丝0
  • 关注0
  • 积分12分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1827回复:3

irp->AssociatedIrp.SystemBuffer的内容可以改变吗?

楼主#
更多 发布于:2004-10-12 12:17
irp->AssociatedIrp.SystemBuffer是指向用户区的缓冲,请问在内核态,也就是在驱动中可以改变该缓冲的内容吗?
xx_focus
驱动中牛
驱动中牛
  • 注册日期2003-08-06
  • 最后登录2007-06-08
  • 粉丝0
  • 关注0
  • 积分96分
  • 威望10点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-10-12 14:35
不是很清楚,不过这里有点参考资料

CTL_CODE 宏参数
DeviceType 共给 IoCreateDevice 的  FILE_DEVICE_XXX 值
  . 0x0000 to 0x7fff 为 Microsoft 保留
  . 0x8000 to 0xffff 为 客户定义

ControlCode 驱动程序定义的 IOCTL 代码
  . 0x000 to 0x7ff  为 Microsoft 保留
  . 0x800 to 0xfff  为 客户定义

TransferType 控制代码的缓冲区传送机制
  . METHOD_BUFFERD 通过中间缓冲传送
  . METHOD_IN_DIRECT
  . METHOD_OUT_DIRECT
  . METHOD_NEITHER

RequiredAccess 请求者访问要求
  . FILE_ANY_ACCESS
  . FILE_READ_DATA
  . FILE_WRITE_DATA
  . FILE_READ_DATA|FILE_WRITE_DATA


#define IO_TYPE  0x9001 /* 32768-65535 are reserved for customers */

#define R_PORT_CHAR
( CTL_CODE(IO_TYPE, 0x801, METHOD_BUFFERED, FILE_ANY_ACCESS) )

#define R_REG_BUF_LONG
( CTL_CODE(IO_TYPE, 0x818, METHOD_IN_DIRECT, FILE_READ_DATA) )

// buffer write
#define W_PORT_BUF_CHAR
( CTL_CODE(IO_TYPE, 0x819, METHOD_OUT_DIRECT, FILE_WRITE_DATA) )

呵呵,好像有点偏题,是不是?
其实是少了些什么! :D 太多了不好写。
要是驱动程序从设备取回的数据放不到用户的系统缓冲中去,那要驱动干什么用!我也是不懂的,纯属业余爱好,随便聊聊

[编辑 -  10/12/04 by  xx_focus]
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
板凳#
发布于:2004-10-12 19:15
irp->AssociatedIrp.SystemBuffer是指向用户区的缓冲??
谁说的??
他是指向核心内存的,你可以修改里面的东西,不过指针最好别动
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
xx_focus
驱动中牛
驱动中牛
  • 注册日期2003-08-06
  • 最后登录2007-06-08
  • 粉丝0
  • 关注0
  • 积分96分
  • 威望10点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-10-13 11:57
我又明白了一点,谢谢wowocock
游客

返回顶部