// 栀子花驿站: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开链接