阅读:1526回复:4
怎么在SYS里收取一个EXE传递过来的buffer
在exe里
DeviceIoControl(m_hDevice, IO_GET_SHAREMEMORY_ADDR, NULL, NULL, szOutputBuffer, sizeof(szOutputBuffer), &dwReturn, NULL ) 在sys里 case IO_GET_SHAREMEMORY_ADDR: // 将分配的内存映射到用户进程地址空间,并返回地址。 try { UserVirtualAddress = MmMapLockedPages(Mdl, UserMode); *((PVOID *)(Irp->AssociatedIrp.SystemBuffer)) = UserVirtualAddress; Irp->IoStatus.Status = STATUS_SUCCESS; Irp->IoStatus.Information = sizeof(PVOID); } except(EXCEPTION_EXECUTE_HANDLER){} break; 我想在sys里收到exe里用DeviceIoControl里传来的那个szOutputBuffer应该怎么做啊? |
|
最新喜欢:![]() |
沙发#
发布于:2005-05-30 20:09
你想做什么?在这个代码里,
Irp->AssociatedIrp.SystemBuffer,就相当于szOutputBuffer 其实是系统会把SystemBuffer复制到szOutputBuffer, 从代码看,用的METHORD_BUFFERED |
|
板凳#
发布于:2005-05-30 23:21
谢谢,如果真的是这样就没问题了。THANK YOU
|
|
地板#
发布于:2005-06-01 15:09
我看过了,用DeviceIoControl的参数传过来的szOutputBuffer在passthru.c里的Irp->AssociatedIrp.SystemBuffer并没有这个szOutputBuffer的值。
|
|
地下室#
发布于:2005-06-01 15:52
对于METHORD_BUFFER,os的处理,是分配一块max(InputLen,OutputLen)的内存,指针放到Irp->AssociatedIrp.SystemBuffer中,将InputBuffer拷贝到SystemBuffer中,驱动返回的时候,将SystemBuffer拷贝到
OutputBuffer中。所以SystemBuffer就相当于你的app的OutputBuffer |
|