Bagikan melalui


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