如何在沒有核心驅動程式的情況下偵測Win32 進程建立/終止
雖然實作核心模式驅動程式來監視進程事後件是一種可行的方法,這並不總是可行的。本文探討如何單獨使用 Win32 API 函數來偵測 Win32 進程的建立和終止。
基於 Win32 API 的方法
Win32 API 不提供直接方法為流程事件註冊系統範圍的回呼。但是,有一種利用 WaitForSingleObject 函數的技術:
範例程式碼
VOID CALLBACK WaitOrTimerCallback( _In_ PVOID lpParameter, _In_ BOOLEAN TimerOrWaitFired ) { MessageBox(0, L"The process has exited.", L"INFO", MB_OK); return; } DWORD dwProcessID = 1234; HANDLE hProcHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcessID); HANDLE hNewHandle; RegisterWaitForSingleObject(&hNewHandle, hProcHandle , WaitOrTimerCallback, NULL, INFINITE, WT_EXECUTEONLYONCE);
此程式碼會在進程識別時執行WaitOrTimerCallback 函數透過透過dwProcessID
>
雖然這種方法比編寫核心驅動程式更容易訪問,但它無法提供相同程度的靈活性或效率。同樣重要的是要考慮到 WaitForSingleObject 是一個阻塞函數,因此在某些情況下它可能會影響應用程式的效能。以上是如何在沒有核心驅動程式的情況下偵測 Win32 進程建立/終止?的詳細內容。更多資訊請關注PHP中文網其他相關文章!