COR_PRF_SUSPEND_REASON Enumeration

Indicates the reason that the runtime is suspended.

typedef enum {
    COR_PRF_SUSPEND_OTHER                   = 0x00,
    COR_PRF_SUSPEND_FOR_GC                  = 0x01,
    COR_PRF_SUSPEND_FOR_APPDOMAIN_SHUTDOWN  = 0x02,
    COR_PRF_SUSPEND_FOR_CODE_PITCHING       = 0x03,
    COR_PRF_SUSPEND_FOR_SHUTDOWN            = 0x04,
    COR_PRF_SUSPEND_FOR_INPROC_DEBUGGER     = 0x06,
    COR_PRF_SUSPEND_FOR_GC_PREP             = 0x07
} COR_PRF_SUSPEND_REASON;

Members

Member Description

COR_PRF_FIELD_SUSPEND_OTHER

The runtime is suspended for an unspecified reason.

COR_PRF_FIELD_SUSPEND_FOR_GC

The runtime is suspended to service a garbage collection request.

The garbage collection-related callbacks occur between the ICorProfilerCallback::RuntimeSuspendFinished Method and ICorProfilerCallback::RuntimeResumeStarted Method callbacks.

COR_PRF_FIELD_SUSPEND_FOR_APPDOMAIN_SHUTDOWN

The runtime is suspended so that an AppDomain can be shut down.

While the runtime is suspended, the runtime will determine which threads are in the AppDomain that is being shut down and set them to abort when they resume. There are no AppDomain-specific callbacks during this suspension.

COR_PRF_FIELD_SUSPEND_FOR_CODE_PITCHING

The runtime is suspended so that code pitching can occur.

Code pitching ensues only when the just-in-time (JIT) compiler is active with code pitching enabled. Code pitching callbacks occur between the ICorProfilerCallback::RuntimeSuspendFinished Method and ICorProfilerCallback::RuntimeResumeStarted Method callbacks.

NoteNote
The CLR JIT does not pitch functions in the .NET Framework version 2.0, so this value is not used in 2.0.

COR_PRF_FIELD_SUSPEND_FOR_SHUTDOWN

The runtime is suspended so that it can shut down. It must suspend all threads to complete the operation.

COR_PRF_FIELD_SUSPEND_FOR_INPROC_DEBUGGER

The runtime is suspended for in-process debugging.

COR_PRF_FIELD_SUSPEND_FOR_GC_PREP

The runtime is suspended to prepare for a garbage collection.

Remarks

All runtime threads that are in unmanaged code are permitted to continue running until they try to re-enter the runtime, at which point they will also be suspended until the runtime resumes. This also applies to new threads that enter the runtime. All threads within the runtime are either suspended immediately if they are in interruptible code, or asked to suspend when they do reach interruptible code.

Requirements

Platforms: Windows 2000, Windows XP, Windows Server 2003 family

Header: CorProf.idl

Library: CorGuids.lib

.NET Framework Version: 2.0, 1.1, 1.0

See Also

Other Resources

Profiling Enumerations