Fungsi FunctionEnter2
Memberi tahu profiler bahwa kontrol diteruskan ke fungsi dan memberikan informasi tentang bingkai tumpukan dan argumen fungsi. Fungsi ini menggantikan fungsi FunctionEnter.
Sintaks
void __stdcall FunctionEnter2 (
[in] FunctionID funcId,
[in] UINT_PTR clientData,
[in] COR_PRF_FRAME_INFO func,
[in] COR_PRF_FUNCTION_ARGUMENT_INFO *argumentInfo
);
Parameter
funcId
[in] Pengidentifikasi fungsi tempat kontrol diteruskan.
clientData
[in] Pengidentifikasi fungsi yang dipetakan ulang, yang sebelumnya ditentukan profiler melalui fungsi FunctionIDMapper.
func
[in] Nilai COR_PRF_FRAME_INFO
yang menunjuk ke informasi tentang bingkai tumpukan.
Profiler harus memperlakukan ini sebagai pegangan buram yang dapat diteruskan kembali ke mesin eksekusi dalam metode ICorProfilerInfo2::GetFunctionInfo2.
argumentInfo
[in] Penunjuk ke struktur COR_PRF_FUNCTION_ARGUMENT_INFO yang menentukan lokasi dalam memori argumen fungsi.
Untuk mengakses informasi argumen, bendera COR_PRF_ENABLE_FUNCTION_ARGS
harus diatur. Profiler dapat menggunakan metode ICorProfilerInfo::SetEventMask untuk mengatur bendera peristiwa.
Keterangan
Nilai parameter func
dan argumentInfo
tidak valid setelah fungsi FunctionEnter2
kembali karena nilai dapat berubah atau dihilangkan.
Fungsi FunctionEnter2
adalah panggilan balik; Anda harus menerapkannya. Implementasi harus menggunakan atribut kelas penyimpanan __declspec
(naked
).
Mesin eksekusi tidak menyimpan register apa pun sebelum memanggil fungsi ini.
Saat masuk, Anda harus menyimpan semua register yang Anda gunakan, termasuk yang ada di floating-point unit (FPU).
Saat keluar, Anda harus memulihkan tumpukan dengan memunculkan semua parameter yang didorong oleh pemanggilnya.
Implementasi FunctionEnter2
tidak boleh memblokir karena akan menunda pengumpulan sampah. Implementasi tidak boleh mencoba pengumpulan sampah karena tumpukannya mungkin tidak dalam keadaan yang ramah pengumpulan sampah. Jika pengumpulan sampah dicoba, runtime akan memblokir hingga FunctionEnter2
kembali.
Selain itu, fungsi FunctionEnter2
tidak boleh memanggil kode terkelola atau dengan cara apa pun menyebabkan alokasi memori terkelola.
Persyaratan
Platform: Lihat Persyaratan Sistem.
Header: CorProf.idl
Pustaka: CorGuids.lib
Versi .NET Framework: Tersedia mulai dari 2.0
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk