home *** CD-ROM | disk | FTP | other *** search
- /****************************************************************************************
- * Copyright (c) 1999 Microsoft Corporation. All Rights Reserved.
- *
- * File:
- * ProfilerCallback.h
- *
- * Description:
- *
- *
- *
- ***************************************************************************************/
- #ifndef __PROFILER_CALLBACK_H__
- #define __PROFILER_CALLBACK_H__
-
- #include "ProfilerBase.h"
- #include "ProfilerHelper.h"
-
-
- /***************************************************************************************
- ******************** ********************
- ******************** ProfilerCallback Declaration ********************
- ******************** ********************
- ***************************************************************************************/
-
- class ProfilerCallback :
- public ICorProfilerCallback,
- public PrfInfo
- {
- public:
-
- ProfilerCallback();
- ~ProfilerCallback();
-
-
- public:
-
- //
- // IUnknown
- //
- COM_METHOD( ULONG ) AddRef();
- COM_METHOD( ULONG ) Release();
- COM_METHOD( HRESULT ) QueryInterface( REFIID riid, void **ppInterface );
-
- //
- // STARTUP/SHUTDOWN EVENTS
- //
- virtual COM_METHOD( HRESULT ) Initialize( IUnknown *pICorProfilerInfoUnk,
- DWORD *pdwRequestedEvents );
-
- COM_METHOD( HRESULT ) Shutdown();
- HRESULT DllExitShutdown();
-
-
- //
- // APPLICATION DOMAIN EVENTS
- //
- COM_METHOD( HRESULT ) AppDomainCreationStarted( AppDomainID appDomainID );
-
- COM_METHOD( HRESULT ) AppDomainCreationFinished( AppDomainID appDomainID,
- HRESULT hrStatus );
-
- COM_METHOD( HRESULT ) AppDomainShutdownStarted( AppDomainID appDomainID );
-
- COM_METHOD( HRESULT ) AppDomainShutdownFinished( AppDomainID appDomainID,
- HRESULT hrStatus );
-
- //
- // ASSEMBLY EVENTS
- //
- COM_METHOD( HRESULT ) AssemblyLoadStarted( AssemblyID assemblyID );
-
- COM_METHOD( HRESULT ) AssemblyLoadFinished( AssemblyID assemblyID,
- HRESULT hrStatus );
-
- COM_METHOD( HRESULT ) AssemblyUnloadStarted( AssemblyID assemblyID );
-
- COM_METHOD( HRESULT ) AssemblyUnloadFinished( AssemblyID assemblyID,
- HRESULT hrStatus );
-
-
- //
- // MODULE EVENTS
- //
- COM_METHOD( HRESULT ) ModuleLoadStarted( ModuleID moduleID );
-
- COM_METHOD( HRESULT ) ModuleLoadFinished( ModuleID moduleID,
- HRESULT hrStatus );
-
- COM_METHOD( HRESULT ) ModuleUnloadStarted( ModuleID moduleID );
-
- COM_METHOD( HRESULT ) ModuleUnloadFinished( ModuleID moduleID,
- HRESULT hrStatus );
-
- COM_METHOD( HRESULT ) ModuleAttachedToAssembly( ModuleID moduleID,
- AssemblyID assemblyID );
-
-
- //
- // CLASS EVENTS
- //
- COM_METHOD( HRESULT ) ClassLoadStarted( ClassID classID );
-
- COM_METHOD( HRESULT ) ClassLoadFinished( ClassID classID,
- HRESULT hrStatus );
-
- COM_METHOD( HRESULT ) ClassUnloadStarted( ClassID classID );
-
- COM_METHOD( HRESULT ) ClassUnloadFinished( ClassID classID,
- HRESULT hrStatus );
-
- COM_METHOD( HRESULT ) FunctionUnloadStarted( FunctionID functionID );
-
-
- //
- // JIT EVENTS
- //
- COM_METHOD( HRESULT ) JITCompilationStarted( FunctionID functionID,
- BOOL fIsSafeToBlock );
-
- COM_METHOD( HRESULT ) JITCompilationFinished( FunctionID functionID,
- HRESULT hrStatus,
- BOOL fIsSafeToBlock );
-
- COM_METHOD( HRESULT ) JITCachedFunctionSearchStarted( FunctionID functionID,
- BOOL *pbUseCachedFunction );
-
- COM_METHOD( HRESULT ) JITCachedFunctionSearchFinished( FunctionID functionID,
- COR_PRF_JIT_CACHE result );
-
- COM_METHOD( HRESULT ) JITFunctionPitched( FunctionID functionID );
-
- COM_METHOD( HRESULT ) JITInlining( FunctionID callerID,
- FunctionID calleeID,
- BOOL *pfShouldInline );
-
-
- //
- // THREAD EVENTS
- //
- COM_METHOD( HRESULT ) ThreadAcquiringMonitor( ThreadID threadID,
- MonitorID monitorID,
- ObjectID objectID,
- ClassID classID );
-
- COM_METHOD( HRESULT ) ThreadAcquiredMonitor( ThreadID threadID,
- MonitorID monitorID,
- ObjectID objectID,
- ClassID classID );
-
- COM_METHOD( HRESULT ) ThreadBlockedMonitor( ThreadID threadID,
- MonitorID monitorID,
- ObjectID objectID,
- ClassID classID );
-
- COM_METHOD( HRESULT ) ThreadCreated( ThreadID threadID );
-
- COM_METHOD( HRESULT ) ThreadDestroyed( ThreadID threadID );
-
- COM_METHOD( HRESULT ) ThreadAssignedToOSThread( ThreadID managedThreadID,
- DWORD osThreadID );
-
- COM_METHOD( HRESULT ) ThreadReleasedMonitor( ThreadID threadID,
- MonitorID monitorID,
- ObjectID objectID,
- ClassID classID );
-
-
-
- //
- // REMOTING EVENTS
- //
-
- //
- // Client-side events
- //
-
- COM_METHOD( HRESULT ) RemotingClientInvocationStarted();
-
- COM_METHOD( HRESULT ) RemotingClientSendingMessage( GUID *pCookie,
- BOOL fIsAsync );
-
- COM_METHOD( HRESULT ) RemotingClientReceivingReply( GUID *pCookie,
- BOOL fIsAsync );
-
- COM_METHOD( HRESULT ) RemotingClientInvocationFinished();
-
- //
- // Server-side events
- //
-
- COM_METHOD( HRESULT ) RemotingServerReceivingMessage( GUID *pCookie,
- BOOL fIsAsync );
-
- COM_METHOD( HRESULT ) RemotingServerInvocationStarted();
-
- COM_METHOD( HRESULT ) RemotingServerInvocationReturned();
-
- COM_METHOD( HRESULT ) RemotingServerSendingReply( GUID *pCookie,
- BOOL fIsAsync );
-
-
- //
- // CONTEXT EVENTS
- //
- COM_METHOD( HRESULT ) UnmanagedToManagedTransition( FunctionID functionID,
- COR_PRF_TRANSITION_REASON reason );
-
- COM_METHOD( HRESULT ) ManagedToUnmanagedTransition( FunctionID functionID,
- COR_PRF_TRANSITION_REASON reason );
-
-
-
- //
- // SUSPENSION EVENTS
- //
- COM_METHOD( HRESULT ) RuntimeSuspendStarted( COR_PRF_SUSPEND_REASON suspendReason );
-
- COM_METHOD( HRESULT ) RuntimeSuspendFinished();
-
- COM_METHOD( HRESULT ) RuntimeSuspendAborted();
-
- COM_METHOD( HRESULT ) RuntimeResumeStarted();
-
- COM_METHOD( HRESULT ) RuntimeResumeFinished();
-
- COM_METHOD( HRESULT ) RuntimeThreadSuspended( ThreadID threadid );
-
- COM_METHOD( HRESULT ) RuntimeThreadResumed( ThreadID threadid );
-
- //
- // GC EVENTS
- //
- COM_METHOD( HRESULT ) MovedReferences( ULONG movedObjectRefs,
- ObjectID oldObjectRefs[],
- ObjectID newObjectRefs[],
- ULONG objectRefSize[] );
-
- COM_METHOD( HRESULT ) ObjectAllocated( ObjectID objectID,
- ClassID classID );
-
- COM_METHOD( HRESULT ) ObjectsAllocatedByClass( ULONG classCount,
- ClassID classIDs[],
- ULONG objects[] );
-
- COM_METHOD( HRESULT ) ObjectReferences( ObjectID objectID,
- ClassID classID,
- ULONG cObjectRefs,
- ObjectID objectRefIDs[] );
-
- COM_METHOD( HRESULT ) RootReferences( ULONG cRootRefs,
- ObjectID rootRefIDs[] );
-
-
-
- //
- // SECURITY EVENTS
- //
- COM_METHOD( HRESULT ) SecurityCheck( ThreadID threadID );
-
-
- //
- // EXCEPTION EVENTS
- //
-
- // Exception creation
- COM_METHOD( HRESULT ) ExceptionThrown( ObjectID thrownObjectID );
-
- // Search phase
- COM_METHOD( HRESULT ) ExceptionSearchFunctionEnter( FunctionID functionID );
-
- COM_METHOD( HRESULT ) ExceptionSearchFunctionLeave();
-
- COM_METHOD( HRESULT ) ExceptionSearchFilterEnter( FunctionID functionID );
-
- COM_METHOD( HRESULT ) ExceptionSearchFilterLeave();
-
- COM_METHOD( HRESULT ) ExceptionSearchCatcherFound( FunctionID functionID );
-
- COM_METHOD( HRESULT ) ExceptionOSHandlerEnter( FunctionID functionID );
-
- COM_METHOD( HRESULT ) ExceptionOSHandlerLeave( FunctionID functionID );
-
- // Unwind phase
- COM_METHOD( HRESULT ) ExceptionUnwindFunctionEnter( FunctionID functionID );
-
- COM_METHOD( HRESULT ) ExceptionUnwindFunctionLeave();
-
- COM_METHOD( HRESULT ) ExceptionUnwindFinallyEnter( FunctionID functionID );
-
- COM_METHOD( HRESULT ) ExceptionUnwindFinallyLeave();
-
- COM_METHOD( HRESULT ) ExceptionCatcherEnter( FunctionID functionID,
- ObjectID objectID );
-
- COM_METHOD( HRESULT ) ExceptionCatcherLeave();
-
-
- //
- // COM CLASSIC WRAPPER
- //
- COM_METHOD( HRESULT ) COMClassicWrapperCreated( ClassID wrappedClassID,
- REFGUID implementedIID,
- void *pUnknown,
- ULONG cSlots );
-
- COM_METHOD( HRESULT ) COMClassicWrapperDestroyed( ClassID wrappedClassID,
- REFGUID implementedIID,
- void *pUnknown );
-
-
- //
- // helper
- //
- static COM_METHOD( HRESULT) CreateObject( REFIID riid, void **ppInterface );
-
-
- // used by function hooks, they have to be static
- static void Enter( FunctionID functionID );
- static void Leave( FunctionID functionID );
- static void Tailcall( FunctionID functionID );
- static UINT_PTR FunctionMapper( FunctionID funcId,
- BOOL *pbHookFunction );
-
-
- private:
-
- long m_refCount;
- DWORD m_dwShutdown;
-
- }; // ProfilerCallback
-
- extern ProfilerCallback *g_pCallbackObject;
- extern CRITICAL_SECTION g_criticalSection;
-
- #endif // __PROFILER_CALLBACK_H__
-
- // End of File
-
-
-