Denning
驱动牛犊
驱动牛犊
  • 注册日期2002-02-07
  • 最后登录2004-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1459回复:2

如何映射NdisMAllocateShareMemory到Usermode

楼主#
更多 发布于:2002-03-15 16:14
Dear all:

如何映射NdisMAllocateShareMemory到Usermode, 我用wdm的机制, 诸如:
Mdl = IoAllocateMdl(SystemVirtualAddress, NumberOfBytes, FALSE,
                          FALSE, NULL);
MmBuildMdlForNonPagedPool(Mdl);
MmProbeAndLockPages(Mdl, KernelMode, IoWriteAccess);  
UserVirtualAddress = MmMapLockedPages(Mdl, UserMode);
到usermode下,返回的UserVirtualAddress不能用。

我估计,该方法在Ndis中行不通。
有人有办法嘛?????

Help me.

晤该晒!




最新喜欢:

linwnlinwn
未之思也 夫何远之有? --------------------
Denning
驱动牛犊
驱动牛犊
  • 注册日期2002-02-07
  • 最后登录2004-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-03-15 16:21
修正上篇部分内容:

如何把NdisMAllocateShareMemory分配的虚拟地址映射到Usermod下。
我分配了3M virtual address space.我想在用户模式下直接读取该地址内容。有人有方法吗。我已用wdm的方式试过,不行
sos sos.

Thankx again.
未之思也 夫何远之有? --------------------
ymvv
驱动牛犊
驱动牛犊
  • 注册日期2001-11-30
  • 最后登录2005-05-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-03-18 14:18
其实你列的方法是可行的。不过,如果分配的内存是分页的,需调用MmProbeAndLockPages, 如果非分页,调用MmBuildMdlForNonPagedPool, 而不是两个都调用。

另外,最后一步MmMapLockedPages必须由应用程序通过IOCTL来调用,因为获得的是该应用程序进程的虚拟地址。

必须注意,相应的释放MmUnmapLocakedPages也必须由同一个应用程序通过IOCTL调用。否则要死机。

Good luck
没有你,我不知道怎么办...
游客

返回顶部