Bagikan melalui


Rekam jepret Sistem

Rekam jepret adalah inti dari fungsi bantuan alat. Rekam jepret adalah salinan baca-saja dari status saat ini dari satu atau beberapa daftar berikut yang berada di memori sistem: proses, utas, modul, dan timbunan.

Proses yang menggunakan alat membantu fungsi mengakses daftar ini dari rekam jepret alih-alih langsung dari sistem operasi. Daftar dalam perubahan memori sistem ketika proses dimulai dan berakhir, utas dibuat dan dihancurkan, modul yang dapat dieksekusi dimuat dan dibongkar dari memori sistem, dan timbunan dibuat dan dihancurkan. Penggunaan informasi dari rekam jepret mencegah inkonsistensi. Jika tidak, perubahan pada daftar mungkin dapat menyebabkan utas salah melintasi daftar atau menyebabkan pelanggaran akses (kesalahan GP). Misalnya, jika aplikasi melintasi daftar utas saat utas lain dibuat atau dihentikan, informasi yang digunakan aplikasi untuk melintasi daftar utas mungkin menjadi ketinggalan jaman dan dapat menyebabkan kesalahan untuk aplikasi yang melintasi daftar.

Untuk mengambil rekam jepret memori sistem, gunakan fungsi CreateToolhelp32Snapshot . Anda dapat mengontrol konten rekam jepret dengan menentukan satu atau beberapa nilai berikut saat memanggil fungsi ini:

  • TH32CS_SNAPHEAPLIST
  • TH32CS_SNAPMODULE
  • TH32CS_SNAPPROCESS
  • TH32CS_SNAPTHREAD

Nilai TH32CS_SNAPHEAPLIST dan TH32CS_SNAPMODULE bersifat spesifik proses. Ketika nilai-nilai ini ditentukan, daftar tumpukan dan modul dari proses yang ditentukan disertakan dalam rekam jepret. Jika Anda menentukan nol sebagai pengidentifikasi proses, proses saat ini digunakan. Nilai TH32CS_SNAPTHREAD selalu membuat rekam jepret di seluruh sistem meskipun pengidentifikasi proses diteruskan ke CreateToolhelp32Snapshot.

Untuk menghitung status tumpukan atau modul untuk semua proses, tentukan nilai TH32CS_SNAPALL dan pengidentifikasi proses proses saat ini. Kemudian, untuk setiap proses tambahan dalam rekam jepret, panggil CreateToolhelp32Snapshot lagi, menentukan pengidentifikasi prosesnya dan nilai TH32CS_SNAPHEAPLIST atau TH32CS_SNAPMODULE .

Anda dapat mengambil kode status kesalahan yang diperluas untuk CreateToolhelp32Snapshot dengan menggunakan fungsi GetLastError .

Ketika proses Anda selesai menggunakan rekam jepret, hancurkan menggunakan fungsi CloseHandle . Jika Anda tidak menghancurkan rekam jepret, prosesnya akan membocorkan memori sampai keluar, pada saat itu sistem mengklaim kembali memori.

Catatan

Handel rekam jepret bertindak seperti handel file dan tunduk pada aturan yang sama mengenai proses dan utas tempatnya dapat digunakan. Untuk menentukan bahwa handel dapat diwariskan, buat rekam jepret menggunakan nilai TH32CS_INHERIT .

 

Mengambil Rekam Jepret dan Melihat Proses