• VirtualAlloc和VirtualCopy的蕴含知识点


    1.VirtualAlloc用来在进程的虚拟地址空间中保留(reserve)或者提交(commit)页。在保留时以64KB为粒度,即保留空间以64K为单位。而提交虚拟地址时,则以页(典型大小为4KB)为单位。

    2.VirtualCopy用来绑定一块物理内存到当前进程虚拟地址空间。参数里的lpvSrc既可以是内核段的虚拟地址也可以是物理地址(用page_physical来标记)。同时要注意lpvSrc的右移与否。

    3.使用VirtualAlloc要包含Winbase.h;使用VirtualCopy时要包含plfuncs.h.两者都要链接coredll.lib.

    4.在CE5.0之前,使用VirtualAlloc获得的虚拟地址空间分为两种情形:
    (1)大小在2MB以下时,位于调用进程的虚拟空间中;
    (2)大小大于2MB时,位于用户态的共享地址空间内(0x42000000-0x7E000000 )
    posted on 2007-03-27 22:51 milkyway 阅读(2022) 评论(4)  编辑 收藏 引用 所属分类: Wince学习小结

     
    评论
    # re: VirtualAlloc和VirtualCopy的蕴含知识点 2007-10-10 15:09 applevip
    博主,你好

    关于VirtualCopy函数中lpvSrc参数的设定,我有一个问题一直想不明白。
    问题是,lpvSrc何时需要右移8位?

    我有下面理解,希望指教。
    1. 如果copy的物理地址在512M范围内,那么由于静态映射的存在,lpvSrc可以为静态映射的虚拟地址,也可以为物理地址。采用后者需要指定page_physical,同时lpvSrc右移8位。
    2. 如果copy的物理地址在512M范围外,那么由于微软的如下规定“
    VirtualCopy also supports the PAGE_PHYSICAL flag. You must set this flag when you are mapping physical memory that resides beyond 512 MB, that is, physical memory with an address above 0x1FFFFFFF.”
    lpvSrc只能为物理地址,同时需要右移。


      回复  更多评论   

    # re: VirtualAlloc和VirtualCopy的蕴含知识点 2007-10-15 14:50 milkyway
    你的理解是正确的。可以简单认为,只要设置了PAGE_PHYSICAL 为真,那么就需要把lpvSrc右移8位。  回复  更多评论   

    # re: VirtualAlloc和VirtualCopy的蕴含知识点 2008-06-16 09:43 邹晓均
    听君一席话,胜读十年书啊!!!
    这两天一直在看WINDOWS内存管理,对页面和粒度这两个概念模糊,直到看到老兄这段话,茅塞顿开,十分感谢!!!
    VirtualAlloc用来在进程的虚拟地址空间中保留(reserve)或者提交(commit)页。在保留时以64KB为粒度,即保留空间以64K为单位。而提交虚拟地址时,则以页(典型大小为4KB)为单位。
    在保留时以64KB为粒度,即保留空间以64K为单位。而提交虚拟地址时,则以页(典型大小为4KB)为单位  回复  更多评论   

    # re: VirtualAlloc和VirtualCopy的蕴含知识点 2008-08-13 22:09 464999979
    请问C#如何调用VirtualAlloc()和VirtualCopy()函数?能否给个例子或说明一下,谢谢  回复  更多评论   

  • 相关阅读:
    [Flex] IFrame系列 —— 嵌入本地页面两种方式source和content(html页面和html代码)
    [Flex] IFrame系列 —— 在flex的web应用中嵌入html的方法
    [Other] 自定义MIME类型支持FLV的相关设置
    [AIR] 利用SnapShot.exe实现QQ截屏功能
    [ActionScript 3.0] 跨域策略文件crossdomain.xml配置详解
    [ActionScript 3.0] 通过三角形获得 3D 效果
    [Java] 实现一个基于命令行的用户管理
    [Java] 将标准字符流写入到文件中(通过控制台写一个html程序,并保存)
    [Java] 使用转换流来处理标准输入
    MySQL索引介绍
  • 原文地址:https://www.cnblogs.com/inspurhaitian/p/1288470.html
Copyright © 2020-2023  润新知