// 栀子花驿站:http://www.zhizihua.com
// 栀子博客  :http://www.zhizihua.com/blog
// 作者   :goodone
///

此文在唔初学驱动开发时整理,时至半年,今日发出来与大家分享。

此文系唔原创,装载请注明出处。

有做驱动开发的朋友可以多交流交流,网站主页有唔QQ

应用程序与驱动传递数据方法:

1.   METHOD_BUFFERED
 输入输出缓冲区都被映射到系统地址Irp->AssociatedIrp.SystemBuffer上
 inBuf = Irp->AssociatedIrp.SystemBuffer
   outBuf = Irp->AssociatedIrp.SystemBuffer
   因此在你打算通过outBuf输出数据时你需要先读取然后改写
   
2.   METHOD_NEITHER
 输入缓冲区被放到了IrpStack的Type3InputBuffer中
 输出缓冲区映射到Irp->UserBuffer中  
 inBuf = irpSp->Parameters.DeviceIoControl.Type3InputBuffer
  outBuf =  Irp->UserBuffer

3.   METHOD_IN_DIRECT
 此方法适合数据从应用程序到驱动程序
 inBuf = Irp->AssociatedIrp.SystemBuffer
 outBuf在虚拟地址空间中的模块描述块指针被映射到Irp->MdlAddress上

4.  METHOD_OUT_DIRECT
 inBuf = Irp->AssociatedIrp.SystemBuffer
 outBuf在虚拟地址空间中的模块描述块指针被映射到Irp->MdlAddress上
点击打http://www.zhizihua.com/blog/post/166.html开链接