w2mcq
驱动牛犊
驱动牛犊
  • 注册日期2008-08-16
  • 最后登录2019-06-01
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望72点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:2658回复:2

如何在内核中申请一块非分页内存,然后搞成为应用程序可以访问的地址?

楼主#
更多 发布于:2010-09-20 19:16
如何在内核中申请一块非分页内存,然后搞成为应用程序可以访问的地址?

    SystemVirtualAddress = ExAllocatePool(NonPagedPool, 2048*1000);
    Mdl = IoAllocateMdl(SystemVirtualAddress, 2048*1000, FALSE, FALSE, NULL);
    MmBuildMdlForNonPagedPool(Mdl);


memset(SystemVirtualAddress, 0, sizeof(变量));
memcpy(SystemVirtualAddress, (char *)&变量, sizeof(变量));
    UserVirtualAddress = MmMapLockedPages(Mdl, UserMode);
    *((PVOID *)pIoBuffer) = UserVirtualAddress;
    pIrp->IoStatus.Status = STATUS_SUCCESS;
    pIrp->IoStatus.Information = sizeof(PVOID);


大概的代码如上,但红色那部分提示错误。

正确代码应该怎么写?
谢谢。
space061
驱动牛犊
驱动牛犊
  • 注册日期2005-08-03
  • 最后登录2013-05-29
  • 粉丝0
  • 关注0
  • 积分24分
  • 威望272点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2010-09-21 08:32
w2mcq
驱动牛犊
驱动牛犊
  • 注册日期2008-08-16
  • 最后登录2019-06-01
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望72点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2010-09-22 01:51
引用第1楼space061于2010-09-21 08:32发表的  :
http://www.osronline.com/article.cfm?article=39


谢谢了, 哥....
游客

返回顶部