我不知道为什么在Google上找到这个问题的答案是如此困难,但我想直截了当.
是否以相同的方式处理win32资源静态数据是将数据保存在RAM中以用于整个进程运行时的位置,还是将它们保存在磁盘上,就像常规文件一样,直到加载到内存中?像LoadResource/LoadString这样的函数意味着后者,但我想绝对肯定我不会被抽象所欺骗.
在过去的日子里(如Windows 3.1和更早版本),资源在加载过程中被复制到内存中,你只需要处理它们.内存管理器可以执行诸如在内存中移动副本以对空间进行碎片整理,甚至秘密卸载资源,直到您再次需要它为止.当您需要资源时,还有第二步将其"锁定"到内存中.这为您提供了指向副本的指针,并确保资源管理器在您再次解锁之前不会移动它.
在32位版本的Windows中,不会复制资源.可执行文件(或DLL)映射到内存中,如果您触摸资源,虚拟内存管理器将确保它在那里.
API(FindResource,LoadResource,LockResource)反映了旧时代,资源句柄和句柄锁定等.但是现在实现起来要简单得多,因为句柄只是指向资源开头的指针而且锁定是有效的一个无操作,将句柄转换为指针类型并返回它.
| 归档时间: |
|
| 查看次数: |
326 次 |
| 最近记录: |