日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

进程模块句柄

發布時間:2025/4/16 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 进程模块句柄 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、注意區別進程模塊句柄進程內核句柄

?

二、每個可執行文件或者DLL文件被裝入到某個進程地址空間后,都會有一個唯一的實例句柄,來表示裝入后的可執行文件或者DLL,此時我們把這個可執行文件或者DLL叫做進程地址空間中的一個模塊。

? ? ? ?進程模塊句柄的本質就是當前模塊的起始地址

?

三、如何獲取進程模塊句柄

? ? a.HMODULE??GetModuleHandle(?LPCTSTR ? lpModuleName)

?

? ?1. ?如果這個函數的參數是NULL的話,那么這個函數只返回當前進程的模塊地址!!

? ?2. ?在DLL中,調用GetModuleHandle,返回的不是DLL模塊的地址,而是當前進程的模塊地址!

? ?3. ?這個函數只檢查本進程地址空間,不檢查別的進程的地址空間。

?

獲得進程中模塊對應的文件名

?

?

DWORD GetModuleFileName(HMODULE hInstance,//進程句柄PTSTR pszPath,//文件名DWORD cchPath);//pszPath指向的內存的大小

?

? ? b.WinMain函數中的第一個參數hInstance

?

四、如果代碼位于DLL文件中,那么想知道這個DLL文件被裝入進程空間后的模塊地址怎么辦?

? ? 1.

?

extern “C” HANDLE __ImageBase; int main() {printf(“%x\n”,&__ImaggeBase);return 0; }


? ? 2.

?

?

void fun(HMODULE* hModule) {GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS,(PCTSTR)fun,&hModule); }



五、實例

?

#include <stdio.h> #include <tchar.h> #include <windows.h> #include <locale.h>extern "C" HANDLE __ImageBase; int _tmain(int argc, _TCHAR* argv[]) {_tsetlocale(LC_ALL,_T("chs")); //支持中文_tprintf(L"__ImageBase:%4x \n",&__ImageBase);HMODULE hMoudle = GetModuleHandle(nullptr);_tprintf(L"當前進程模塊句柄為:%4x \n",hMoudle);TCHAR fileName[MAX_PATH] = {0};GetModuleFileName(hMoudle,fileName,MAX_PATH);_tprintf(L"當前進程模塊文件名:%s \n",fileName);_gettchar();return 0; }


運行結果:


?


轉載于:https://www.cnblogs.com/jadeshu/p/10663718.html

總結

以上是生活随笔為你收集整理的进程模块句柄的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。