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