能力值:
( LV2,RANK:10 )
|
-
-
26 楼
http://blog.chinaunix.net/u/25096/showart_456024.html怎么是
========================================================
lpOutBuffer
由用户层指定,用于接收驱动层返回数据的缓冲区。在驱动层,依传输类型的不同,输出缓冲区的位置亦不同,见下表。
传输类型 位置
METHOD_IN_DIRECT irp->MdlAddress
METHOD_OUT_DIRECT irp->MdlAddress
//下面两个是反的×××××××××××××××××
METHOD_BUFFERED irp->UserBuffer
METHOD_NEITHER irp->AssociatedIrp.SystemBuffer
|
能力值:
( LV2,RANK:10 )
|
-
-
27 楼
非常感谢楼主分享,最近正在搞相关的研究
|
能力值:
( LV2,RANK:10 )
|
-
-
28 楼
感谢楼主分享
|
能力值:
( LV12,RANK:1010 )
|
-
-
29 楼
感谢楼主。。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
30 楼
恩,我刚刚开始学习啊,还看不太懂啊
|
能力值:
( LV3,RANK:20 )
|
-
-
31 楼
感谢搂主,正在学习驱动,很有帮助
|
能力值:
( LV2,RANK:10 )
|
-
-
32 楼
加紧学习中 因为看不懂
|
能力值:
( LV2,RANK:10 )
|
-
-
33 楼
分享了!谢谢!
|
能力值:
( LV2,RANK:10 )
|
-
-
34 楼
嗯。楼主看来是做了实验了,写出点心得。不错。
不过,建议你既然Driver部分是C语言写的,应用程序部分也用C语言好了。
你这样应用程序用Pascal(?),感觉那个驱动部分不是你写的。
另外,三种ioctl的方式,楼主你有没有试过它们的效率??我平时只用METHOD_BUFFERED方式,所以你有什么效率的结论,请分享给大家。多谢。
|
能力值:
( LV2,RANK:10 )
|
-
-
35 楼
自己做了些实验,获得的经验大概如下
如果是传递一两个控制参数,那么用 (METHOD_NEITHER) 效率最高,也最方便
如果是传递大量的数据,比如网络抓包后将数据包全部传递给Application,那么肯定要用 (METHOD_BUFFERED)方法了。
|
能力值:
( LV2,RANK:10 )
|
-
-
36 楼
不错,感谢楼主
|
能力值:
( LV2,RANK:10 )
|
-
-
37 楼
谢谢楼主,讲的很好
|
能力值:
( LV2,RANK:10 )
|
-
-
38 楼
对我很有帮助,多谢楼主了。如果应用层能用C写更好,我电脑里没有DE
|
能力值:
( LV4,RANK:50 )
|
-
-
39 楼
mark 即马克
|
能力值:
( LV2,RANK:10 )
|
-
-
40 楼
感谢楼主分享,ring0和ring3层的通信我找了好久才找到
|
能力值:
( LV2,RANK:10 )
|
-
-
41 楼
学习了。嘎嘎
|
能力值:
( LV5,RANK:60 )
|
-
-
42 楼
且不应使用 UserBuffer 中存储的地址。
这个为什么不行?网上就会瞎扯.说userbuffer是可以ring3程序指定的..指定个锤子啊.我找了N多代码.结果IRP里userbuffer都不是我指定的值.LZ能说明么?
|
能力值:
( LV2,RANK:10 )
|
-
-
43 楼
不错,呵呵
其实大多数情况下用的都是buffer IO的方式,关于三种方式在数据传输量和限制其实在DDK帮助文档里面有些说明了,虽然不是很详细.... 也可以参考DDK安装目录下的general\ioctl
|
能力值:
( LV2,RANK:10 )
|
-
-
44 楼
跪谢楼主分享~!
|
能力值:
( LV2,RANK:10 )
|
-
-
45 楼
METHOD_BUFFERED模式,输入和输出缓冲区都是irp->AssociatedIrp.SystemBuffer
pInputBuffer = Irp->AssociatedIrp.SystemBuffer;
pOutputBuffer = Irp->AssociatedIrp.SystemBuffer;
if(pInputBuffer && pOutputBuffer)
{
DbgPrint("COMM_BufferedIo UserModeMessage = '%s'", pInputBuffer);
RtlCopyMemory(pOutputBuffer, pInputBuffer, outputLength);
这种用法,感觉很怪。
|
能力值:
( LV2,RANK:10 )
|
-
-
46 楼
对啊,为什么呢?
用户传入的缓冲区应该是两个吧,这里怎么是同一个呢?期待高手能解答下!
|
能力值:
( LV7,RANK:100 )
|
-
-
47 楼
WriteFile,ReadFile如何指定传输方式?或者他们默认了那种传输方式?
|
能力值:
( LV3,RANK:30 )
|
-
-
48 楼
谢谢分享学习了
|
能力值:
( LV9,RANK:380 )
|
-
-
49 楼
驱动跟ring3通信,有N多方法,,,,hook大法,内核管道,DeviceIoControl等等。。
|
能力值:
( LV5,RANK:70 )
|
-
-
50 楼
回来学习学习~~~
|
|
|