0
我正在尋找重新工作一箇舊的CBT windows掛鉤,並且對它如何工作有些困惑。它的設置方式是一個DLL處理Windows掛鉤及其邏輯,而另一個程序在設置掛鉤時調用該DLL。它看起來像這樣:Windows掛機和dll加載
LRESULT CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
return CallNextHookEx(NULL, nCode, wParam, lParam);
}
// this is the function the other program calls into
void InstallHook()
{
// hdll is this dll's address
SetWindowsHookEx(WH_CBT, HookProc, hDLL, 0);
}
然後,我們有我們的DllMain功能。每當hookProc函數被調用時,該dllmain函數似乎都會被調用,並且我不理解這種行爲。我已經檢查過fdwReason,並且由於dll進程附加事件而被調用。
每次調用HookProc時如何觸發此事件?由於它是一個全局鉤子,我認爲windows會加載dll並堅持它,當需要出現時調用HookProc。但是從我所看到的情況來看,它的行爲就像在任何時候HookProc被調用時一樣。這是通常的工作方式,還是代碼庫的另一部分會導致這種情況?
實現全局掛鉤的DLL會被加載到觸發掛鉤的系統中的任何進程中。 –
@Jonathan Ahh,謝謝你的信息。如果您將其作爲答案發布,我會接受並贊成,因爲它完美地回答了我的問題。 – Josh