摘要:
延时加载鉴于静态和动态加载之间,即无需在代码中显示加载但它内队依然是动态加载的方式只是系统帮处理了。这样做好处是: 1. 可以加快启动时间(因为它是动态加载在需要的时间加载), 2. 减小编写LoadLibrary, GetProcAddress 而像静态库函数一样直接使用. 但他的不足或者说缺陷的地方: 1. 变量不会通过延迟加载方式导出; 2. Kernal32.DLL 无法延迟加载波; ... 阅读全文
摘要:
动态加载又叫显示加载,即软件在运行过程中加载的方式,使用这种方式可以节省软件内存消耗,可也是提供软件的灵活性,大许多应用软件中常使用这种方式. 主要使用用应程序框架: LoadLibrary GetProcAddress FreeLibrary 阅读全文
摘要:
静态加载DLL 又叫隐示加载,就是软件在加载时系统将应用程序依赖的模块加自动加载到内存中. 本例中我们罗列了三个DLL实现方式 1. 静态库 -- 相当于Cpp 编译的obj,无导出 2. 动态库通过extern “C” _declspec(dllexport)方式导出 3. 动态库通过define 文件导出函数和变量,注意变量导出方式以及调用方法. 阅读全文
摘要:
正如上一节我们所说,Windows 中所有的进程之间数据共享最底层都由文件映射来完成的。 内存映射分主代码结构如下: CreateFile() CreateFileMapping MapViewOfFile UnmapViewOfFile CloseHandle 阅读全文
摘要:
将每一个Win32系统进程都有其独立的内存空间,进程相互之间是无法访问内存的。 为了满足业务需要,Windws提供了许多种访问方式如Clipboard, WM_COPYDATA, 邮槽, SOCKET等,但这些都是由文件映射的方式封装完成的。 #pragma data_seg(“数据段名") #pragma data_seg() #pragma comment(linker, “SECTIO... 阅读全文
摘要:
获取当前正在运行的进程内存使用情况,如同windows 任务管理器一样, 效果如图: windows 提供的API原型:: BOOL GetProcessMemoryInfo(HANDLE hProcess, PPROCESS_MEMORY_COUNTERS pmc, DWORD cb); typedef struct _PROCESS_MEMORY_COUNTERS { DW... 阅读全文
摘要:
我们通过GlobalMemory 获取当前内存信息,主要信息包括 typedef struct _MEMORYSTATUS { DWORD dwLength; DWORD dwMemoryLoad; SIZE_T dwTotalPhys; SIZE_T dwAvailPhys; SIZE_T dwTotalPageFile; SIZE_T dwAvailPage... 阅读全文