随笔分类 -  [14] 每日一练(Windows)

1 2 3 4 5 ··· 7 下一页
摘要:DLL 阅读全文
posted @ 2012-08-27 23:44 zTercel 阅读(269) 评论(0) 推荐(1)
摘要:dll 阅读全文
posted @ 2012-08-26 16:00 zTercel 阅读(236) 评论(0) 推荐(1)
摘要:fll 阅读全文
posted @ 2012-08-24 23:02 zTercel 阅读(171) 评论(0) 推荐(0)
摘要:类 阅读全文
posted @ 2012-08-23 23:44 zTercel 阅读(143) 评论(0) 推荐(0)
摘要:获取Dll内资源 阅读全文
posted @ 2012-08-22 23:27 zTercel 阅读(287) 评论(0) 推荐(0)
摘要:DLL 用途非常广泛,正如前几节中所有的,DLL可以封装函数、变量以及类. 而今天我们继续扩展DLL的用途,如何实现一个纯资源的DLL, 这个DLL没有入口也就是没有DllMain函数在VS中设置无入口,然后呢加入非种资源到DLL中如(对话框,Bitmap,Icon, Cursor, String等), Exe 提取资源也非常简单,通过LoadLibrary 得到资源DLL 模块句柄,通过每一种... 阅读全文
posted @ 2012-08-21 22:54 zTercel 阅读(757) 评论(0) 推荐(0)
摘要:我们在前几节中学习了如何从DLL中导出函数以及变量,本节中我们学习如何从DLL中导出C++类, 分别演示DLL模块以及EXE模块所实现的代码: 一、DLL模块: Key Code #pragma once #ifdef DLLLIB_EXPORTS #define DLLAPI_declspec(dllexport) #else #define DLLAPI_d... 阅读全文
posted @ 2012-08-20 21:57 zTercel 阅读(256) 评论(0) 推荐(0)
摘要:延时加载鉴于静态和动态加载之间,即无需在代码中显示加载但它内队依然是动态加载的方式只是系统帮处理了。这样做好处是: 1. 可以加快启动时间(因为它是动态加载在需要的时间加载), 2. 减小编写LoadLibrary, GetProcAddress 而像静态库函数一样直接使用. 但他的不足或者说缺陷的地方: 1. 变量不会通过延迟加载方式导出; 2. Kernal32.DLL 无法延迟加载波; ... 阅读全文
posted @ 2012-08-19 22:06 zTercel 阅读(924) 评论(0) 推荐(0)
摘要:动态加载又叫显示加载,即软件在运行过程中加载的方式,使用这种方式可以节省软件内存消耗,可也是提供软件的灵活性,大许多应用软件中常使用这种方式. 主要使用用应程序框架: LoadLibrary GetProcAddress FreeLibrary 阅读全文
posted @ 2012-08-18 21:13 zTercel 阅读(206) 评论(0) 推荐(0)
摘要:静态加载DLL 又叫隐示加载,就是软件在加载时系统将应用程序依赖的模块加自动加载到内存中. 本例中我们罗列了三个DLL实现方式 1. 静态库 -- 相当于Cpp 编译的obj,无导出 2. 动态库通过extern “C” _declspec(dllexport)方式导出 3. 动态库通过define 文件导出函数和变量,注意变量导出方式以及调用方法. 阅读全文
posted @ 2012-08-17 17:40 zTercel 阅读(164) 评论(0) 推荐(0)
摘要:内存堆 阅读全文
posted @ 2012-08-16 22:58 zTercel 阅读(155) 评论(0) 推荐(0)
摘要:进程间共享数据 阅读全文
posted @ 2012-08-15 19:45 zTercel 阅读(144) 评论(0) 推荐(0)
摘要:memory 阅读全文
posted @ 2012-08-15 18:59 zTercel 阅读(151) 评论(0) 推荐(0)
摘要:正如上一节我们所说,Windows 中所有的进程之间数据共享最底层都由文件映射来完成的。 内存映射分主代码结构如下: CreateFile() CreateFileMapping MapViewOfFile UnmapViewOfFile CloseHandle 阅读全文
posted @ 2012-08-13 23:02 zTercel 阅读(173) 评论(0) 推荐(0)
摘要:将每一个Win32系统进程都有其独立的内存空间,进程相互之间是无法访问内存的。 为了满足业务需要,Windws提供了许多种访问方式如Clipboard, WM_COPYDATA, 邮槽, SOCKET等,但这些都是由文件映射的方式封装完成的。 #pragma data_seg(“数据段名") #pragma data_seg() #pragma comment(linker, “SECTIO... 阅读全文
posted @ 2012-08-12 22:39 zTercel 阅读(176) 评论(0) 推荐(0)
摘要:获取当前正在运行的进程内存使用情况,如同windows 任务管理器一样, 效果如图: windows 提供的API原型:: BOOL GetProcessMemoryInfo(HANDLE hProcess, PPROCESS_MEMORY_COUNTERS pmc, DWORD cb); typedef struct _PROCESS_MEMORY_COUNTERS { DW... 阅读全文
posted @ 2012-08-10 23:46 zTercel 阅读(360) 评论(0) 推荐(0)
摘要:我们通过GlobalMemory 获取当前内存信息,主要信息包括 typedef struct _MEMORYSTATUS { DWORD dwLength; DWORD dwMemoryLoad; SIZE_T dwTotalPhys; SIZE_T dwAvailPhys; SIZE_T dwTotalPageFile; SIZE_T dwAvailPage... 阅读全文
posted @ 2012-08-09 22:44 zTercel 阅读(171) 评论(0) 推荐(0)
摘要:上节有学习过SEH 中结束处理程序, 本节将继续学习SEH的异常处理程序。在软件开发过程中经常会有如:除0, 访问违规内存 (0xC0005)错误等异常发生. 如果我们用了SEH后软件的健壮性就立马可出来. 异常处理程序的代码结构与结束处理程序类似: __try { // 业务代码块 } exception(异常过滤器) { // 异常处理块 } 阅读全文
posted @ 2012-08-05 21:54 zTercel 阅读(195) 评论(0) 推荐(0)
摘要:SEH - 结构化异常处理,有句这样话;写健壮程序必须有到的机制。可见他在软件开发中的重要性。SEH包括结束处理程序和异常处理程序。 本节先学习结束处理程序, 关键代码结构: __try { // 业务代码块 } __finally { // 业务代码结束完成必须调用的代码块 } 结束处理程序主要用于__try 块中业务代码块中出现return、goto, break... 阅读全文
posted @ 2012-08-05 21:43 zTercel 阅读(220) 评论(0) 推荐(0)
摘要:这个标题说的有点大也很模糊,其实本例包括的信息非常少. 主要通过API: GetSystemInfo 返回的SYSTEM_INFO结构体, 数据如下: typedef struct _SYSTEM_INFO { DWORD dwPageSize; LPVOID lpMinimumApplicationAddress; LPVOID lpMaximum... 阅读全文
posted @ 2012-08-05 21:11 zTercel 阅读(163) 评论(0) 推荐(0)

1 2 3 4 5 ··· 7 下一页