一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

如何獲得當(dāng)前所在的DLL模塊名稱

 aaie_ 2014-02-16
起因:
    因?yàn)楣ぷ餍枰?寫了一個(gè)小工具,嵌入到各個(gè)項(xiàng)目中(這些項(xiàng)目都是DLL項(xiàng)目).然后,在這個(gè)工具可以輸出一些信息到日志文件.當(dāng)然,輸出信息需要標(biāo)明這些信息來自哪個(gè)程序模塊.首先,就想到了GetModuleFileName,一查MSDN,第一個(gè)參數(shù)hModule無法提供,如果提供NULL,只能得到創(chuàng)建進(jìn)程的那個(gè)EXE文件。又順藤摸瓜,找到了GetModuleHandle函數(shù)。然而,問題仍然存在:GetModuleHandle需要一個(gè)lpModuleName參數(shù),這不是死循環(huán)了么?想尋覓一個(gè)GetCurrentModuleHandle,沒有;google,無果。郁悶之余,看到HMODULE的本質(zhì):模塊的起始地址。
    至此,至少我可以有個(gè)笨辦法解決了:枚舉所有模塊,排序。然后用當(dāng)前函數(shù)地址去匹配模塊句柄,比函數(shù)地址小的句柄中最大的那個(gè)句柄,就是當(dāng)前模塊句柄。方法有點(diǎn)笨,但是可行。
    忽然想到,GetModuleHandleEx是不是有額外的功能呢?查閱之下,大喜,于是如下獲得當(dāng)前模塊文件名: 
        HMODULE hModule = NULL;
        GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS,
            (LPCSTR)&getLogFile, //這是函數(shù)名,強(qiáng)轉(zhuǎn)
           &hModule);
        DWORD len = GetModuleFileNameA(hModule, buffer, sizeof buffer);

成功!猜想,之所以要提供一個(gè)函數(shù)地址作為參考,大概和我想到的方法也類似吧?只是也許它內(nèi)部不需要枚舉,直接訪問模塊列表就可以了。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    中文字幕欧美精品人妻一区| 青青操日老女人的穴穴| 国产永久免费高清在线精品| 成在线人免费视频一区二区| 国产一区二区三区丝袜不卡| 国产三级欧美三级日韩三级| 日韩成人h视频在线观看 | 国产精品白丝一区二区| 久久久精品区二区三区| 国产激情一区二区三区不卡| 欧洲偷拍视频中文字幕| 日本理论片午夜在线观看| 欧美精品在线观看国产| 精品香蕉一区二区在线| 欧美色欧美亚洲日在线| 中国少妇精品偷拍视频| 欧美日韩精品综合一区| 国产美女网红精品演绎| 色婷婷视频国产一区视频| 人妻熟女中文字幕在线| 欧美大胆美女a级视频| 国产毛片av一区二区三区小说| 青青草草免费在线视频| 欧美一级特黄特色大色大片| 亚洲婷婷开心色四房播播| 高清亚洲精品中文字幕乱码| 开心激情网 激情五月天| 国产内射一级一片内射高清| 98精品永久免费视频| av免费视屏在线观看| 香蕉久久夜色精品国产尤物| 亚洲视频在线观看免费中文字幕| 日本欧美在线一区二区三区| 日韩人妻免费视频一专区| 欧美三级不卡在线观线看| 欧美亚洲91在线视频| 国产在线观看不卡一区二区| 中文字幕亚洲精品在线播放| 亚洲男人的天堂就去爱| 黑人巨大精品欧美一区二区区| 欧美日韩在线观看自拍|