lyzhang
驱动牛犊
驱动牛犊
  • 注册日期2001-05-12
  • 最后登录2005-07-14
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1607回复:1

wdm驱动开发中遇到的一个问题(急)

楼主#
更多 发布于:2001-07-23 20:54
  在上层应用程序中调用
DeviceIoControl(m_hDevice,IoCtl,inputbuffer,inputbuffersize
  outputbuffer,outputbuffersize,outcount,..)
  在驱动程序中的DeviceControl()函数中调用
    PUCHAR MemAddr = (PUCHAR)I.IoctlBuffer();
  MemAddr指向的缓冲区是对应inputbuffer还是outputbuffer,
  也就是如果我向MemAddr指向的缓冲区写数据,结果会送到
  inputbuffer 还是outputbuffer?

谢谢!

最新喜欢:

hapihapi
skysky
驱动小牛
驱动小牛
  • 注册日期2001-07-18
  • 最后登录2003-06-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-07-24 11:51
是这样的,如果你的IOCTL定义为METHOD_BUFFERED方法,那么
你的inbuffer和outbuffer被映射到同一个系统buffer。
当你从这个systembuffer读数据时,实际读的是用户inbuffer中的数据;
当你往systembuffer 写数据时,实际在结束IRP时,数据会导入用户outbuffer中。

如在你的程序中
MemAddr= = (PREC_SIG_INT) pIrp->AssociatedIrp.SystemBuffer;
然后往MemAddr写数据,结果会送到outbuffer区。
不知这样你清楚了没有?

以德服人,以德服人
游客

返回顶部