Erkennen Sie die Erstellung/Beendigung von Win32-Prozessen ohne einen Kernel-Modus-Treiber in C
Während NT-Kernelmodus-Treiber eine umfassende API für Prozesse bieten Erstellungs- und Beendigungsbenachrichtigungen ist es möglich, eine ähnliche Funktionalität in C zu erreichen, indem nur Win32-API-Funktionen verwendet werden.
Verwendung von WMI
WMI (Windows Management Instrumentation) bietet einen umfangreichen Satz von Ereignisbenachrichtigungen, einschließlich solcher im Zusammenhang mit der Erstellung und Beendigung von Prozessen. Allerdings ist WMI möglicherweise nicht für alle Szenarien geeignet, insbesondere wenn Sie nur die Prozessbeendigung verfolgen müssen.
Verwenden eines Rückrufs
Ein effizienterer Ansatz ist die Verwendung von a Callback-Funktion, um auf die Beendigung eines bestimmten Prozesses zu warten. Dies kann mit den folgenden Schritten erreicht werden:
Beispielcode
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);
Dieser Code zeigt ein Meldungsfeld an, sobald der Prozess mit der ID dwProcessID beendet wird.
Das obige ist der detaillierte Inhalt vonWie kann ich die Erstellung/Beendigung eines Win32-Prozesses ohne einen Kernelmodus-Treiber in C erkennen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!