Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengesan Penciptaan/Penamatan Proses Win32 Tanpa Pemacu Mod Kernel dalam C ?

Bagaimanakah Saya Boleh Mengesan Penciptaan/Penamatan Proses Win32 Tanpa Pemacu Mod Kernel dalam C ?

Susan Sarandon
Susan Sarandonasal
2024-11-21 02:47:10225semak imbas

How Can I Detect Win32 Process Creation/Termination Without a Kernel-Mode Driver in C  ?

Kesan Penciptaan/Penamatan Proses Win32 tanpa Pemacu Mod Kernel dalam C

Sementara pemacu mod kernel NT menawarkan API komprehensif untuk proses pemberitahuan penciptaan dan penamatan, adalah mungkin untuk mencapai fungsi yang sama dalam C menggunakan hanya Win32 API fungsi.

Menggunakan WMI

WMI (Windows Management Instrumentation) menyediakan set pemberitahuan acara yang kaya, termasuk yang berkaitan dengan penciptaan dan penamatan proses. Walau bagaimanapun, WMI mungkin tidak sesuai untuk semua senario, terutamanya jika anda perlu menjejaki penamatan proses sahaja.

Menggunakan Panggilan Balik

Pendekatan yang lebih cekap ialah menggunakan fungsi panggil balik untuk menunggu proses tertentu ditamatkan. Ini boleh dicapai dengan langkah berikut:

  1. Panggil OpenProcess untuk mendapatkan pengendalian kepada proses yang anda ingin pantau.
  2. Panggil RegisterWaitForSingleObject dengan pemegang proses sebagai parameter. Tentukan WaitOrTimerCallback sebagai fungsi panggil balik yang akan dilaksanakan apabila proses ditamatkan.
  3. Fungsi WaitOrTimerCallback akan dipanggil sebaik sahaja proses ditamatkan.

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 memaparkan kotak mesej sebaik sahaja proses dengan ID dwProcessID ditamatkan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesan Penciptaan/Penamatan Proses Win32 Tanpa Pemacu Mod Kernel dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn