ICorProfilerInfo2::GetFunctionInfo2 方法

取得函式的父類別、中繼資料語彙基元和每個類型引數的 ClassID (如果有的話)。

語法

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

參數

funcId
[in] 用來取得父類別和其他資訊的函式 ID。

frameInfo
[in] 指向堆疊框架相關資訊的 COR_PRF_FRAME_INFO 值。

pClassId
[out] 函式父類別的指標。

pModuleId
[out] 定義函式父類別的模組指標。

pToken
[out] 此函式中繼資料語彙基元的指標。

cTypeArgs
[in] typeArgs 陣列的大小。

pcTypeArgs
[out] ClassID 值總數的指標。

typeArgs
[out] 一組 ClassID 值的陣列,其中每一項為該函式型別引數的 ID。 方法傳回時, typeArgs 將包含部分或所有的 ClassID 值。

備註

分析工具程式碼可以呼叫 ICorProfilerInfo::GetModuleMetaData 來取得特定模組的中繼資料介面。 然後,傳回至 pToken 所參考位置的中繼資料語彙基元可以用來存取此函式的中繼資料。

透過 pClassIdtypeArgs 參數傳回的類別 ID 與類型引數取決於在 frameInfo 參數中傳遞的值,如下表所示。

frameInfo 參數的值 結果
COR_PRF_FRAME_INFO 回呼取得的 FunctionEnter2 pClassId 所參考位置中傳回的 ClassIDtypeArgs 陣列傳回的所有類型引數,都會是精確的。
FunctionEnter2 回呼以外來源取得的 COR_PRF_FRAME_INFO 無法決定精確的 ClassID 和類型引數。 也就是說,ClassID 可能是 null,而且可能會傳回某些類型引數做為 Object
零個 無法決定精確的 ClassID 和類型引數。 也就是說,ClassID 可能是 null,而且可能會傳回某些類型引數做為 Object

GetFunctionInfo2 傳回之後,您必須確認 typeArgs 緩衝區夠大,以包含所有 ClassID 的值。 若要這樣做,請比對 pcTypeArgs 指向的值和 cTypeArgs 參數。 如果 pcTypeArgs 指向一個值,該值大於 cTypeArgs 除以 ClassID 值的大小,請配置較大的 pcTypeArgs 緩衝區,以新的、較大的大小來更新 cTypeArgs,然後再呼叫 GetFunctionInfo2 一次。

或者,您也可以先使用長度為零的 pcTypeArgs 緩衝區來呼叫 GetFunctionInfo2,以取得正確的緩衝區大小。 您可以將緩衝區大小設定為 pcTypeArgs 傳回的值除以 ClassID 值的大小,然後再呼叫 GetFunctionInfo2 一次。

規格需求

平台:請參閱系統需求

標頭: CorProf.idl、CorProf.h

程式庫:CorGuids.lib

.NET Framework版本:自 2.0 起可用

另請參閱