2013-10-31 134 views
1

我試圖使用AppInitHook掛鉤WinApi。所以它完美的工作,但我只需要鉤一些進程不是全部。問題是如何獲得DLL加載的進程ID?例如dll是爲MyApp.exe加載的,我怎樣才能得到這個進程ID?從DLL獲取當前進程ID

Regarsd!

PS 抱歉,我不是鐵桿WINAPI程序員,我的問題mybe那麼容易,但它現在對我來說很難)

回答

0

要在加載DLL時執行某些操作,您需要像下面的代碼示例中那樣定義DllMain函數。然後,當進程連接到DLL時(也可以在代碼示例中),您可以獲得進程ID。

BOOL APIENTRY DllMain(HMODULE hModule, DWORD reasonForCall, LPVOID lpReserved) 
{ 
    hModule; lpReserved; 
    switch (reasonForCall) { 
    case DLL_PROCESS_ATTACH: 
    { 
     uint32_t pid = GetCurrentProcessId(); 
     // Do something depending on the process ID in |pid| 
     break; 
    } 
    case DLL_THREAD_ATTACH: 
    case DLL_THREAD_DETACH: 
    case DLL_PROCESS_DETACH: 
     break; 
    } 
    return TRUE; 
} 
+0

其實做的很少。從DllMain做什麼都很危險。 – Steve

+0

@Steve,爲什麼?牢記這個http://stackoverflow.com/questions/4496233/which-is-called-first-dllmain-or-global-static-object-constructor,我認爲它大多是安全的。 –

+0

谷歌它。你會得到一個卡車負載的原因。原因是裝載機鎖在DllMain中。 – Steve