Freigeben über


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

ICorProfilerInfo::BeginInprocDebugging-Methode

Initialisiert prozessinterne Debugunterstützung. Diese Methode ist in .NET Framework, Version 2.0, veraltet.

ICorProfilerInfo::EndInprocDebugging-Methode

Schließt eine prozessinterne Debugsitzung. Diese Methode ist in .NET Framework, Version 2.0, veraltet.

ICorProfilerInfo::ForceGC-Methode

Erzwingt eine Garbage Collection innerhalb der Laufzeit.

ICorProfilerInfo::GetAppDomainInfo-Methode

Ruft Informationen zur angegebenen Anwendungsdomäne ab.

ICorProfilerInfo::GetAssemblyInfo-Methode

Ruft Informationen zur angegebenen Assembly ab.

ICorProfilerInfo::GetClassFromObject-Methode

Ruft die ClassID eines

Objekts mit angegebener ObjectID ab.

ICorProfilerInfo::GetClassFromToken-Methode

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.

ICorProfilerInfo::GetClassIDInfo-Methode

Ruft das übergeordnete Modul und das Metadatentoken für die angegebene Klasse ab.

ICorProfilerInfo::GetCodeInfo-Methode

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.

ICorProfilerInfo::GetCurrentThreadID-Methode

Ruft die ID des aktuellen Threads ab, wenn es ein verwalteter Thread ist.

ICorProfilerInfo::GetEventMask-Methode

Ruft die aktuellen Ereigniskategorien ab, für die der Profiler Ereignisbenachrichtigungen von der CLR empfangen möchte.

ICorProfilerInfo::GetFunctionFromIP-Methode

Ordnet einer FunctionID einen Anweisungszeiger auf verwalteten Code zu.

ICorProfilerInfo::GetFunctionFromToken-Methode

Ruft die ID einer Funktion ab. Diese Methode ist in .NET Framework, Version 2.0, veraltet. Stattdessen wird die ICorProfilerInfo2::GetFunctionFromTokenAndTypeArgs-Methode verwendet.

ICorProfilerInfo::GetFunctionInfo-Methode

Ruft die übergeordnete Klasse und das Metadatentoken für die angegebene Funktion ab.

ICorProfilerInfo::GetHandleFromThread-Methode

Ordnet die ID eines Threads einem Win32-Threadhandle zu.

ICorProfilerInfo::GetILFunctionBody-Methode

Ruft einen Zeiger auf den Methodentext im MSIL-Code (Microsoft Intermediate Language) ab, beginnend mit dem Header.

ICorProfilerInfo::GetILFunctionBodyAllocator-Methode

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.

ICorProfilerInfo::GetILToNativeMapping-Methode

Ruft eine Zuordnung von MSIL-Offsets zu systemeigenen Offsets für den in der angegebenen Funktion enthaltenen Code ab.

ICorProfilerInfo::GetInprocInspectionInterface-Methode

Ruft ein Objekt ab, das nach einer ICorDebugProcess-Schnittstelle abgefragt werden kann. Diese Methode ist in .NET Framework, Version 2.0, veraltet.

ICorProfilerInfo::GetInprocInspectionIThisThread-Methode

Ruft ein Objekt ab, von dem die ICorDebugThread-Schnittstelle abgefragt werden kann. Diese Methode ist in .NET Framework, Version 2.0, veraltet.

ICorProfilerInfo::GetModuleInfo-Methode

Ruft Informationen zum angegebenen Modul ab.

ICorProfilerInfo::GetModuleMetaData-Methode

Ruft eine Instanz der Metadatenschnittstelle ab, die dem angegebenen Modul zugeordnet wird.

ICorProfilerInfo::GetObjectSize-Methode

Ruft die Größe eines angegebenen Objekts ab.

ICorProfilerInfo::GetThreadContext-Methode

Ruft die Kontextidentität ab, die momentan dem angegebenen Thread zugeordnet ist.

ICorProfilerInfo::GetThreadInfo-Methode

Ruft die aktuelle Win32-Threadidentität für den angegebenen Thread ab.

ICorProfilerInfo::GetTokenAndMetadataFromFunction-Methode

Ruft das Metadatentoken und eine Instanz der Metadatenschnittstelle ab, die mit dem Token für die angegebene Funktion verwendet werden kann.

ICorProfilerInfo::IsArrayClass-Methode

Ermittelt, ob es sich bei der angegebenen Klasse um eine Arrayklasse handelt.

ICorProfilerInfo::SetEnterLeaveFunctionHooks-Methode

Gibt vom Profiler implementierte Funktionen an, die für die Hooks "enter", "leave" und "tailcall" verwalteter Funktionen aufgerufen werden.

ICorProfilerInfo::SetEventMask-Methode

Legt einen Wert fest, der die Typen der Ereignisse angibt, für die der Profiler Benachrichtigungen von der CLR empfangen möchte.

ICorProfilerInfo::SetFunctionIDMapper-Methode

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.

ICorProfilerInfo::SetFunctionReJIT-Methode

Nicht implementiert. Keine Verwendung.

ICorProfilerInfo::SetILFunctionBody-Methode

Ersetzt den Text der angegebenen Funktion im angegebenen Modul.

ICorProfilerInfo::SetILInstrumentedCodeMap-Methode

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

Siehe auch

Referenz

ICorProfilerInfo2

Weitere Ressourcen

Profilerstellungsschnittstellen