ICorProfilerInfo
Aktualisiert: November 2007
Stellt Methoden bereit, mit denen Codeprofiler mit der Common Language Runtime (CLR) kommunizieren können, um die Ereignisüberwachung zu steuern und Informationen anzufordern.
Tipp
Jede Methode in der ICorProfilerInfo-Schnittstelle gibt HRESULT zurück, um Erfolg oder Fehler anzugeben. Eine Liste möglicher Rückgabecodes finden Sie in CorError.h.
interface ICorProfilerInfo : IUnknown
{
HRESULT GetClassFromObject(
[in] ObjectID objectId,
[out] ClassID *pClassId);
HRESULT GetClassFromToken(
[in] ModuleID moduleId,
[in] mdTypeDef typeDef,
[out] ClassID *pClassId);
HRESULT GetCodeInfo(
[in] FunctionID functionId,
[out] LPCBYTE *pStart,
[out] ULONG *pcSize);
HRESULT GetEventMask(
[out] DWORD *pdwEvents);
HRESULT GetFunctionFromIP(
[in] LPCBYTE ip,
[out] FunctionID *pFunctionId);
HRESULT GetFunctionFromToken(
[in] ModuleID moduleId,
[in] mdToken token,
[out] FunctionID *pFunctionId);
HRESULT GetHandleFromThread(
[in] ThreadID threadId,
[out] HANDLE *phThread);
HRESULT GetObjectSize(
[in] ObjectID objectId,
[out] ULONG *pcSize);
HRESULT IsArrayClass(
[in] ClassID classId,
[out] CorElementType *pBaseElemType,
[out] ClassID *pBaseClassId,
[out] ULONG *pcRank);
HRESULT GetThreadInfo(
[in] ThreadID threadId,
[out] DWORD *pdwWin32ThreadId);
HRESULT GetCurrentThreadID(
[out] ThreadID *pThreadId);
HRESULT GetClassIDInfo(
[in] ClassID classId,
[out] ModuleID *pModuleId,
[out] mdTypeDef *pTypeDefToken);
HRESULT GetFunctionInfo(
[in] FunctionID functionId,
[out] ClassID *pClassId,
[out] ModuleID *pModuleId,
[out] mdToken *pToken);
HRESULT SetEventMask(
[in] DWORD dwEvents);
HRESULT SetEnterLeaveFunctionHooks(
[in] FunctionEnter *pFuncEnter,
[in] FunctionLeave *pFuncLeave,
[in] FunctionTailcall *pFuncTailcall);
HRESULT SetFunctionIDMapper(
[in] FunctionIDMapper *pFunc);
HRESULT GetTokenAndMetaDataFromFunction(
[in] FunctionID functionId,
[in] REFIID riid,
[out] IUnknown **ppImport,
[out] mdToken *pToken);
HRESULT GetModuleInfo(
[in] ModuleID moduleId,
[out] LPCBYTE *ppBaseLoadAddress,
[in] ULONG cchName,
[out] ULONG *pcchName,
[out, size_is(cchName), length_is(*pcchName)]
WCHAR szName[] ,
[out] AssemblyID *pAssemblyId);
HRESULT GetModuleMetaData(
[in] ModuleID moduleId,
[in] DWORD dwOpenFlags,
[in] REFIID riid,
[out] IUnknown **ppOut);
HRESULT GetILFunctionBody(
[in] ModuleID moduleId,
[in] mdMethodDef methodId,
[out] LPCBYTE *ppMethodHeader,
[out] ULONG *pcbMethodSize);
HRESULT GetILFunctionBodyAllocator(
[in] ModuleID moduleId,
[out] IMethodMalloc **ppMalloc);
HRESULT SetILFunctionBody(
[in] ModuleID moduleId,
[in] mdMethodDef methodid,
[in] LPCBYTE pbNewILMethodHeader);
HRESULT GetAppDomainInfo(
[in] AppDomainID appDomainId,
[in] ULONG cchName,
[out] ULONG *pcchName,
[out, size_is(cchName), length_is(*pcchName)]
WCHAR szName[] ,
[out] ProcessID *pProcessId);
HRESULT GetAssemblyInfo(
[in] AssemblyID assemblyId,
[in] ULONG cchName,
[out] ULONG *pcchName,
[out, size_is(cchName), length_is(*pcchName)]
WCHAR szName[] ,
[out] AppDomainID *pAppDomainId,
[out] ModuleID *pModuleId);
HRESULT SetFunctionReJIT(
[in] FunctionID functionId);
HRESULT ForceGC();
HRESULT SetILInstrumentedCodeMap(
[in] FunctionID functionId,
[in] BOOL fStartJit,
[in] ULONG cILMapEntries,
[in, size_is(cILMapEntries)] COR_IL_MAP rgILMapEntries[] );
HRESULT GetInprocInspectionInterface(
[out] IUnknown **ppicd);
HRESULT GetInprocInspectionIThisThread(
[out] IUnknown **ppicd);
HRESULT GetThreadContext(
[in] ThreadID threadId,
[out] ContextID *pContextId);
HRESULT BeginInprocDebugging(
[in] BOOL fThisThreadOnly,
[out] DWORD *pdwProfilerContext);
HRESULT EndInprocDebugging(
[in] DWORD dwProfilerContext);
HRESULT GetILToNativeMapping(
[in] FunctionID functionId,
[in] ULONG32 cMap,
[out] ULONG32 *pcMap,
[out, size_is(cMap), length_is(*pcMap)]
COR_DEBUG_IL_TO_NATIVE_MAP map[]);
}
Methoden
Methode |
Beschreibung |
---|---|
Initialisiert prozessinterne Debugunterstützung. Diese Methode ist in .NET Framework, Version 2.0, veraltet. |
|
Schließt eine prozessinterne Debugsitzung. Diese Methode ist in .NET Framework, Version 2.0, veraltet. |
|
Erzwingt eine Garbage Collection innerhalb der Laufzeit. |
|
Ruft Informationen zur angegebenen Anwendungsdomäne ab. |
|
Ruft Informationen zur angegebenen Assembly ab. |
|
Ruft die ClassID eines Objekts mit angegebener ObjectID ab. |
|
Ruft bei angegebenem Metadatentoken die ID der Klasse ab. Diese Methode ist in .NET Framework, Version 2.0, veraltet. Stattdessen wird die ICorProfilerInfo2::GetClassFromTokenAndTypeArgs-Methode verwendet. |
|
Ruft das übergeordnete Modul und das Metadatentoken für die angegebene Klasse ab. |
|
Ruft den Wertebereich des systemeigenen Codes ab, der der angegebenen Funktions-ID zugeordnet ist. Diese Methode ist veraltet. Stattdessen wird die ICorProfilerInfo2::GetCodeInfo2-Methode verwendet. |
|
Ruft die ID des aktuellen Threads ab, wenn es ein verwalteter Thread ist. |
|
Ruft die aktuellen Ereigniskategorien ab, für die der Profiler Ereignisbenachrichtigungen von der CLR empfangen möchte. |
|
Ordnet einer FunctionID einen Anweisungszeiger auf verwalteten Code zu. |
|
Ruft die ID einer Funktion ab. Diese Methode ist in .NET Framework, Version 2.0, veraltet. Stattdessen wird die ICorProfilerInfo2::GetFunctionFromTokenAndTypeArgs-Methode verwendet. |
|
Ruft die übergeordnete Klasse und das Metadatentoken für die angegebene Funktion ab. |
|
Ordnet die ID eines Threads einem Win32-Threadhandle zu. |
|
Ruft einen Zeiger auf den Methodentext im MSIL-Code (Microsoft Intermediate Language) ab, beginnend mit dem Header. |
|
Ruft eine Schnittstelle auf, die eine Methode zum Reservieren des Arbeitsspeichers bereitstellt, der für die Auslagerung des Texts einer Methode in MSIL-Code verwendet wird. |
|
Ruft eine Zuordnung von MSIL-Offsets zu systemeigenen Offsets für den in der angegebenen Funktion enthaltenen Code ab. |
|
Ruft ein Objekt ab, das nach einer ICorDebugProcess-Schnittstelle abgefragt werden kann. Diese Methode ist in .NET Framework, Version 2.0, veraltet. |
|
Ruft ein Objekt ab, von dem die ICorDebugThread-Schnittstelle abgefragt werden kann. Diese Methode ist in .NET Framework, Version 2.0, veraltet. |
|
Ruft Informationen zum angegebenen Modul ab. |
|
Ruft eine Instanz der Metadatenschnittstelle ab, die dem angegebenen Modul zugeordnet wird. |
|
Ruft die Größe eines angegebenen Objekts ab. |
|
Ruft die Kontextidentität ab, die momentan dem angegebenen Thread zugeordnet ist. |
|
Ruft die aktuelle Win32-Threadidentität für den angegebenen Thread ab. |
|
Ruft das Metadatentoken und eine Instanz der Metadatenschnittstelle ab, die mit dem Token für die angegebene Funktion verwendet werden kann. |
|
Ermittelt, ob es sich bei der angegebenen Klasse um eine Arrayklasse handelt. |
|
Gibt vom Profiler implementierte Funktionen an, die für die Hooks "enter", "leave" und "tailcall" verwalteter Funktionen aufgerufen werden. |
|
Legt einen Wert fest, der die Typen der Ereignisse angibt, für die der Profiler Benachrichtigungen von der CLR empfangen möchte. |
|
Gibt die vom Profiler implementierte Funktion an, die aufgerufen wird, um FunctionID-Werte alternativen Werten zuzuordnen, die an die entry/exit-Hookfunktionen des Profilers übergeben werden. |
|
Nicht implementiert. Keine Verwendung. |
|
Ersetzt den Text der angegebenen Funktion im angegebenen Modul. |
|
Gibt an, wie die Offsets des ursprünglichen MSIL-Codes einer angegebenen Funktion den neuen Offsets des vom Profiler geänderten MSIL-Codes der Funktion zugeordnet werden. |
Hinweise
Ein Profiler ruft eine Methode in der ICorProfilerInfo-Schnittstelle zur Kommunikation mit der CLR ab, um die Ereignisüberwachung zu steuern und Informationen anzufordern.
Die Methoden der ICorProfilerInfo-Schnittstelle werden von der CLR über ein Freethreadmodell implementiert. Jede Methode gibt ein HRESULT zurück, um Erfolg oder Fehler anzugeben. Eine Liste möglicher Rückgabecodes finden Sie in CorError.h.
Die CLR übergibt während der Initialisierung an alle Codeprofile eine -Schnittstelle. Sie verwendet dabei die Implementierung vonICorProfilerCallback::InitializeICorProfilerInfo des Profilers. Ein Codeprofiler kann dann Methoden in der ICorProfilerInfo-Schnittstelle aufrufen, um Informationen zu verwaltetem Code abzurufen, dessen Ausführung von der CLR gesteuert wird.
Anforderungen
Plattformen: siehe Systemanforderungen für .NET Framework.
Header: CorProf.idl
Bibliothek: CorGuids.lib
.NET Framework-Versionen: 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0