阅读:5910回复:29
DeviceControl()通信实现心得
在这里首先我要感谢好朋友――王晓东,他发给我一份ddk编程资料,让我明白了devicectrol()通信的问题。我现在将我的心得写下来给所有和我一样曾经有过这样迷惑的人。
首先我们都知道,缓冲方式有三种:BUFFERED模式、DIRECT模式、NEITHER模式。 METHOD_BUFFERED方式: 应用程序中的输入输出缓冲在驱动程序中用一个指针访问,即IRP中的AssociatedIrp.SystemBuffer指针,当应用程序的数据传入到驱动时,驱动先从AssociatedIrp.SystemBuffer中取得应用程序的数据,在irp完成之前,驱动将要传给应用程序的数据考入AssociatedIrp.SystemBuffer中并设置IoStatus.Information为要传给应用程序的数据长度即可。 METHOD_IN_DIRECT和METHOD_OUT_DIRECT模式: 他们都以相同方式处理。仅有的不同是它们访问用户模式缓冲区时所需的访问权限;METHOD_IN_DIRECT需要读权限;METHOD_OUT_DIRECT既需要读权限又需要写权限,驱动程序以AssociatedIrp.SystemBuffer访问输入缓冲区,以MDL访问输出缓冲区,MDL缓冲地址可以用MmGetSystemAddressForMdl(Irp->MdlAddress)获得。 NEITHER模式: 使用NEITHER模式时,I/O管理器不翻译用户模式的虚拟地址。你得到输入缓冲区的用户模式虚拟地址(在堆栈单元的Type3InputBuffer参数中),和输出缓冲区的用户模式虚拟地址(在IRP的UserBuffer域)。除非你知道你与用户模式调用者运行在同一个进程上下文中,否则这些地址是无用的。如果你恰好知道你正运行在这样的进程上下文中,你可以直接使用这些指针。一般情况下,驱动程序不会要用这种方式,因为很少有通用设备要求过高的处理速度,以至于开发者不得不直接操作应用程序的缓冲区来获得高性能。 |
|
|
沙发#
发布于:2008-06-05 09:13
楼主,能否给我邮箱发一份,谢谢。yeaiping@hotmail.com
|
|
|
板凳#
发布于:2008-05-08 14:11
thx a lot!
|
|
地板#
发布于:2008-04-17 12:14
L楼主,我也想要一份,jmj_2008@126.com。谢谢啦
|
|
地下室#
发布于:2008-04-03 19:55
六年顶一帖,一帖顶到今天,真是牛帖◎
|
|
|
5楼#
发布于:2008-02-27 15:08
现在发帖的人都到哪里去了? 怎么不上论坛了?
|
|
6楼#
发布于:2008-02-27 15:07
6年前的帖子 强啊 。。。
|
|
7楼#
发布于:2008-01-08 11:51
给发一份吧,谢谢
lxf5909680@126.com |
|
8楼#
发布于:2004-08-19 19:59
关于这个函数 武安河的书上讲的还可以,按照他的方法做肯定没问题,其实他的书上的内容基本都是DS帮助文件翻译过来的,很多地方一字不差!我觉得大家努努力,看看英文比看书要明白!
|
|
9楼#
发布于:2004-08-19 10:19
刚做驱动,应该有用
这就去下载了,呵呵~~~ |
|
10楼#
发布于:2004-08-17 10:47
我也想要,给我也发一份吧
qif@guoguang.com.cn |
|
11楼#
发布于:2004-04-29 17:41
呵呵,我一直用的是NEITHER方式传输数据,没感觉有什么不妥,这样可以减少2次内存拷贝,降低CPU占有率,挺好啊。 |
|
12楼#
发布于:2004-04-29 17:35
老大,我也想要一份,能发给我吗?谢谢!
zsh_7769@163.com |
|
13楼#
发布于:2004-04-20 00:26
哥哥,我也和楼上的仁兄一样,正郁闷的要命,
能也给我一份吗? 感谢感谢! dingyf20@sina.com |
|
14楼#
发布于:2004-01-11 17:09
关于DeviceIoControl我看武安河的书了,也看了DS所带的例子PCIWDM,经过试验还是不太懂,能给我发一份吗?
|
|
|
15楼#
发布于:2003-08-04 11:10
谢谢,又得经验拉。
|
|
16楼#
发布于:2003-03-07 10:29
大家可以在本论坛的http://www.driverdevelop.com/dlit.php?id=70 下载,不要再麻烦chrys老兄了,因为一般的免费邮箱都只有5m,根本放不下7m的附件,即使分成几部分,也要先收完一部分删掉后才能发另一部分,太麻烦了,下载就是要扣25分可用分,可以在论坛上多多灌水 然后把参与分换成可用分。我现在正在努力攒到500分,只为了下载高级会员区的一个xpddk,希望那个链接是真的,呵呵,否则我就欲哭无泪了。 我选择了到本站下载,当然花了25大分。 不过XPDDK在网上是找得到的,不用花500分,好不容易攒的。你可以到天网搜索一下。http://bingle.pku.edu.cn |
|
17楼#
发布于:2003-03-06 21:43
我上一个驱动也要用到DeviceIoControl,呵呵,我可没有你那么好的朋友来教我,硬是把oney的书来来回回看了好几遍,最后总算搞明白了,各种艰辛难以细表,连我的爱机都跟着受累--都不记得崩了几回了,呵呵
|
|
|
18楼#
发布于:2003-03-06 19:14
给我发一份啊,好吗
bxn77@163.com |
|
19楼#
发布于:2002-08-02 13:43
发给我一份吧?我的邮箱放得下cjg@irc-mp.com 已经给你发过来了,一共5封邮件。 |
|
|
上一页
下一页