用 C 检测 Win32 进程创建和终止
使用 PsSetCreateProcessNotifyRoutine() API 实现内核模式驱动程序是接收消息的常用方法有关 Win32 进程创建或终止的通知。但是,是否有另一种方法可以利用 C 中的 Win32 API 函数?
Win32 API 限制
在无限循环中查询活动进程列表并不是理想的选择由于其高资源消耗的解决方案。不幸的是,没有原生 Win32 API 函数可以提供与内核模式驱动程序方法相同的完整功能。
Windows Management Instrumentation (WMI)
WMI 提供了监控过程事件的潜在解决方案。它可以根据特定标准(例如进程名称)跟踪进程的创建和终止。然而,与内核模式驱动程序相比,WMI 可能涉及更高的开销。
使用 WaitOrTimerCallback 的替代方法
如果跟踪进程终止是主要目标,则需要更轻量级和更高效的方法方法可用:
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);
此代码使用以下方法注册回调函数RegisterWaitForSingleObject()。一旦hProcHandle标识的进程终止,注册的回调将被执行,调用WaitOrTimerCallback函数并显示消息框通知。
以上是可以使用 Win32 API 在用户模式下监视进程创建和终止吗?的详细内容。更多信息请关注PHP中文网其他相关文章!