首页 > 系统相关 >20.3 DLL入口函数--《Windows核心编程》

20.3 DLL入口函数--《Windows核心编程》

时间:2022-11-23 11:47:15浏览次数:47  
标签:case 20.3 函数 -- DLL break ATTACH DllMain

如果在执行一些与进程或者线程有关的初始化或者销毁工作的时候,需要 DllMain。如果只需要创建一个包含资源的DLL,不需要这个函数。

B00L WINAPI DllMain(HINSTANCE hinstDll,DWORD fdwReason,PVOID fImpLoad)
{
	switch (fdwReason)
  { 
		case DLL_PROCESS_ATTACH:
			// 当DLL被初次映射到进程的地址空间中时,系统将调用该 DLL 的 DllMain 函数
			break;

		case DLL_THREAD_ATTACH:
			// 当在一个进程中创建线程时,系统要查看当前映射到该进程的地址空间中的所有 DLL 文件映像,
			// 并调用每个文件映像的带有 DLL_THREAD_ATTACH 值的 DllMain 函数。
			break;

		case DLL_THREAD_DETACH:
			// A thread is exiting cleanly.
			break;

		case DLL_PROCESS_DETACH:
			// The DlL is being unmapped from the process's address space.
			break;
	}
	return(TRUE);//Used only for DLL_PROCESS_ATTACH
}

(1)hinstDll:包含了DLL的实例句柄,这个值用于标识DLL的文件映像被映射到进程的地址空间中的虚拟内存地址。
(2)fImpLoad:如果DLL是隐含加载的,那么该参数将是个非0值,如果DLL是显式加载的,那么它的值是0。
(3)fdwReason:用于指明系统为什么调用该函数。该参数可以使用4个值中的一个。

 

标签:case,20.3,函数,--,DLL,break,ATTACH,DllMain
From: https://www.cnblogs.com/renleiguanchashi/p/16917765.html

相关文章

  • unity学习笔记03-渲染管线
    图形数据在GPU上经过运算处理,最后显示在显示器上的过程游戏→图形API→cpu→(DRAWCALL)交给GPU→顶点处理→图元装配→光栅化→像素处理→缓存减少DRAWCALL 增加性能O......
  • anaconda 版本去清华大学镜像站下载
    Indexof/anaconda/archive/|清华大学开源软件镜像站|TsinghuaOpenSourceMirror官网下载的windows最新版本,安装时会卡住。所以去清华镜像下载早期2020版本。 ......
  • elasticSearch基础(二)
    1.DSL查询文档elasticsearch的查询依然是基于JSON风格的DSL来实现的。1.1.DSL查询分类Elasticsearch提供了基于JSON的DSL(DomainSpecificLanguage)来定义查询。常见的查......
  • iTOP2K1000开发板Makefile文件
    Makefile就是描述了整个工程编译连接等规则的文件。我们在终端输入完make命令之后,会调用make工具,make就会在当前目录按照文件名就会找makefile文件,Makefile的命......
  • 20.4 延迟加载DLL--《Windows核心编程》
    延迟加载的DLL是个隐含链接的DLL,它实际上要等到你的代码试图引用DLL中包含的一个符号时才进行加载。DLL延迟加载技术的原理,就是从导入表中去掉某dll这一项,等到正式调......
  • 数值分析 5.X 解线性方程组的直接方法
    矩阵谱分解设\(\boldsymbol{A}=a_{ij}\in\mathbb{R}^{n\timesn}\),若存在数\(\lambda\)(实数或复数)和非零向量\(\boldsymbol{x}=\left(x_{1},x_{2},......
  • AJAX与后端用户交互
    概念ajax能够动态的更新数据,而不刷新页面,这体现了他的异步性,再次能实现在线人数定时查询数据库以下是springboot+ajax更新在线人数<scriptsrc="/webjars/jquery/3.5......
  • 20.5 函数转发器/已知的DLL/DLL重定向/模块的基地址重定位--《Windows核心编程》
    一、函数转发器函数转发器是DLL的输出节(导出段)中的一个项目,用于将对一个函数的调用转至另一个DLL中的另一个函数。可以在DLL中使用函数转发器:#pragmacomment(link......
  • RtspClient简易音视频解码
     可用于rtsp流检测,独立视频解码,音频解码    namespaceRtspClient_Decode{publicpartialclassMainFrom:Form{//视频Disp......
  • 随想录(软件调试)
       对于很多程序员朋友来说,编写代码要比调试代码快乐的多。似乎创造软件比维护软件更能给人带来成就感。然而,在企业里面维护前人留下的代码也是工作中不可缺少的一项内......