日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Dll入口函数参数详解

發(fā)布時(shí)間:2024/4/19 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Dll入口函数参数详解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

DLL程序入口點(diǎn)函數(shù):DllMain,注意:大小寫(xiě)是區(qū)別的(僅導(dǎo)出資源的DLL可以沒(méi)有DllMain函數(shù))。

函數(shù)原型:

BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { return TRUE; }

參數(shù)意義:

①hModule參數(shù):指向DLL本身的實(shí)例句柄;

②ul_reason_for_call參數(shù):指明了DLL被調(diào)用的原因,可以有以下4個(gè)取值:

  • DLL_PROCESS_ATTACH:
    當(dāng)DLL被進(jìn)程 <<第一次>> 調(diào)用時(shí),導(dǎo)致DllMain函數(shù)被調(diào)用,
  • 同時(shí)ul_reason_for_call的值為DLL_PROCESS_ATTACH,

    如果同一個(gè)進(jìn)程后來(lái)再次調(diào)用此DLL時(shí),操作系統(tǒng)只會(huì)增加DLL的使用次數(shù),

    不會(huì)再用DLL_PROCESS_ATTACH調(diào)用DLL的DllMain函數(shù)。

    2.DLL_PROCESS_DETACH:
    當(dāng)DLL被從進(jìn)程的地址空間解除映射時(shí),系統(tǒng)調(diào)用了它的DllMain,傳遞的ul_reason_for_call值是DLL_PROCESS_DETACH。
    ★如果進(jìn)程的終結(jié)是因?yàn)檎{(diào)用了TerminateProcess,系統(tǒng)就不會(huì)用DLL_PROCESS_DETACH來(lái)調(diào)用DLL的DllMain函數(shù)。這就意味著DLL在進(jìn)程結(jié)束前沒(méi)有機(jī)會(huì)執(zhí)行任何清理工作。

    3.DLL_THREAD_ATTACH:
    當(dāng)進(jìn)程創(chuàng)建一線程時(shí),系統(tǒng)查看當(dāng)前映射到進(jìn)程地址空間中的所有DLL文件映像,

    并用值DLL_THREAD_ATTACH調(diào)用DLL的DllMain函數(shù)。

    新創(chuàng)建的線程負(fù)責(zé)執(zhí)行這次的DLL的DllMain函數(shù),

    只有當(dāng)所有的DLL都處理完這一通知后,系統(tǒng)才允許線程開(kāi)始執(zhí)行它的線程函數(shù)。

    4.DLL_THREAD_DETACH:
    如果線程調(diào)用了ExitThread來(lái)結(jié)束線程(線程函數(shù)返回時(shí),系統(tǒng)也會(huì)自動(dòng)調(diào)用ExitThread),

    系統(tǒng)查看當(dāng)前映射到進(jìn)程空間中的所有DLL文件映像,

    并用DLL_THREAD_DETACH來(lái)調(diào)用DllMain函數(shù),

    通知所有的DLL去執(zhí)行線程級(jí)的清理工作。
    ★注意:如果線程的結(jié)束是因?yàn)橄到y(tǒng)中的一個(gè)線程調(diào)用了TerminateThread,

    系統(tǒng)就不會(huì)用值DLL_THREAD_DETACH來(lái)調(diào)用所有DLL的DllMain函數(shù)。

    ③lpReserved參數(shù):保留,目前沒(méi)什么意義。

    總結(jié)

    以上是生活随笔為你收集整理的Dll入口函数参数详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。