Bagikan melalui


ICorProfilerInfo2::GetFunctionInfo2 Method

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

Syntax

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[]);

Parameters

funcId [di] ID fungsi untuk mendapatkan kelas induk dan informasi lainnya.

frameInfo [di] 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 tersebut.

cTypeArgs [di] Ukuran typeArgs array.

pcTypeArgs [out] Penunjuk ke jumlah ClassID total nilai.

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

Remarks

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

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

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

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

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

Requirements

Platform: Lihat Persyaratan Sistem.

Header: CorProf.idl, CorProf.h

Library: CorGuids.lib

.NET Framework Versions: Tersedia sejak 2.0

See also