Cara Mengesan Penciptaan/Penamatan Proses Win32 Tanpa Pemacu Kernel
Semasa melaksanakan pemacu mod kernel untuk memantau peristiwa proses adalah pendekatan yang berdaya maju , ia tidak selalu boleh dilaksanakan. Artikel ini meneroka cara untuk mengesan penciptaan dan penamatan proses Win32 menggunakan fungsi API Win32 sahaja.
Pendekatan Berasaskan API Win32
API Win32 tidak menyediakan cara langsung untuk daftarkan panggilan balik seluruh sistem untuk peristiwa proses. Walau bagaimanapun, terdapat teknik yang memanfaatkan fungsi WaitForSingleObject:
Kod Contoh
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);
Kod ini akan melaksanakan fungsi WaitOrTimerCallback apabila proses yang dikenal pasti oleh dwProcessID ditamatkan.
Nota
Walaupun pendekatan ini lebih mudah diakses daripada menulis pemacu kernel , ia tidak memberikan tahap fleksibiliti atau kecekapan yang sama. Ia juga penting untuk mempertimbangkan bahawa WaitForSingleObject ialah fungsi menyekat, jadi ia boleh memberi kesan kepada prestasi aplikasi anda dalam senario tertentu.
Atas ialah kandungan terperinci Bagaimana untuk Mengesan Proses Penciptaan/Penamatan Win32 Tanpa Pemacu Kernel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!