从DLL获取当前进程ID

时间:2013-10-31 20:24:02

标签: winapi dll hook dll-injection

我试图使用AppInitHook挂钩WinApi。所以它工作得很好,但我需要只挂钩一些进程而不是全部。问题是如何获取加载DLL的进程ID?例如,为MyApp.exe加载了dll,如何获取此进程ID?

Regarsd!

PS 对不起,我不是铁杆WinApi程序员和我的问题mybe这么容易,但现在对我很难)

2 个答案:

答案 0 :(得分:2)

查看GetCurrentProcessId()函数。

答案 1 :(得分: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;
}