Buddha
驱动老牛
驱动老牛
  • 注册日期2001-04-29
  • 最后登录2013-05-18
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望17点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
阅读:1671回复:9

会WDM的请帮我

楼主#
更多 发布于:2001-06-28 18:59

我想请问irp包的那个参数是指向输入缓冲和输出缓冲的

就是DeviceIoControl的
  (LPVOID) lpInBuffer,             // input buffer
  (LPVOID) lpOutBuffer,            // output buffer
分别对应irq中的那些指针,我在驱动中如何访问他们??



<table style="filter: glow(color=sky blue, strength=10)"> <font color=white> 猫生病了, 老鼠大声朗诵诗集, 并修剪盆花. 猫生病了, 老鼠慢慢刷牙洗脸, 并打扫房间. 猫生病了, 老鼠倚在窗边欣赏夜色, 并对流星许愿. 猫生病了, 老鼠也病了, 它说:"我还是习惯那种时时紧张, 处处小心, 夜夜逃亡的生活." 午夜, 我听到老鼠在叹息, 且不再读诗了. </font></table>
jeosph
驱动中牛
驱动中牛
  • 注册日期2001-04-19
  • 最后登录2006-08-08
  • 粉丝0
  • 关注0
  • 积分96分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-06-28 19:06
irp->AssociatedIrp.SystemBuffer是一个公用的缓冲区                    








Buddha
驱动老牛
驱动老牛
  • 注册日期2001-04-29
  • 最后登录2013-05-18
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望17点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-06-29 10:32


那Irp->MdlAddress是做什么的呢?
<table style="filter: glow(color=sky blue, strength=10)"> <font color=white> 猫生病了, 老鼠大声朗诵诗集, 并修剪盆花. 猫生病了, 老鼠慢慢刷牙洗脸, 并打扫房间. 猫生病了, 老鼠倚在窗边欣赏夜色, 并对流星许愿. 猫生病了, 老鼠也病了, 它说:"我还是习惯那种时时紧张, 处处小心, 夜夜逃亡的生活." 午夜, 我听到老鼠在叹息, 且不再读诗了. </font></table>
vcmfc
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-01-28
  • 粉丝0
  • 关注0
  • 积分528分
  • 威望53点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-07-02 16:49
该站上的电子书《Progamming Window Driver Model》就说的非常的清楚。
feixue
驱动小牛
驱动小牛
  • 注册日期2001-07-02
  • 最后登录2002-11-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-07-02 18:18
Irp->MdlAddress好象是DMA驱动程序用的。
小飞飞
KDriver
驱动中牛
驱动中牛
  • 注册日期2001-06-09
  • 最后登录2008-09-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-07-02 20:12
vcmfc说的对,就去DOWN本PROGRAMMING WDM(本站有),看看,什么都搞定了。不是什么问题都要问出来才好。你在自己找到答案的同时,会学到不少东西,至少又样成了你自己动手,不畏困难的精神,对一个开发人员,只有好处。

当然,实在搞不定,拿上来大家解决解决也很明智。
“萎软”,是Microsoft的小名!
halley
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2002-10-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2001-07-02 23:29
兄弟,还是看看书吧,一两句话也将不清!
hong
驱动小牛
驱动小牛
  • 注册日期2001-09-19
  • 最后登录2005-12-16
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2001-12-19 22:19
Let me try to show u what i knew:
when u are using DeviceIoControl(), there are two buffers in user mode: lpInBuffer and lpOutBuffer;
inside driver, there are three ways to access these buffers:
METHOD_BUFFER, METHOD_DIRECT, METHOD_NEITHER

when use METHOD_BUFFER access, the system will create another buffer inside the system, then copy the data from lpInBuffer to this system buffer, then pass this system buffer to driver, driver access this system buffer through
irp->AssociatedIrp.SystemBuffer;( you need to copy the input data locally if you need to use them later;)
if there is output data to pass back to user mode, driver use the same system buffer to store the ouput data, when DeviceIoControl() returns, the system will copy all the data insie the system buffer to user mode lpOutBuffer.
from here you can see, system create antother buffer for both user mode and driver to share data. (two copy operations happen for one DeviceIoControl() )

when use METHOD_DIRECT, the system will lock user mode buffer lpOutBuffer and pack it as a MDL and pass it to driver, driver can use this MDL to access the user mode memory directly. (no copy operations required)

when use METHOD_NEITHER, the system just simply pass the lpOutBuffer pointer to driver, and driver have to take care all the address convertions.


hope this help
 :)
KungFu
驱动大牛
驱动大牛
  • 注册日期2001-09-27
  • 最后登录2008-04-08
  • 粉丝0
  • 关注0
  • 积分221分
  • 威望24点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2001-12-24 08:08


那Irp->MdlAddress是做什么的呢?
 

是AssociatedIrp.SystermBuffer还是MdlAddress存放数据,完全是你自己决定的,你的fdo的flag field将决定这个。你可以参考一下msdn里面的DEVICE OBJECT的flag域的解释,相信你会明白的。

楼上的朋友说的很好  :)

[编辑 -  12/24/01 作者: KungFu]
我不写驱动好多年
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
9楼#
发布于:2001-12-24 09:17
非常感谢各位大虾的解释,让我茅塞顿开。
尤其是hong,以前我没有仔细的考虑过这些,只是用而已。
游客

返回顶部