在C 語言中無需內核模式驅動程式即可檢測Win32 進程創建/終止
雖然NT 內核模式驅動程式為進程提供了全面的API建立和終止通知,僅使用Win32 API 函數就可以在C 中實現類似的功能。
使用 WMI
WMI(Windows Management Instrumentation)提供了豐富的集合事件通知,包括與進程建立和終止相關的事件通知。然而,WMI 可能不適合所有場景,尤其是當您只需要追蹤進程終止時。
使用回呼
更有效的方法是使用等待特定進程終止的回呼函數。這可以透過以下步驟實現:
範例程式碼
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);
一旦 ID 為 dwProcessID 的程序終止,此程式碼將顯示一個訊息框。
以上是如何在沒有 C 核心模式驅動程式的情況下偵測 Win32 進程的建立/終止?的詳細內容。更多資訊請關注PHP中文網其他相關文章!