Bagikan melalui


Fungsi FunctionLeave2

Memberi tahu profiler bahwa fungsi akan kembali ke pemanggil dan memberikan informasi tentang bingkai tumpukan serta nilai pengembalian fungsi.

Sintaks

void __stdcall FunctionLeave2 (  
    [in]  FunctionID                        funcId,  
    [in]  UINT_PTR                          clientData,  
    [in]  COR_PRF_FRAME_INFO                func,  
    [in]  COR_PRF_FUNCTION_ARGUMENT_RANGE  *retvalRange  
);  

Parameter

funcId [in] Pengidentifikasi fungsi yang kembali.

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 handel buram yang dapat diteruskan kembali ke mesin eksekusi dalam metode ICorProfilerInfo2::GetFunctionInfo2.

retvalRange [in] Penunjuk ke struktur COR_PRF_FUNCTION_ARGUMENT_RANGE yang menentukan lokasi memori nilai pengembalian fungsi.

Untuk mengakses informasi nilai pengembalian, bendera COR_PRF_ENABLE_FUNCTION_RETVAL harus diatur. Profiler dapat menggunakan metode ICorProfilerInfo::SetEventMask untuk mengatur bendera peristiwa.

Keterangan

Nilai parameter func dan retvalRange tidak valid setelah fungsi FunctionLeave2 kembali karena nilai dapat berubah atau dihilangkan.

Fungsi FunctionLeave2 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 FunctionLeave2 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 FunctionLeave2 kembali.

Selain itu, fungsi FunctionLeave2 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