wen*_*ibo 2 windows nested-resources
我通过 LoadLibrary 加载一个模块(exe/dll)并在其中获取一个二进制资源的指针。
微软注意到应该使用三个步骤:
我不明白为什么 MS 设计这个过程如此奇怪?
如果要检测 resource 的长度,必须使用 SizeofResource 和 first step 返回的指针,但不能输入 step2 和 step3 返回的指针。
如果检查这些步骤输出的指针地址,我得到了结果:
谁能解释一下这些函数究竟做了什么?
这些函数可以追溯到 Windows 3.x 时代,那时内存稀缺,资源一直保留在磁盘上,直到需要它们为止。FindResource 在磁盘文件的资源表中找到它们,LoadResource 将它们加载到内存中。内存被分配为“可移动”,这意味着内存管理器可以根据需要移动它以释放空间以制作更大的连续块。因此,在可以访问内存之前,需要使用 LockResource 锁定内存。
由于 Windows 2000/XP 很多这些步骤是多余的,但功能仍然向后兼容。