摘要:
看《windows via c/c++》第4章进程时,里面提到了windows函数的入口函数在crtexe.c的__tmainCRTStartup ()中,于是跟踪了一下代码。重要的流程如下:各阶段的处理如下:Sample示例:#include // 本文件所提及的参考文件都位于目录Microsof... 阅读全文
摘要:
main函数声明背景:main函数经常会声明为以下方式:int main();int main(int argc, char* argv[]);int main(int argc, char* argv[], char*envp[]);还有些会将返回类型替换为void,最常见的就是void main... 阅读全文
摘要:
DllMain的执行线程DllMain()有4个通知:DLL_PROCESS_ATTACHDLL_THREAD_ATTACHDLL_THREAD_DETACHDLL_PROCESS_DETACH其中:DLL_PROCESS_ATTACH/DLL_PROCESS_DETACH由主线程执行DLL_THR... 阅读全文
摘要:
开发C/C++多线程程序时,要使用C运行库的_beginthreadex()而不是windows API的CreateThread()。一、 _beginthreadex()_beginthreadex()是多线程版本C运行库提供的函数。C运行库最初设计的时候还没有多线程的使用,所有很多变量如err... 阅读全文
摘要:
《Windows Via C/C++》读书笔记之dll入口函数一、DllMain()的一些知识与注意事项*** DllMain()是大小写敏感的。*** DllMain()里面不要处理太复杂的操作,且由于加载顺序不定,只有调用Kernel32的某些函数是安全的。参考文档:http://msdn.mi... 阅读全文
摘要:
《Windows Via C/C++》读书笔记之dll加载时刻一、静态加载1、loader启动exe程序时,扫描exe的import section,加载DLL2、exe程序退出时,卸载dlldll加载与卸载由系统控制,生命期横贯进程。二、动态加载1、调用LoadLibrary()/LoadLibr... 阅读全文
摘要:
《Windows Via C/C++》读书笔记之dll导出与加载一、dll导出导出dll符号可以通过修饰符或者.def文件。*** 通过修饰符__declspec(dllexport)导出,一般会在函数前面加上extern "C"来避免C++编译器对函数名的mangle处理。extern "C" _... 阅读全文
摘要:
《Windows Via C/C++》读书笔记之dll隐式链接一、使用方式exe要隐式链接一个dll,分阶段的需要.h文件,.lib文件和.dll文件。编译阶段:.h文件提供函数定义及变量定义链接阶段:.lib文件提供导出函数和变量的符号名称运行阶段:.dll文件提供代码和数据TIPS: 查看exe... 阅读全文