Bagikan melalui


Metode ICorProfilerInfo2::GetFunctionInfo2

Mendapatkan kelas induk, token metadata, dan ClassID dari setiap jenis argumen, jika ada, dari suatu fungsi.

Sintaks

HRESULT GetFunctionInfo2(  
    [in]  FunctionID funcId,  
    [in]  COR_PRF_FRAME_INFO frameInfo,  
    [out] ClassID *pClassId,  
    [out] ModuleID *pModuleId,  
    [out] mdToken *pToken,  
    [in]  ULONG32 cTypeArgs,  
    [out] ULONG32 *pcTypeArgs,  
    [out] ClassID typeArgs[]);  

Parameter

funcId
[in] ID fungsi yang digunakan untuk mendapatkan kelas induk dan informasi lainnya.

frameInfo
[in] Nilai COR_PRF_FRAME_INFO yang menunjuk ke informasi tentang bingkai tumpukan.

pClassId
[out] Penunjuk ke kelas induk fungsi.

pModuleId
[out] Penunjuk ke modul tempat kelas induk fungsi ditentukan.

pToken
[out] Penunjuk ke token metadata untuk fungsi.

cTypeArgs
[in] Ukuran array typeArgs.

pcTypeArgs
[out] Penunjuk ke jumlah total nilai ClassID.

typeArgs
[out] Array nilai ClassID, yang masing-masing adalah ID argumen jenis fungsi. Ketika metode kembali, typeArgs akan berisi beberapa atau semua nilai ClassID.

Keterangan

Kode profiler dapat memanggil ICorProfilerInfo::GetModuleMetaData untuk mendapatkan antarmuka metadata untuk modul tertentu. Token metadata yang dikembalikan ke lokasi yang direferensikan oleh pToken lalu dapat digunakan untuk mengakses metadata untuk fungsi tersebut.

ID kelas dan argumen tipe yang dikembalikan melalui parameter pClassId dan typeArgs bergantung pada nilai yang diteruskan dalam parameter frameInfo, seperti yang ditunjukkan pada tabel berikut.

Nilai parameter frameInfo Hasil
Nilai COR_PRF_FRAME_INFO yang diperoleh dari panggilan balik FunctionEnter2 ClassID, yang dikembalikan di lokasi yang direferensikan oleh pClassId, dan semua argumen jenis yang dikembalikan dalam array typeArgs, akan sama persis.
COR_PRF_FRAME_INFO yang diperoleh dari sumber selain panggilan balik FunctionEnter2 Argumen ClassID dan jenis yang tepat tidak dapat ditentukan. Artinya, ClassID mungkin null dan beberapa jenis argumen mungkin kembali sebagai Object.
Nol Argumen ClassID dan jenis yang tepat tidak dapat ditentukan. Artinya, ClassID mungkin null dan beberapa jenis argumen mungkin kembali sebagai Object.

Setelah GetFunctionInfo2 ditampilkan, Anda harus memverifikasi bahwa buffer typeArgs cukup besar untuk berisi semua nilai ClassID. Untuk melakukannya, bandingkan nilai yang ditunjuk pcTypeArgs dengan nilai parameter cTypeArgs. Jika pcTypeArgs menunjuk ke nilai yang lebih besar dari cTypeArgs dibagi dengan ukuran nilai ClassID, alokasikan penyangga pcTypeArgs yang lebih besar, perbarui cTypeArgs dengan ukuran baru yang lebih besar, dan panggil GetFunctionInfo2 lagi.

Atau, Anda dapat terlebih dahulu memanggil GetFunctionInfo2 dengan buffer pcTypeArgs panjang nol untuk mendapatkan ukuran buffer yang benar. Anda kemudian dapat mengatur ukuran buffer ke nilai yang dikembalikan dalam pcTypeArgs dibagi dengan ukuran nilai ClassID, dan memanggil GetFunctionInfo2 lagi.

Persyaratan

Platform: Lihat Persyaratan Sistem.

Header: CorProf.idl, CorProf.h

Pustaka: CorGuids.lib

Versi .NET Framework: Tersedia mulai dari 2.0

Lihat juga