zoukankan      html  css  js  c++  java
  • dll

    dll可以有一个入口点函数,系统会在不同的时候调用这个入口函数。
    这个调用是通知性质的,通常被dll用来执行一些与进程或线程有关的初始化和清理工作
    如果将dll的入口点函数命名为DllMain之外的其他名称,那么虽然代码仍可以编译和链接成功,但入口函数将永远不会被
    调用
    DllMain函数执行的时候可能同一地址空间中的其他dll还没有执行他们的DllMain
    创建新进程时:系统分配进程地址空间
    映射exe,dll的文件映像
    创建主线程
    主线程调用每个dll的DllMain函数
    主线程执行可执行模块的C/C++运行时的启动代码
    主线程执行可执行程序的入口点函数
    LoadLibrary: 定位dll
    映射dll到进程的地址空间
    该线程调用dll的DllMain函数传递DLL_PROCESS_ATTACH
    DllMain返回true,线程继续执行
    DllMain范回false,系统自动从进程的地址空间撤销对dll文件的映射
    BOOL WINAPI DllMain(INSTANCE hInstDll,DWROD fdwReason,PVOID fImpLoad)
    hInstDll表示一个虚拟内存地址,dll的文件映像就被映射到进程地址空间中的这个位置
    fdwReason表示系统调用入口点函数的原因
    fImpLoad表示dll是不是隐式载入的

  • 相关阅读:
    装饰器
    闭包函数
    名称空间与作用域
    函数参数 函数对象 函数嵌套
    文件内光标的移动 函数基础 定义函数的三种形式 函数的返回值 调用方式
    文件
    字符编码 文件处理
    人月神话之阅读笔记一
    mysql+servlet+jsp实现数据库的增删改查
    文件与流课后作业
  • 原文地址:https://www.cnblogs.com/xiaoxiaocaicai/p/3594847.html
Copyright © 2011-2022 走看看