summaryrefslogtreecommitdiff
path: root/.packages/microsoft.diagnostics.tracing.traceevent/2.0.43/lib/netstandard2.0/Microsoft.Diagnostics.Tracing.TraceEvent.xml
diff options
context:
space:
mode:
Diffstat (limited to '.packages/microsoft.diagnostics.tracing.traceevent/2.0.43/lib/netstandard2.0/Microsoft.Diagnostics.Tracing.TraceEvent.xml')
-rwxr-xr-x.packages/microsoft.diagnostics.tracing.traceevent/2.0.43/lib/netstandard2.0/Microsoft.Diagnostics.Tracing.TraceEvent.xml13686
1 files changed, 13686 insertions, 0 deletions
diff --git a/.packages/microsoft.diagnostics.tracing.traceevent/2.0.43/lib/netstandard2.0/Microsoft.Diagnostics.Tracing.TraceEvent.xml b/.packages/microsoft.diagnostics.tracing.traceevent/2.0.43/lib/netstandard2.0/Microsoft.Diagnostics.Tracing.TraceEvent.xml
new file mode 100755
index 0000000000..6b07afdf02
--- /dev/null
+++ b/.packages/microsoft.diagnostics.tracing.traceevent/2.0.43/lib/netstandard2.0/Microsoft.Diagnostics.Tracing.TraceEvent.xml
@@ -0,0 +1,13686 @@
+<?xml version="1.0"?>
+<doc>
+ <assembly>
+ <name>Microsoft.Diagnostics.Tracing.TraceEvent</name>
+ </assembly>
+ <members>
+ <member name="T:Microsoft.Diagnostics.Tracing.BPerfEventSource">
+ <summary>
+ BPerf Trace Log (BTL) are files generated by the CPU Samples Collector tool in https://github.com/Microsoft/BPerf
+ The layout of the file is as follows -->
+
+ Format:
+ 4 byte integer describing compressed size
+ 4 byte integer describing uncompressed size
+ byte[compressed size]
+
+ The byte array is a list of EVENT_RECORDs. Each Event_RECORD is aligned to 16-bytes.
+
+ The EVENT_RECORD is laid out as a memory dump of the structure in memory. All pointers from
+ the structure are laid out successively in front of the EVENT_RECORD.
+
+ The compression mechanism is using the NTDLL.RtlDecompressBufferEx Express Huffman procedure.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.BPerfEventSource.#ctor(System.String,System.Int64)">
+ <summary>
+ This constructor is used when the consumer has an offset within the BTL file that it would like to seek to.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.BPerfEventSource.#ctor(System.String,System.Int64,System.Byte[],System.Byte[],System.Byte[])">
+ <summary>
+ This constructor is used when the consumer is supplying the buffers for reasons like buffer pooling.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.ActivityComputer">
+ <summary>
+ An ActivityComputer is a state machine that track information about Activities. In particular, it can
+ compute a activity aware call stack. (GetCallStack).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ActivityComputer.#ctor(Microsoft.Diagnostics.Tracing.Etlx.TraceLogEventSource,Microsoft.Diagnostics.Symbols.SymbolReader,Microsoft.Diagnostics.Tracing.GCReferenceComputer)">
+ <summary>
+ Construct a new ActivityComputer that will process events from 'eventLog' and output activity - aware stacks to 'outputStackSource'.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.ActivityComputer.Log">
+ <summary>
+ Returns the TraceLog that is associated with the computer (at construction time)
+ </summary>
+ </member>
+ <member name="E:Microsoft.Diagnostics.Tracing.ActivityComputer.Create">
+ <summary>
+ Fires when an activity is first created (scheduled). The activity exists, and has an ID, but has not run yet.
+ </summary>
+ </member>
+ <member name="E:Microsoft.Diagnostics.Tracing.ActivityComputer.Start">
+ <summary>
+ First when an activity starts to run (using a thread). It fires after the start has logically happened.
+ so you are logically in the started activity.
+ </summary>
+ </member>
+ <member name="E:Microsoft.Diagnostics.Tracing.ActivityComputer.Stop">
+ <summary>
+ Fires when the activity ends (no longer using a thread). It fires just BEFORE the task actually dies
+ (that is you ask the activity of the event being passed to 'Stop' it will still give the passed
+ activity as the answer). The first TraceActivity is the activity that was stopped, the second
+ is the activity that exists afer the stop completes.
+ </summary>
+ </member>
+ <member name="E:Microsoft.Diagnostics.Tracing.ActivityComputer.AfterStop">
+ <summary>
+ Like OnStop but gets called AFTER the stop has completed (thus the current thread's activity has been updated)
+ The activity may be null, which indicates a failure to look up the activity being stopped (and thus the
+ thread's activity will be set to null).
+ </summary>
+ </member>
+ <member name="E:Microsoft.Diagnostics.Tracing.ActivityComputer.AwaitUnblocks">
+ <summary>
+ AwaitUnblocks is a specialized form of the 'Start' event that fires when a task starts because
+ an AWAIT has ended. The start event also fires on awaits end and comes AFTER the AwaitUnblocks
+ event has been delivered.
+
+ Not every AWAIT end causes a callback. Because an AWAIT begin happens for every FRAME you only
+ want a callback for the FIRST task (activity) created by parent of this activity. This is what
+ this callback does.
+
+ AwaitUnblocks are often treated differently because you want to consider the time between the begin
+ (Activity Created) and awaitUnbock to be accounted for as on the critical path, whereas for 'normal'
+ tasks you normally don't think that time is interesting.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ActivityComputer.GetCurrentActivity(Microsoft.Diagnostics.Tracing.Etlx.TraceThread)">
+ <summary>
+ Fetches the current activity for 'thread' at the present time (the current event being dispatched).
+ Never returns null because there is always and activity (it may be the thread task).
+ This is arguably the main thing that this computer keeps track of.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ActivityComputer.GetActivityRepresentingThread(Microsoft.Diagnostics.Tracing.Etlx.TraceThread)">
+ <summary>
+ Gets the default activity for a thread (the activity a thread is doing when the thread starts).
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.ActivityComputer.Item(Microsoft.Diagnostics.Tracing.Etlx.ActivityIndex)">
+ <summary>
+ Maps an activity index back to its activity.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ActivityComputer.GetCallStack(Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource,Microsoft.Diagnostics.Tracing.TraceEvent,System.Func{Microsoft.Diagnostics.Tracing.Etlx.TraceThread,Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex},System.Boolean)">
+ <summary>
+ Returns a activity-aware call stackIndex associated with'ouputStackSource' for the call stack associated with 'data'.
+ Such activity-aware call stacks have pseudo-frame every time on thread causes another task to run code (because the
+ creator 'caused' the target code).
+
+ If 'topFrames' is non-null, then this function is called with a Thread and is expected to return a CallStack index that
+ represents the thread-and-process nodes of the stack. This allows the returned stack to be have pseudo-frames
+ at the root of the stack. Typically this is used to represent the 'request' or other 'global' context. If it is not
+ present the thread and process are used to form these nodes.
+
+ This needs to be a function mapping threads to the stack base rather than just the stack base because in the presence
+ of activities the thread at the 'base' whose 'top' you want may not be the one that 'data' started with, so the caller
+ needs to be prepared to answer the question about any thread.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ActivityComputer.GetCallStackForActivity(Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource,Microsoft.Diagnostics.Tracing.Etlx.TraceActivity,System.Func{Microsoft.Diagnostics.Tracing.Etlx.TraceThread,Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex})">
+ <summary>
+ Returns a StackSource call stack associated with outputStackSource for the activity 'activity' (that is the call stack at the
+ the time this activity was first created. This stack will have it 'top' defined by topFrames (by default just the thread and process frames)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ActivityComputer.GetActivityStack(Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource,Microsoft.Diagnostics.Tracing.Etlx.TraceActivity)">
+ <summary>
+ This is not a call stack but rather the chain of ACTIVITIES (tasks), and can be formed even when call stacks
+
+ Returns a Stack Source stack associated with outputStackSource where each frame is a task starting with 'activity' and
+ going back until the activity has no parent (e.g. the Thread's default activity).
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.ActivityComputer.NoCache">
+ <summary>
+ If set, we don't assume that the top top frames are an attribute of the TOP THREAD (if they vary based on
+ the current activity, then you can't cache. Setting this disables caching.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ActivityComputer.IsThreadParkedInThreadPool(Microsoft.Diagnostics.Tracing.Etlx.TraceLog,Microsoft.Diagnostics.Tracing.Etlx.CallStackIndex)">
+ <summary>
+ Returns true if the call stack is in the thread pool parked (not running user code)
+ This means that the thread CAN'T be running an active activity and we can kill it.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.ActivityComputer.CallStackCache">
+ <summary>
+ This cache remembers Activity * CallStackIndex pairs and the result.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.ActivityComputer.CallStackCache.CurrentActivityIndex">
+ <summary>
+ Remembers the current Activity for 'Get' and 'Put' operations. Needs to be set before Get or Put is called.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ActivityComputer.CallStackCache.Get(Microsoft.Diagnostics.Tracing.Etlx.CallStackIndex)">
+ <summary>
+ Gets the cache entry for the CurrnetActivityIndex with the call stack 'fromStackIndex' returns Invalid if
+ there is no entry.
+
+ This is not passed the CurrentActivityIndex, so it can implement the CallStackMap interface
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ActivityComputer.CallStackCache.Put(Microsoft.Diagnostics.Tracing.Etlx.CallStackIndex,Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex)">
+ <summary>
+ updates the cache entry for the CurrnetActivityIndex with the call stack 'fromStackIndex' with the value
+ 'toStackIndex'
+
+ This is not passed the CurrentActivityIndex, so it can implement the CallStackMap interface
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ActivityComputer.OnCreated(Microsoft.Diagnostics.Tracing.TraceEvent,System.UInt64,Microsoft.Diagnostics.Tracing.Etlx.TraceActivity.ActivityKind)">
+ <summary>
+ Creation handles ANY creation of a task.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ActivityComputer.OnStop(Microsoft.Diagnostics.Tracing.TraceEvent,Microsoft.Diagnostics.Tracing.Etlx.TraceActivity,Microsoft.Diagnostics.Tracing.Etlx.TraceThread)">
+ <summary>
+ Activity can be null, which means we could not figure out the activity we are stopping.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ActivityComputer.GetTPLRawID(Microsoft.Diagnostics.Tracing.TraceEvent,System.Int32,Microsoft.Diagnostics.Tracing.ActivityComputer.IDType)">
+ <summary>
+ Get a trace wide ID for a TPL event. TPL tasks might be 'Scheduled' in the sense
+ that it might run independently on another thread. Tasks that do 'BeginWait and 'EndWait'
+ are not scheduled. The same ID might have both operating simultaneously (if you wait
+ on a scheduled task). Thus you need an independent ID for both.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ActivityComputer.GetCallStackWithActivityFrames(Microsoft.Diagnostics.Tracing.Etlx.CallStackIndex,Microsoft.Diagnostics.Tracing.Etlx.TraceActivity,System.Func{Microsoft.Diagnostics.Tracing.Etlx.TraceThread,Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex})">
+ <summary>
+ if 'activity' has not creator (it is top-level), then return baseStack (near execution) followed by 'top' representing the thread-process frames.
+
+ otherwise, find the fragment of 'baseStack' up to the point to enters the threadpool (the user code) and splice it to the stack of the creator
+ of the activity and return that. (thus returning your full user-stack).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ActivityComputer.TrimETWFrames(Microsoft.Diagnostics.Tracing.Etlx.CallStackIndex)">
+ <summary>
+ Trims off frames that call ETW logic and return. If the pattern is not matched, we return callStackIndex
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ActivityComputer.IsRecursiveTask(Microsoft.Diagnostics.Tracing.Etlx.CallStackIndex,Microsoft.Diagnostics.Tracing.Etlx.CallStackIndex,Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex)">
+ <summary>
+ If the stack from 'startStack' (closest to execution) through 'stopStack' is the same as 'baseStack' return a non-invalid frame
+ indicating that it is recursive and should be dropped. The frame index returned is the name of the task on 'baseStack' that
+ begins the recursion (so you can update it if necessary)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ActivityComputer.SpliceStack(Microsoft.Diagnostics.Tracing.Etlx.CallStackIndex,Microsoft.Diagnostics.Tracing.Etlx.CallStackIndex,Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex)">
+ <summary>
+ Create a stack which is executing at 'startStack' and finds the region until 'stopStack', appending that (in order) to 'baseStack'.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ActivityComputer.FindThreadPoolTransition(Microsoft.Diagnostics.Tracing.Etlx.CallStackIndex)">
+ <summary>
+ Returns the point in 'callStackIndex' where the CLR thread pool transitions from
+ a thread pool worker to the work being done by the threadpool.
+
+ Basically we find the closest to execution (furthest from thread-start) call to a 'Run' method
+ that shows we are running an independent task.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ActivityComputer.ResolveWellKnownSymbols">
+ <summary>
+ Used by TrimETWFrames and FindThreadPoolTransition to find particular frame names and place the information in 'm_methodFlags'
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.ActivityComputer.m_methodFlags">
+ <summary>
+ We look for various well known methods inside the Task library. This array maps method indexes
+ and returns a bitvector of 'kinds' of methods (Run, Schedule, ScheduleHelper).
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.GCReferenceID">
+ <summary>
+ A small number that you can get from the GetReferenceForGCAddress that is
+ invariant as the GC address moves around during GCs. Because this index
+ is small it can be used to store information about the GC reference in a
+ side growable array.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.GCReferenceID.Dead">
+ <summary>
+ Indicates that the address is no longer alive.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.GCReferenceComputer">
+ <summary>
+ This computer will keep track of GC references as they change over time
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.GCReferenceComputer.#ctor(Microsoft.Diagnostics.Tracing.TraceEventDispatcher)">
+ <summary>
+ Create a new GCRefernece computer from the stream of events 'source'. When 'source' is processed
+ you can call 'GetReferenceForGCAddress' to get stable ids for GC references.
+ </summary>
+ <param name="source"></param>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.GCReferenceComputer.GetReferenceForGCAddress(System.UInt64)">
+ <summary>
+ Get a stable ID for a GcAddress. This ID can be compared for object identity.
+ This only works at the current point in time when scanning the source.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.GCReferenceComputer.DisposeGCReference(Microsoft.Diagnostics.Tracing.GCReferenceID)">
+ <summary>
+ If you no longer need to track the GC reference, call this function to remove the tracking.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.SampleProfilerThreadTimeComputer">
+ <summary>
+ A EventPipeThreadTimeComputer does a simple simulation of what each thread is doing to create stack events that represent
+ CPU, blocked time
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.SampleProfilerThreadTimeComputer.#ctor(Microsoft.Diagnostics.Tracing.Etlx.TraceLog,Microsoft.Diagnostics.Symbols.SymbolReader)">
+ <summary>
+ Create a new ThreadTimeComputer
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.SampleProfilerThreadTimeComputer.UseTasks">
+ <summary>
+ If set we compute thread time using Tasks
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.SampleProfilerThreadTimeComputer.IncludeEventSourceEvents">
+ <summary>
+ Track additional info on like EventName or so.
+ Default to true to keep backward compatibility.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.SampleProfilerThreadTimeComputer.GroupByStartStopActivity">
+ <summary>
+ Use start-stop activities as the grouping construct.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.SampleProfilerThreadTimeComputer.GenerateThreadTimeStacks(Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource,Microsoft.Diagnostics.Tracing.Etlx.TraceEvents)">
+ <summary>
+ Generate the thread time stacks, outputting to 'stackSource'.
+ </summary>
+ <param name="outputStackSource"></param>
+ <param name="traceEvents">Optional filtered trace events.</param>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.SampleProfilerThreadTimeComputer.UpdateThreadToWorkOnStartStopActivity(Microsoft.Diagnostics.Tracing.Etlx.TraceThread,Microsoft.Diagnostics.Tracing.StartStopActivity,Microsoft.Diagnostics.Tracing.TraceEvent)">
+ <summary>
+ Updates it so that 'thread' is now working on newStartStop, which can be null which means that it is not working on any
+ start-stop task.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.SampleProfilerThreadTimeComputer.OnSampledProfile(Microsoft.Diagnostics.Tracing.TraceEvent)">
+ <summary>
+ This can actually be called with any event that has a stack. Basically it will log a CPU sample whose
+ size is the time between the last such call and the current one.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.SampleProfilerThreadTimeComputer.GetCallStack(Microsoft.Diagnostics.Tracing.TraceEvent,Microsoft.Diagnostics.Tracing.Etlx.TraceThread)">
+ <summary>
+ Get the call stack for 'data' Note that you thread must be data.Thread(). We pass it just to save the lookup.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.SampleProfilerThreadTimeComputer.GetTopFramesForActivityComputerCase(Microsoft.Diagnostics.Tracing.TraceEvent,Microsoft.Diagnostics.Tracing.Etlx.TraceThread,System.Boolean)">
+ <summary>
+ Returns a function that figures out the top (closest to stack root) frames for an event. Often
+ this returns null which means 'use the normal thread-process frames'.
+ Normally this stack is for the current time, but if 'getAtCreationTime' is true, it will compute the
+ stack at the time that the current activity was CREATED rather than the current time. This works
+ better for await time.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.SampleProfilerThreadTimeComputer.ThreadState">
+ <summary>
+ Represents all the information that we need to track for each thread.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.SampleProfilerThreadTimeComputer.m_unknownTimeStartMsec">
+ <summary>
+ Used to create UNKNOWN frames for start-stop activities. This is indexed by StartStopActivityIndex.
+ and for each start-stop activity indicates when unknown time starts. However if that activity still
+ has known activities associated with it then the number will be negative, and its value is the
+ ref-count of known activities (thus when it falls to 0, it we set it to the start of unknown time.
+ This is indexed by the TOP-MOST start-stop activity.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.SampleProfilerThreadTimeComputer.m_threadToStartStopActivity">
+ <summary>
+ maps thread ID to the current TOP-MOST start-stop activity running on that thread. Used to updated m_unknownTimeStartMsec
+ to figure out when to put in UNKNOWN_ASYNC nodes.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.SampleProfilerThreadTimeComputer.m_startStopActivityToAsyncUnknownSamples">
+ <summary>
+ Sadly, with AWAIT nodes might come into existance AFTER we would have normally identified
+ a region as having no thread/await working on it. Thus you have to be able to 'undo' ASYNC_UNKONWN
+ nodes. We solve this by remembering all of our ASYNC_UNKNOWN nodes on a list (basically provisional)
+ and only add them when the start-stop activity dies (when we know there can't be another AWAIT.
+ Note that we only care about TOP-MOST activities.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.ServerRequestComputer">
+ <summary>
+ Calculates stacks grouping them by the server request (e.g. ASP.NET) request they are for)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ServerRequestComputer.#ctor(Microsoft.Diagnostics.Tracing.TraceEventDispatcher)">
+ <summary>
+ Create a new ServerRequest Computer.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ServerRequestComputer.GetCurrentRequest(Microsoft.Diagnostics.Tracing.Etlx.TraceThread)">
+ <summary>
+ The server request that we currently processing
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.ServerRequest">
+ <summary>
+ A ServerRequest contains all the information we know about a server request (e.g. ASP.NET request)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.ServerRequest.Url">
+ <summary>
+ Any URL associated with the request
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.ServerRequest.ID">
+ <summary>
+ If the request has a GUID associated with it to uniquely identify it, this is it
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.ServerRequest.StartTime">
+ <summary>
+ The time that the request started (or the earliest that we know about it)
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.StartStopActivityComputer">
+ <summary>
+ Calculates start-stop activities (computes duration), It uses the 'standard' mechanism of using
+ ActivityIDs to corelate the start and stop (and any other events between the start and stop,
+ and use the RelatedActivityID on START events to indicate the creator of the activity, so you can
+ form nested start-stop activities.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.StartStopActivityComputer.#ctor(Microsoft.Diagnostics.Tracing.Etlx.TraceLogEventSource,Microsoft.Diagnostics.Tracing.ActivityComputer)">
+ <summary>
+ Create a new ServerRequest Computer.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.StartStopActivityComputer.GetCurrentStartStopActivity(Microsoft.Diagnostics.Tracing.Etlx.TraceThread,Microsoft.Diagnostics.Tracing.TraceEvent)">
+ <summary>
+ The current start-stop activity on the given thread.
+ If present 'context' is used to look up the current activityID and try to use that to repair missing Starts.
+ Basically if we can't figure out what StartStop activity the thread from just the threadID we can use the activityID
+ from the 'context' event to find it as a backup.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.StartStopActivityComputer.GetStartStopActivityForActivity(Microsoft.Diagnostics.Tracing.Etlx.TraceActivity)">
+ <summary>
+ Gets the current Start-Stop activity for a given TraceActivity.
+ </summary>
+ <param name="curActivity"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.StartStopActivityComputer.GetCurrentStartStopActivityStack(Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource,Microsoft.Diagnostics.Tracing.Etlx.TraceThread,Microsoft.Diagnostics.Tracing.Etlx.TraceThread,System.Boolean)">
+ <summary>
+ Returns a stack index representing the nesting of Start-Stop activities for the thread 'curThread' at the current time
+ (At this point of the current event for the computer). The stack starts with a frame for the process of the thread, then
+ has all the start-stop activity frames, then a frame representing 'topThread' which may not be the same as 'thread' since
+ 'topThread' is the thread that spawned the first task, not the currently executing thread.
+
+ Normally this stack is for the current time, but if 'getAtCreationTime' is true, it will compute the
+ stack at the time that the current activity was CREATED rather than the current time. This works
+ better for await time
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.StartStopActivityComputer.GetStartStopActivityStack(Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource,Microsoft.Diagnostics.Tracing.StartStopActivity,Microsoft.Diagnostics.Tracing.Etlx.TraceProcess)">
+ <summary>
+ Gets a stack that represents the nesting of the Start-Stop tasks. curActivity can be null, in which case just he process node is returned.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.StartStopActivityComputer.Start">
+ <summary>
+ If set, called AFTER a Start-Stop activity starts, called with the activity and the event that caused the start.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.StartStopActivityComputer.Stop">
+ <summary>
+ If set, called BEFORE a Start-Stop activity stops, called with the activity and the event that caused the start.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.StartStopActivityComputer.IsActivityPath(System.Guid,System.Int32)">
+ <summary>
+ Returns true if 'guid' follow the EventSouce style activity ID for the process with ID processID.
+ You can pass a process ID of 0 to this routine and it will do the best it can, but the possibility
+ of error is significantly higher (but still under .1%)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.StartStopActivityComputer.ActivityPathProcessID(System.Guid)">
+ <summary>
+ Assuming guid is an Activity Path, extract the process ID from it.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.StartStopActivityComputer.ActivityPathString(System.Guid)">
+ <summary>
+ returns a string representation for the activity path. If the GUID is not an activity path then it returns
+ the normal string representation for a GUID.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.StartStopActivityComputer.DoStopIfNecessary">
+ <summary>
+ We don't do a stop all processing associated with the stop event is done. Thus if we are not 'on'
+ the stop event, then you can do any deferred processing.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.StartStopActivityComputer.TryProcessDiagnosticSourceStartEvents(Microsoft.Diagnostics.Tracing.TraceEvent)">
+ <summary>
+ Try to process some predefined DiagnosticSource ("Microsoft.EntityFrameworkCore.BeforeExecuteCommand" and "Microsoft.AspNetCore.Hosting.BeginRequest") start events.
+ This will try to filter the events by "EventName", if failed it will return false without any further processing.
+ </summary>
+ <returns>Whether or not succeeded in processing the event</returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.StartStopActivityComputer.FixAndProcessWindowsASP(Microsoft.Diagnostics.Tracing.TraceEvent,System.Collections.Generic.KeyValuePair{System.Guid,System.Guid}[])">
+ <summary>
+ fix ASP.NET receiving events
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.StartStopActivityComputer.GetActiveStartStopActivityTable(System.Guid,System.Int32)">
+ <summary>
+ Look up a start-stop activity by its ID. Note that the 'activityID' needs to be unique for that instance
+ within a process. (across ALL start-stop activities, which means it may need components that encode its
+ provider and task). We pass the process ID as well so that it will be unique in the whole trace.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.StartStopActivityComputer.NumberListCodes">
+ <summary>
+ The encoding for a list of numbers used to make Activity Guids. Basically
+ we operate on nibbles (which are nice because they show up as hex digits). The
+ list is ended with a end nibble (0) and depending on the nibble value (Below)
+ the value is either encoded into nibble itself or it can spill over into the
+ bytes that follow.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.StartStopActivityIndex">
+ <summary>
+ An dense number that defines the identity of a StartStopActivity. Used to create side arrays
+ for StartStopActivity info.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.StartStopActivityIndex.Illegal">
+ <summary>
+ An illegal index, sutable for a sentinal.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.StartStopActivity">
+ <summary>
+ A StartStop reresents an activity between a start and stop event as generated by EvetSource.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.StartStopActivity.Index">
+ <summary>
+ The index (small dense numbers suitabilty for array indexing) for this activity.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.StartStopActivity.Name">
+ <summary>
+ The name of the activity (The Task name for the start-stop event as well as the activity ID)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.StartStopActivity.KnownType">
+ <summary>
+ Known Activity Type
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.StartStopActivity.ExtraInfo">
+ <summary>
+ If the activity has additional information associated with it (e.g. a URL), put it here. Can be null.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.StartStopActivity.TaskName">
+ <summary>
+ The Task name (the name prefix that is common to both the start and stop event)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.StartStopActivity.ProcessID">
+ <summary>
+ The processID associated with this activity
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.StartStopActivity.ActivityID">
+ <summary>
+ The Activity ID (as a GUID) that matches the start and stop together.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.StartStopActivity.ActivityPathString">
+ <summary>
+ The path of creators that created this activity.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.StartStopActivity.Creator">
+ <summary>
+ The start-stop activity that created this activity (thus it makes a tree)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.StartStopActivity.StartEventIndex">
+ <summary>
+ The TraceLog event Index, of the start event (you can get addition info)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.StartStopActivity.StopEventIndex">
+ <summary>
+ The TraceLog event Index, of the stop event (you can get addition info)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.StartStopActivity.StartTimeRelativeMSec">
+ <summary>
+ The time in MSec from the start of the trace when the start event happened.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.StartStopActivity.DurationMSec">
+ <summary>
+ The duration of activity in MSec (diff between stop and start)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.StartStopActivity.IsStopped">
+ <summary>
+ This activity has completed (the Stop event has been received). Thus Duration is valid.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.StartStopActivity.GetActivityStack(Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource,Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex)">
+ <summary>
+ Returns a stack on the outputStackSource which has a frame for each activity that
+ caused this activity, as well as the root of the given 'rootStack' (often a stack representing the process).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.StartStopActivity.ToString">
+ <summary>
+ override. Gives the name and start time.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.StartStopActivity.RememberStop(Microsoft.Diagnostics.Tracing.EventIndex,System.Double,Microsoft.Diagnostics.Tracing.Etlx.ActivityIndex)">
+ <summary>
+ We don't update the state for the stop at the time of the stop, but at the next call to any of the StartStopActivityComputer APIs.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.TcpIpComputer">
+ <summary>
+ A TcpIpComputer keeps track of TCP/IP connections so that you can correlate individual reads and
+ writes with the connection info (like the IP address of each end), as well as data packets being
+ sent (if you have packet capture turned on).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TcpIpComputer.#ctor(Microsoft.Diagnostics.Tracing.TraceEventDispatcher)">
+ <summary>
+ Create a new GCRefernece computer from the stream of events 'source'. When 'source' is processed
+ you can call 'GetReferenceForGCAddress' to get stable ids for GC references.
+ </summary>
+ <param name="source"></param>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.ThreadTimeStackComputer">
+ <summary>
+ A ThreadTimeComputer does a simple simulation of what each thread is doing to create stack events that represent
+ CPU, blocked time, disk and Network activity.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ThreadTimeStackComputer.#ctor(Microsoft.Diagnostics.Tracing.Etlx.TraceLog,Microsoft.Diagnostics.Symbols.SymbolReader)">
+ <summary>
+ Create a new ThreadTimeComputer
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.ThreadTimeStackComputer.UseTasks">
+ <summary>
+ If set we compute thread time using Tasks
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.ThreadTimeStackComputer.IncludeEventSourceEvents">
+ <summary>
+ Track additional info on like EventName or so.
+ Default to true to keep backward compatibility.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.ThreadTimeStackComputer.BlockedTimeOnly">
+ <summary>
+ If set we compute blocked time
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.ThreadTimeStackComputer.ExcludeReadyThread">
+ <summary>
+ If set we don't show ready thread information
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.ThreadTimeStackComputer.GroupByAspNetRequest">
+ <summary>
+ If set we group by ASP.NET Request
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.ThreadTimeStackComputer.MiniumReadiedTimeMSec">
+ <summary>
+ If we spend less then this amount of time waiting for the CPU, don't bother showing it.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.ThreadTimeStackComputer.GroupByStartStopActivity">
+ <summary>
+ LIke the GroupByAspNetRequest but use start-stop activities instead of ASP.NET Requests as the grouping construct.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.ThreadTimeStackComputer.NoAwaitTime">
+ <summary>
+ Don't show AwaitTime. For CPU only traces showing await time is misleading since
+ blocked time will not show up.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ThreadTimeStackComputer.GenerateThreadTimeStacks(Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource,Microsoft.Diagnostics.Tracing.Etlx.TraceEvents)">
+ <summary>
+ Generate the thread time stacks, outputting to 'stackSource'.
+ </summary>
+ <param name="outputStackSource"></param>
+ <param name="traceEvents">Optional filtered trace events.</param>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ThreadTimeStackComputer.UpdateThreadToWorkOnStartStopActivity(Microsoft.Diagnostics.Tracing.Etlx.TraceThread,Microsoft.Diagnostics.Tracing.StartStopActivity,Microsoft.Diagnostics.Tracing.TraceEvent)">
+ <summary>
+ Updates it so that 'thread' is now working on newStartStop, which can be null which means that it is not working on any
+ start-stop task.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ThreadTimeStackComputer.OnSampledProfile(Microsoft.Diagnostics.Tracing.TraceEvent)">
+ <summary>
+ This can actually be called with any event that has a stack. Basically it will log a CPU sample whose
+ size is the time between the last such call and the current one.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ThreadTimeStackComputer.GetCallStack(Microsoft.Diagnostics.Tracing.TraceEvent,Microsoft.Diagnostics.Tracing.Etlx.TraceThread)">
+ <summary>
+ Get the call stack for 'data' Note that you thread must be data.Thread(). We pass it just to save the lookup.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ThreadTimeStackComputer.GetTopFramesForActivityComputerCase(Microsoft.Diagnostics.Tracing.TraceEvent,Microsoft.Diagnostics.Tracing.Etlx.TraceThread,System.Boolean)">
+ <summary>
+ Returns a function that figures out the top (closest to stack root) frames for an event. Often
+ this returns null which means 'use the normal thread-process frames'.
+ Normally this stack is for the current time, but if 'getAtCreationTime' is true, it will compute the
+ stack at the time that the current activity was CREATED rather than the current time. This works
+ better for await time.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.ThreadTimeStackComputer.ThreadState">
+ <summary>
+ Represents all the information that we need to track for each thread.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ThreadTimeStackComputer.GetAspNetGuid(Microsoft.Diagnostics.Tracing.Etlx.TraceActivity)">
+ <summary>
+ Given and activity, return the ASP.NET Guid associated with it (or Guid.Empty if there is not one).
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ThreadTimeStackComputer.GetAspNetFromProcessFrameThroughThreadFrameStack(System.Guid,Microsoft.Diagnostics.Tracing.TraceEvent,Microsoft.Diagnostics.Tracing.Etlx.TraceThread)">
+ <summary>
+ Computes the ASP.NET Pseudo frames from the process frame through the thread frame (which includes all
+ the pseudo-frames for the ASP.NET groupings.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ThreadTimeStackComputer.TransferAspNetRequestToThread(System.Guid,Microsoft.Diagnostics.Tracing.Etlx.ThreadIndex,System.String)">
+ <summary>
+ Indicates that the aspNet request represented by aspNetGuid is now being handled by the thread with index
+ newThreadIndex. Thus any old threads handling this request are 'cleared' and replaced with 'newThreadIndex'
+ If 'newThreadIndex == Invalid then the entry for aspNetGuid is removed.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ThreadTimeStackComputer.GenerateReadyThreadNodes(Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource,Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex,Microsoft.Diagnostics.Tracing.Etlx.CallStackIndex,System.Double,System.Int32)">
+ <summary>
+ Generate a stack that from the root looks like 'stackIndex followed by 'READIED BY TID(XXXX)'
+ followed by frames of 'readyThreadCallStack' (suffixed by READIED_BY)
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.ThreadTimeStackComputer.NetworkInfo">
+ <summary>
+ NetworkInfo remembers useful information to tag blocked time that seems to be network related.
+ It is the value of the m_lastPacketForProcess table mapping threads to network information.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.ThreadTimeStackComputer.AspNetRequestInfo">
+ <summary>
+ AspNetRequestInfo remembers everything we care about associate with an single ASP.NET request.
+ It is the value of the m_aspNetRequestInfo table.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.ThreadTimeStackComputer.m_unknownTimeStartMsec">
+ <summary>
+ Used to create UNKNOWN frames for start-stop activities. This is indexed by StartStopActivityIndex.
+ and for each start-stop activity indicates when unknown time starts. However if that activity still
+ has known activities associated with it then the number will be negative, and its value is the
+ ref-count of known activities (thus when it falls to 0, it we set it to the start of unknown time.
+ This is indexed by the TOP-MOST start-stop activity.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.ThreadTimeStackComputer.m_threadToStartStopActivity">
+ <summary>
+ maps thread ID to the current TOP-MOST start-stop activity running on that thread. Used to updated m_unknownTimeStartMsec
+ to figure out when to put in UNKNOWN_ASYNC nodes.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.ThreadTimeStackComputer.m_startStopActivityToAsyncUnknownSamples">
+ <summary>
+ Sadly, with AWAIT nodes might come into existance AFTER we would have normally identified
+ a region as having no thread/await working on it. Thus you have to be able to 'undo' ASYNC_UNKONWN
+ nodes. We solve this by remembering all of our ASYNC_UNKNOWN nodes on a list (basically provisional)
+ and only add them when the start-stop activity dies (when we know there can't be another AWAIT.
+ Note that we only care about TOP-MOST activities.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.ThreadTimeStackComputer.m_IRPToThread">
+ <summary>
+ m_IRPToThread maps the I/O request to the thread that initiated it. This way we can associate
+ the disk read size and file with the thread that asked for it.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.ThreadTimeStackComputer.m_threadIDUsingProc">
+ <summary>
+ Maps processor number to the OS threadID of the thread that is using it. Allows you
+ to determine how (CPU) idle the machine is.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.ThreadTimeStackComputer.m_numIdleProcs">
+ <summary>
+ Using m_threadIDUsingProc, we compute how many processor are current doing nothing
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.NewThreadTimeComputer.Log">
+ <summary>
+ Returns the TraceLog that is associated with the computer (at construction time)
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Analysis.TraceLoadedDotNetRuntimeExtensions">
+ <summary>
+ Extension methods to enable TraceManagedProcess
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Analysis.TraceLoadedDotNetRuntime">
+ <summary>
+ Extension properties for TraceProcess that include necessary .NET values
+
+ TODO This implementation is poor at idenitfying the ParentPID, 64bitness, and Start/End times
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.TraceLoadedDotNetRuntime.RuntimeVersion">
+ <summary>
+ Returns the textual version of the .NET Framework
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.TraceLoadedDotNetRuntime.StartupFlags">
+ <summary>
+ Returns the .NET startup flags
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.TraceLoadedDotNetRuntime.RuntimeBuiltTime">
+ <summary>
+ Date and time of when the runtime was built
+ This is useful when a more detailed version is not present
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.TraceLoadedDotNetRuntime.GC">
+ <summary>
+ Garbage Collector (GC) specific details about this process
+ </summary>
+ </member>
+ <member name="E:Microsoft.Diagnostics.Tracing.Analysis.TraceLoadedDotNetRuntime.GCStart">
+ <summary>
+ Fired on the start of a GC
+ </summary>
+ </member>
+ <member name="E:Microsoft.Diagnostics.Tracing.Analysis.TraceLoadedDotNetRuntime.GCEnd">
+ <summary>
+ Fired at the end of tha GC. Given the nature of the GC, it is possible that multiple GCs will be inflight at the same time.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.TraceLoadedDotNetRuntime.JIT">
+ <summary>
+ Just-in-time compilation (JIT) specific details about this process
+ </summary>
+ </member>
+ <member name="E:Microsoft.Diagnostics.Tracing.Analysis.TraceLoadedDotNetRuntime.JITMethodStart">
+ <summary>
+ Fired when a managed method is starting to compile (jit)
+ </summary>
+ </member>
+ <member name="E:Microsoft.Diagnostics.Tracing.Analysis.TraceLoadedDotNetRuntime.JITMethodEnd">
+ <summary>
+ Fired when a managed method is done compiling (jitting). Given the nature of the JIT, it is possible that multiple methods will be compiled at the same time.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Analysis.TraceLoadedDotNetRuntime.ToString">
+ <summary>
+ An XML representation of the TraceEventProcess (for debugging)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Analysis.TraceLoadedDotNetRuntime.SetupCallbacks(Microsoft.Diagnostics.Tracing.TraceEventDispatcher)">
+ <summary>
+ Gathers relevant details about the processes in the event source
+ </summary>
+ <param name="source"></param>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Analysis.TraceGarbageCollector">
+ <summary>
+ Garbage Collector (GC) specific details about this process
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Analysis.TraceGarbageCollector.Stats">
+ <summary>
+ Process view of GC statistics
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Analysis.TraceGarbageCollector.Generations">
+ <summary>
+ Process view of GC generational statistics
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.TraceGarbageCollector.GCs">
+ <summary>
+ Process view of all GCs
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Analysis.TraceJitCompiler">
+ <summary>
+ Just-in-time compilation (JIT) specific details about this process
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Analysis.TraceJitCompiler.Stats">
+ <summary>
+ Process view of JIT statistics
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.TraceJitCompiler.Methods">
+ <summary>
+ Process view of all methods jitted
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.Number">
+ <summary>
+ Primary GC information
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.Type">
+ <summary>
+ Type of the GC, eg. NonConcurrent, Background or Foreground
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.Reason">
+ <summary>
+ Reason for the GC, eg. exhausted small heap, etc.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.Generation">
+ <summary>
+ Generation of the heap collected. If you compare Generation at the start and stop GC events they may differ.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.StartRelativeMSec">
+ <summary>
+ Time relative to the start of the trace. Useful for ordering
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.DurationMSec">
+ <summary>
+ Duration of the GC, excluding the suspension time
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.PauseDurationMSec">
+ <summary>
+ Duration the EE suspended the process
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.SuspendDurationMSec">
+ <summary>
+ Time the EE took to suspend all the threads
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.PercentTimeInGC">
+ <summary>
+ Percentage time the GC took compared to the process lifetime
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.ProcessCpuMSec">
+ <summary>
+ The number of CPU samples gathered for the lifetime of this process
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.GCCpuMSec">
+ <summary>
+ The number of CPU samples gathered during a GC
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.PerHeapMarkTimes">
+ <summary>
+ Mark time information per heap. Key is the heap number
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.DurationSinceLastRestartMSec">
+ <summary>
+ Time since the last EE restart
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.PauseStartRelativeMSec">
+ <summary>
+ Realtive time to the trace of when the GC pause began
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.IsComplete">
+ <summary>
+ Marks if the GC is in a completed state
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.ServerGcHeapHistories">
+ <summary>
+ Server GC histories
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.AllocedSinceLastGCBasedOnAllocTickMB">
+ <summary>
+ Amount of memory allocated since last GC. Requires GCAllocationTicks enabled. The
+ data is split into small and large heaps
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.HeapCount">
+ <summary>
+ Number of heaps. -1 is the default
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.GetPinnedObjectSizes">
+ <summary>
+ Calculate the size of all pinned objects
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.GetPinnedObjectPercentage">
+ <summary>
+ Percentage of the pinned objects created by the user
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.GetTotalGCTime">
+ <summary>
+ Total time taken by the GC
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.GCGenerationName">
+ <summary>
+ Friendly GC name including type, reason and generation
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.HeapSizeAfterMB">
+ <summary>
+ Heap size after GC (mb)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.PromotedMB">
+ <summary>
+ Amount of memory promoted with GC (mb)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.SurvivalPercent(Microsoft.Diagnostics.Tracing.Parsers.Clr.Gens)">
+ <summary>
+ Memory survival percentage by generation
+ </summary>
+ <param name="gen"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.GenSizeAfterMB(Microsoft.Diagnostics.Tracing.Parsers.Clr.Gens)">
+ <summary>
+ Heap size by generation after GC (mb)
+ </summary>
+ <param name="gen"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.GenFragmentationMB(Microsoft.Diagnostics.Tracing.Parsers.Clr.Gens)">
+ <summary>
+ Heap fragmentation by generation (mb)
+ </summary>
+ <param name="gen"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.GenFragmentationPercent(Microsoft.Diagnostics.Tracing.Parsers.Clr.Gens)">
+ <summary>
+ Percentage of heap fragmented by generation
+ </summary>
+ <param name="gen"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.GenInMB(Microsoft.Diagnostics.Tracing.Parsers.Clr.Gens)">
+ <summary>
+ Amount of memory at the start of the GC by generation (mb)
+ </summary>
+ <param name="gen"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.GenOutMB(Microsoft.Diagnostics.Tracing.Parsers.Clr.Gens)">
+ <summary>
+ Amount of memory after the gc by generation (mb)
+ </summary>
+ <param name="gen"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.GenPromotedMB(Microsoft.Diagnostics.Tracing.Parsers.Clr.Gens)">
+ <summary>
+ Memory promoted by generation (mb)
+ Note that in 4.0 TotalPromotedSize is not entirely accurate (since it doesn't
+ count the pins that got demoted. We could consider using the PerHeap event data
+ to compute the accurate promoted size.
+ In 4.5 this is accurate.
+ </summary>
+ <param name="gen"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.GenBudgetMB(Microsoft.Diagnostics.Tracing.Parsers.Clr.Gens)">
+ <summary>
+ Heap budget by generation (mb)
+ </summary>
+ <param name="gen"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.GenObjSizeAfterMB(Microsoft.Diagnostics.Tracing.Parsers.Clr.Gens)">
+ <summary>
+ Object size by generation after GC (mb)
+ </summary>
+ <param name="gen"></param>
+ <returns></returns>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.PerHeapCondemnedReasons">
+ <summary>
+ Heap condemned reasons by GC
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.FindFirstHighestCondemnedHeap">
+ <summary>
+ Identify the first and greatest condemned heap
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.IsLowEphemeral">
+ <summary>
+ Indicates that the GC has low ephemeral space
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.IsNotCompacting">
+ <summary>
+ Indicates that the GC was not compacting
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.GetCondemnedReasons(System.Collections.Generic.Dictionary{Microsoft.Diagnostics.Tracing.Analysis.GC.CondemnedReasonGroup,System.Int32})">
+ <summary>
+ Returns the condemned reason for this heap
+ </summary>
+ <param name="ReasonsInfo"></param>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.PerHeapHistories">
+ <summary>
+ Per heap statistics
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.TotalPinnedPlugSize">
+ <summary>
+ Sum of the pinned plug sizes
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.TotalUserPinnedPlugSize">
+ <summary>
+ Sum of the user created pinned plug sizes
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.HeapStats">
+ <summary>
+ Per heap statstics
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.LOHWaitThreads">
+ <summary>
+ Large object heap wait threads
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.GlobalHeapHistory">
+ <summary>
+ Process heap statistics
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.FreeList">
+ <summary>
+ Free list efficiency statistics
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.AllocedSinceLastGCMB">
+ <summary>
+ Memory allocated since last GC (mb)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.RatioPeakAfter">
+ <summary>
+ Ratio of heap size before and after
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.AllocRateMBSec">
+ <summary>
+ Ratio of allocations since last GC over time executed
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.HeapSizePeakMB">
+ <summary>
+ Peak heap size before GCs (mb)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.UserAllocated">
+ <summary>
+ Per generation view of user allocated data
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.HeapSizeBeforeMB">
+ <summary>
+ Heap size before gc (mb)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.GenSizeBeforeMB">
+ <summary>
+ Per generation view of heap sizes before GC (mb)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.PauseTimePercentageSinceLastGC">
+ <summary>
+ This represents the percentage time spent paused for this GC since the last GC completed.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.GetUserAllocated(System.Collections.Generic.List{Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC},Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC,Microsoft.Diagnostics.Tracing.Parsers.Clr.Gens)">
+ <summary>
+ Get what's allocated into gen0 or gen3. For server GC this gets the total for
+ all heaps.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.GetUserAllocatedPerHeap(System.Collections.Generic.List{Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC},Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC,System.Int32,Microsoft.Diagnostics.Tracing.Parsers.Clr.Gens)">
+ <summary>
+ For a given heap, get what's allocated into gen0 or gen3.
+ We calculate this differently on 4.0, 4.5 Beta and 4.5 RC+.
+ The caveat with 4.0 and 4.5 Beta is that when survival rate is 0,
+ We don't know how to calculate the allocated - so we just use the
+ last GC's budget (We should indicate this in the tool)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC.is20Event">
+ <summary>
+ Legacy properties that need to be refactored and removed
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Analysis.GC.CondemnedReasonGroup">
+ <summary>
+ Condemned reasons are organized into the following groups.
+ Each group corresponds to one or more reasons.
+ Groups are organized in the way that they mean something to users.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Analysis.GC.BGCAllocWaitInfo">
+ <summary>
+ Background GC allocation information
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Analysis.GC.ThreadWorkSpan">
+ <summary>
+ Span of thread work recorded by CSwitch or CPU Sample Profile events
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Analysis.GC.InducedType">
+ <summary>
+ Reason for an induced GC
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Analysis.GC.EncodedCondemnedReasons">
+ <summary>
+ CondemnedReason
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Analysis.GC.GCCondemnedReasons">
+ <summary>
+ Heap condemned reason
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.GCCondemnedReasons.CondemnedReasonGroups">
+ <summary>
+ This records which reasons are used and the value. Since the biggest value
+ we need to record is the generation number a byte is sufficient.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Analysis.GC.MarkInfo">
+ <summary>
+ Container for mark times
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Analysis.GC.GCPerHeapHistory">
+ <summary>
+ Per heap statistics
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Analysis.GC.GCGlobalHeapHistory">
+ <summary>
+ Process heap statistics
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Analysis.GC.GCHeapStats">
+ <summary>
+ Per heap stastics
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Analysis.GC.FreeListEfficiency">
+ <summary>
+ Approximations we do in this function for V4_5 and prior:
+ On 4.0 we didn't seperate free list from free obj, so we just use fragmentation (which is the sum)
+ as an approximation. This makes the efficiency value a bit larger than it actually is.
+ We don't actually update in for the older gen - this means we only know the out for the younger
+ gen which isn't necessarily all allocated into the older gen. So we could see cases where the
+ out is > 0, yet the older gen's free list doesn't change. Using the younger gen's out as an
+ approximation makes the efficiency value larger than it actually is.
+
+ For V4_6 this requires no approximation.
+
+
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Analysis.GC.GCStats">
+ <summary>
+ Statistical garbage collector (GC) information about a managed process
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.GCStats.Count">
+ <summary>
+ Number of GC's for this process
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.GCStats.NumInduced">
+ <summary>
+ Number of GC's which were induced, eg. GC.Collect, etc.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.GCStats.PinnedObjectSizes">
+ <summary>
+ Total size of the pinned objects seen at collection time
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.GCStats.PinnedObjectPercentage">
+ <summary>
+ Of all the memory that is current pinned, how much of it is from pinned objects
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.GCStats.NumWithPinEvents">
+ <summary>
+ Number of GC's that contained pinned objects
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.GCStats.NumWithPinPlugEvents">
+ <summary>
+ Number of GC's that contained pin plugs
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.GCStats.MaxPauseDurationMSec">
+ <summary>
+ The longest pause duration (ms)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.GC.GCStats.MeanPauseDurationMSec">
+ <summary>
+ Avarege pause duration (ms)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.GC.GCStats.MeanSizeAfterMB">
+ <summary>
+ Average heap size after a GC (mb)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.GC.GCStats.MeanSizePeakMB">
+ <summary>
+ Average peak heap size (mb)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.GC.GCStats.MeanCpuMSec">
+ <summary>
+ Average exclusive cpu samples (ms) during GC's
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.GCStats.TotalPauseTimeMSec">
+ <summary>
+ Total GC pause time (ms)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.GCStats.MaxSuspendDurationMSec">
+ <summary>
+ Max suspend duration (ms), should be very small
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.GCStats.MaxSizePeakMB">
+ <summary>
+ Max peak heap size (mb)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.GCStats.MaxAllocRateMBSec">
+ <summary>
+ Max allocation per second (mb/sec)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.GCStats.TotalAllocatedMB">
+ <summary>
+ Total allocations in the process lifetime (mb)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.GCStats.TotalCpuMSec">
+ <summary>
+ Total exclusive cpu samples (ms)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.GCStats.TotalPromotedMB">
+ <summary>
+ Total memory promoted between generations (mb)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.GCStats.TotalSizeAfterMB">
+ <summary>
+ (obsolete) Total size of heaps after GC'ss (mb)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.GCStats.TotalSizePeakMB">
+ <summary>
+ (obsolete) Total peak heap sizes (mb)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.GC.GCStats.Interesting">
+ <summary>
+ Indication if this process is interesting from a GC pov
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.GCStats.FinalizedObjects">
+ <summary>
+ List of finalizer objects
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Analysis.GC.GCStats.GetGCPauseTimePercentage">
+ <summary>
+ Percentage of time spent paused as compared to the process lifetime
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.GCStats.ProcessDuration">
+ <summary>
+ Running time of the process. Measured as time spent between first and last GC event observed
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.GC.GCStats.GCVersionInfoMismatch">
+ <summary>
+ Means it detected that the ETW information is in a format it does not understand.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.GCStats.IsServerGCUsed">
+ <summary>
+ Indicator of if ServerGC is enabled (1). -1 indicates that not enough events have been processed to know for sure.
+ We don't necessarily have the GCSettings event (only fired at the beginning if we attach)
+ So we have to detect whether we are running server GC or not.
+ Till we get our first GlobalHeapHistory event which indicates whether we use server GC
+ or not this remains -1.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.GCStats.HeapCount">
+ <summary>
+ Number of heaps. -1 indicates that not enough events have been processed to know for sure.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.GC.GCStats.HasDetailedGCInfo">
+ <summary>
+ Indicator if PerHeapHistories is present
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Analysis.JIT.JITStats">
+ <summary>
+ Process statistics about JIT'd code
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.JIT.JITStats.Count">
+ <summary>
+ Number of JITT'd methods
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.JIT.JITStats.TotalCpuTimeMSec">
+ <summary>
+ Total cpu samples for this process
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.JIT.JITStats.CountForeground">
+ <summary>
+ Number of methods JITT'd by foreground threads just prior to execution
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.JIT.JITStats.TotalForegroundCpuTimeMSec">
+ <summary>
+ Total time spent compiling methods on foreground threads
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.JIT.JITStats.CountBackgroundMultiCoreJit">
+ <summary>
+ Number of methods JITT'd by the multicore JIT background threads
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.JIT.JITStats.TotalBackgroundMultiCoreJitCpuTimeMSec">
+ <summary>
+ Total time spent compiling methods on background threads for multicore JIT
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.JIT.JITStats.CountBackgroundTieredCompilation">
+ <summary>
+ Number of methods JITT'd by the tiered compilation background threads
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.JIT.JITStats.TotalBackgroundTieredCompilationCpuTimeMSec">
+ <summary>
+ Total time spent compiling methods on background threads for tiered compilation
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.JIT.JITStats.TotalILSize">
+ <summary>
+ Total IL size for all JITT'd methods
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.JIT.JITStats.TotalNativeSize">
+ <summary>
+ Total native code size for all JITT'd methods
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.JIT.JITStats.IsClr4">
+ <summary>
+ Indication if this is running on .NET 4.x+
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.JIT.JITStats.Interesting">
+ <summary>
+ Indicates if this process has sufficient JIT activity to be interesting
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.JIT.JITStats.BackgroundJitAbortedAtMSec">
+ <summary>
+ Background JIT: Time Jit was aborted (ms)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.JIT.JITStats.LastAssemblyLoadNameBeforeAbort">
+ <summary>
+ Background JIT: Assembly name of last assembly loaded before JIT aborted
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.JIT.JITStats.LastAssemblyLoadBeforeAbortMSec">
+ <summary>
+ Background JIT: Relative start time of last assembly loaded before JIT aborted
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.JIT.JITStats.LastAssemblyLoadBeforeAbortSuccessful">
+ <summary>
+ Background JIT: Indication if the last assembly load was successful before JIT aborted
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.JIT.JITStats.BackgroundJitThread">
+ <summary>
+ Background JIT: Thread id of the background JIT
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.JIT.JITStats.BackgroundJITEventsOn">
+ <summary>
+ Background JIT: Indication that background JIT events are enabled
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.JIT.JITStats.InliningSuccesses">
+ <summary>
+ List of successfully inlinded methods
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.JIT.JITStats.InliningFailures">
+ <summary>
+ List of failed inlined methods
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.JIT.JITStats.RecordedModules">
+ <summary>
+ Modules encountered while processing managed samples
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.JIT.JITStats.SymbolsMissing">
+ <summary>
+ List of modules whose symbols were not successfully loaded
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Analysis.JIT.JITStats.AddMethodToStatistics(Microsoft.Diagnostics.Tracing.Analysis.JIT.TraceJittedMethod)">
+ <summary>
+ Aggregate a method to be included in the statistics
+ </summary>
+ <param name="method"></param>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Analysis.JIT.JITStats.MethodComplete(Microsoft.Diagnostics.Tracing.Analysis.TraceLoadedDotNetRuntime,Microsoft.Diagnostics.Tracing.TraceEvent,System.Int32,System.Int64,System.String,System.Int64,System.Int32,System.Boolean@)">
+ <summary>
+ Legacgy
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Analysis.JIT.JITStats.MethodKey">
+ <summary>
+ Uniquely represents a method within a process.
+ Used as a lookup key for data structures.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Analysis.JIT.InliningSuccessResult">
+ <summary>
+ JIT inlining successes
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Analysis.JIT.InliningFailureResult">
+ <summary>
+ JIT inlining failures
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Analysis.JIT.TraceJittedMethod">
+ <summary>
+ Per method information
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.JIT.TraceJittedMethod.CompileCpuTimeMSec">
+ <summary>
+ Time taken to compile the method
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.JIT.TraceJittedMethod.ILSize">
+ <summary>
+ IL size of method
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.JIT.TraceJittedMethod.NativeSize">
+ <summary>
+ Native code size of method
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.JIT.TraceJittedMethod.StartTimeMSec">
+ <summary>
+ Relative start time of JIT'd method
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.JIT.TraceJittedMethod.MethodName">
+ <summary>
+ Method name
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.JIT.TraceJittedMethod.ModuleILPath">
+ <summary>
+ Module name
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.JIT.TraceJittedMethod.ThreadID">
+ <summary>
+ Thread id where JIT'd
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.JIT.TraceJittedMethod.IsBackground">
+ <summary>
+ Indication of if it was JIT'd in the background
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.JIT.TraceJittedMethod.CompilationThreadKind">
+ <summary>
+ Indication of if it was JIT'd in the background and why
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.JIT.TraceJittedMethod.DistanceAhead">
+ <summary>
+ Amount of time the method was forcasted to JIT
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.JIT.TraceJittedMethod.BlockedReason">
+ <summary>
+ Indication of if the background JIT request was blocked and why
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.JIT.TraceJittedMethod.RunCpuTimeMSec">
+ <summary>
+ Number of cpu samples for this method
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.JIT.TraceJittedMethod.VersionID">
+ <summary>
+ The version id that is created by the runtime code versioning feature. This is an incrementing counter that starts at 0 for each method.
+ The ETW events historically name this as the ReJITID event parameter in the payload, but we have now co-opted its usage.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.JIT.TraceJittedMethod.ForegroundMethodRequestTimeMSec">
+ <summary>
+ Legacy
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Analysis.TraceProcessesExtensions">
+ <summary>
+ TraceProcess Extension methods
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Analysis.ProcessIndex">
+ <summary>
+ Each process is given a unique index from 0 to TraceProcesses.Count-1 and unlike
+ the OS Process ID, is unambiguous (The OS process ID can be reused after a
+ process dies). ProcessIndex represents this index. By using an enum rather than an int
+ it allows stronger typing and reduces the potential for errors.
+ <para>
+ It is expected that users of this library might keep arrays of size TraceProcesses.Count to store
+ additional data associated with a process in the trace.
+ </para>
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Analysis.ProcessIndex.Invalid">
+ <summary>
+ Returned when no appropriate Process exists.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Analysis.TraceProcesses">
+ <summary>
+ A TraceProcesses instance represents the list of processes in the Event log.
+
+ TraceProcesses are IEnumerable, and will return the processes in order of creation time.
+
+ This is a copy of the reduced code from TraceLog!TraceProcesses (removal of elements that
+ depend on TraceLog - there is a lot of them)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.TraceProcesses.Log">
+ <summary>
+ The log associated with this collection of processes.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.TraceProcesses.Count">
+ <summary>
+ The count of the number of TraceProcess instances in the TraceProcesses list.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.TraceProcesses.Item(Microsoft.Diagnostics.Tracing.Analysis.ProcessIndex)">
+ <summary>
+ Each process that occurs in the log is given a unique index (which unlike the PID is unique), that
+ ranges from 0 to Count - 1. Return the TraceProcess for the given index.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Analysis.TraceProcesses.ToString">
+ <summary>
+ An XML representation of the TraceEventProcesses (for debugging)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Analysis.TraceProcesses.System#Collections#Generic#IEnumerable{Microsoft#Diagnostics#Tracing#Analysis#TraceProcess}#GetEnumerator">
+ <summary>
+ Enumerate all the processes that occurred in the trace log, ordered by creation time.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Analysis.TraceProcesses.GetProcess(System.Int32,System.Int64)">
+ <summary>
+ Given an OS process ID and a time, return the last TraceProcess that has the same process ID,
+ and whose offset start time is less than 'timeQPC'. If 'timeQPC' is during the thread's lifetime this
+ is guaranteed to be the correct process. Using timeQPC = TraceLog.sessionEndTimeQPC will return the
+ last process with the given PID, even if it had died.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Analysis.TraceProcesses.#ctor(Microsoft.Diagnostics.Tracing.Analysis.TraceLog,Microsoft.Diagnostics.Tracing.TraceEventDispatcher)">
+ <summary>
+ TraceProcesses represents the entire ETL moduleFile log. At the node level it is organized by threads.
+
+ The TraceProcesses also is where we put various caches that are independent of the process involved.
+ These include a cache for TraceModuleFile that represent native images that can be loaded into a
+ process, as well as the process lookup tables and a cache that remembers the last calls to
+ GetNameForAddress().
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Analysis.TraceProcess">
+ <summary>
+ A step towards a refactored TraceProcess that will move down the dependcy chain from
+ TraceLog to Source. This is only the portion of TraceProcess that is needed for ManagedProcess
+ to exist. Also note, that the surface area is intended to match 100% with
+ Microsoft.Diagnostics.Tracing.Etlx.TraceProcess. The namespace change is intention to avoid
+ collision of the name and to indicate that it is moving down the depdnency chain.
+
+ This is a slightly modified copy of the code from TraceLog!TraceProcess
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.TraceProcess.ProcessID">
+ <summary>
+ The OS process ID associated with the process. It is NOT unique across the whole log. Use
+ ProcessIndex for that.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.TraceProcess.ProcessIndex">
+ <summary>
+ The index into the logical array of TraceProcesses for this process. Unlike ProcessID (which
+ may be reused after the process dies, the process index is unique in the log.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.TraceProcess.Name">
+ <summary>
+ This is a short name for the process. It is the image file name without the path or suffix.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.TraceProcess.CommandLine">
+ <summary>
+ The command line that started the process (may be empty string if unknown)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.TraceProcess.ImageFileName">
+ <summary>
+ The path name of the EXE that started the process (may be empty string if unknown)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.TraceProcess.StartTime">
+ <summary>
+ The time when the process started. Returns the time the trace started if the process existed when the trace started.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.TraceProcess.StartTimeRelativeMsec">
+ <summary>
+ The time when the process started. Returns the time the trace started if the process existed when the trace started.
+ Returned as the number of MSec from the beginning of the trace.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.TraceProcess.EndTime">
+ <summary>
+ The time when the process ended. Returns the time the trace ended if the process existed when the trace ended.
+ Returned as a DateTime
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.TraceProcess.EndTimeRelativeMsec">
+ <summary>
+ The time when the process ended. Returns the time the trace ended if the process existed when the trace ended.
+ Returned as the number of MSec from the beginning of the trace.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.TraceProcess.ParentID">
+ <summary>
+ The process ID of the parent process
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.TraceProcess.Parent">
+ <summary>
+ The process that started this process. Returns null if unknown.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.TraceProcess.ExitStatus">
+ <summary>
+ If the process exited, the exit status of the process. Otherwise null.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.TraceProcess.CPUMSec">
+ <summary>
+ The amount of CPU time spent in this process based on the kernel CPU sampling events.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.TraceProcess.Is64Bit">
+ <summary>
+ Returns true if the process is a 64 bit process
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.TraceProcess.Log">
+ <summary>
+ The log file associated with the process.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.TraceProcess.PeakWorkingSet">
+ <summary>
+ Peak working set
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.TraceProcess.PeakVirtual">
+ <summary>
+ Peak virtual size
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.TraceProcess.Threads">
+ <summary>
+ A list of all the threads that occurred in this process.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.TraceProcess.LoadedModules">
+ <summary>
+ Returns the list of modules that were loaded by the process. The modules may be managed or
+ native, and include native modules that were loaded event before the trace started.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.TraceProcess.EventsInProcess">
+ <summary>
+ Filters events to only those for a particular process.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Analysis.TraceProcess.EventsDuringProcess">
+ <summary>
+ Filters events to only that occurred during the time the process was alive.
+ </summary>
+
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Analysis.TraceProcess.ToString">
+ <summary>
+ An XML representation of the TraceEventProcess (for debugging)
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Analysis.TraceLog">
+ <summary>
+ Dummy stubs so Microsoft.Diagnostics.Tracing.Etlx namespace is not necessary
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Ctf.CtfMetadata">
+ <summary>
+ The parsed metadata.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Ctf.CtfTrace">
+ <summary>
+ Information about the trace itself.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Ctf.CtfStream">
+ <summary>
+ Information about a single stream in the trace.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Ctf.CtfEnvironment">
+ <summary>
+ The environment the trace was taken in.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Ctf.CtfClock">
+ <summary>
+ A clock definition in the trace.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Ctf.CtfEvent">
+ <summary>
+ A definition of an event.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Ctf.CtfMetadataLegacyParser">
+ <summary>
+ A manual parser for CtfMetadata. Eventually this should be replaced when CtfMetadata no longer
+ uses a custom, BNF style format.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Ctf.CtfMetadataParser">
+ <summary>
+ The abstract metadata parser class.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Ctf.CtfDeclarationTypes">
+ <summary>
+ The types that may be declared in CtfMetatdata.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Ctf.CtfMetadataDeclaration">
+ <summary>
+ This class represents the top level entry
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Ctf.CtfPropertyBag">
+ <summary>
+ A simple class to make parsing out properties easier.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Ctf.CtfUnresolvedType">
+ <summary>
+ Represents a type which has been referenced by name, but has not yet been resolved to a concrete type.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventParser">
+ <summary>
+ A DynamicTraceEventParser is a parser that understands how to read the embedded manifests that occur in the
+ dataStream (System.Diagnostics.Tracing.EventSources do this).
+
+ See also TDHDynamicTraceEventParser which knows how to read the manifest that are registered globally with
+ the machine.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventParser.ManifestEventID">
+ <summary>
+ The event ID for the EventSource manifest emission event.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventParser.#ctor(Microsoft.Diagnostics.Tracing.TraceEventSource)">
+ <summary>
+ Create a new DynamicTraceEventParser (which can parse ETW providers that dump their manifests
+ to the ETW data stream) an attach it to the ETW data stream 'source'.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventParser.DynamicProviders">
+ <summary>
+ Returns a list of providers (their manifest) that this TraceParser knows about.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventParser.AddDynamicProvider(Microsoft.Diagnostics.Tracing.Parsers.ProviderManifest,System.Boolean)">
+ <summary>
+ Given a manifest describing the provider add its information to the parser.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventParser.WriteAllManifests(System.String)">
+ <summary>
+ Utility method that stores all the manifests known to the DynamicTraceEventParser to the directory 'directoryPath'
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventParser.ReadAllManifests(System.String)">
+ <summary>
+ Utility method that read all the manifests the directory 'directoryPath' into the parser.
+ Manifests must end in a .man or .manifest.xml suffix. It will throw an error if
+ the manifest is incorrect or using unsupported options.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventParser.IsStatic">
+ <summary>
+ Override.
+ </summary>
+ </member>
+ <member name="E:Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventParser.DynamicProviderAdded">
+ <summary>
+ This event, will be fired any time a new Provider is added to the table
+ of ETW providers known to this DynamicTraceEventParser. This includes
+ when the EventSource manifest events are encountered as well as any
+ explicit calls to AddDynamicProvider. (including ReadAllManifests).
+
+ The Parser will filter out duplicate manifest events, however if an
+ old version of a provider's manifest is encountered, and later a newer
+ version is encountered, you can receive this event more than once for
+ a single provider.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventParser.GetProviderName">
+ <summary>
+ override
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventParser.CheckForDynamicManifest(Microsoft.Diagnostics.Tracing.TraceEvent)">
+ <summary>
+ Called on unhandled events to look for manifests. Returns true if we added a new manifest (which may have updated the lookup table)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventParser.EnumerateTemplates(System.Func{System.String,System.String,Microsoft.Diagnostics.Tracing.EventFilterResponse},System.Action{Microsoft.Diagnostics.Tracing.TraceEvent})">
+ <summary>
+ Override
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData">
+ <summary>
+ DynamicTraceEventData is an event that knows how to take runtime information to parse event fields (and payload)
+
+ This meta-data is distilled down to a array of field names and an array of PayloadFetches which contain enough
+ information to find the field data in the payload blob. This meta-data is used in the
+ DynamicTraceEventData.PayloadNames and DynamicTraceEventData.PayloadValue methods.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData.Dispatch">
+ <summary>
+ Implements TraceEvent interface
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData.PayloadNames">
+ <summary>
+ Implements TraceEvent interface
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData.PayloadValue(System.Int32)">
+ <summary>
+ Implements TraceEvent interface
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData.StructValue">
+ <summary>
+ Used by PayloadValue to represent a structure. It is basically a IDictionary with a ToString() that
+ returns the value as JSON.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData.StructValue.Quote(System.Text.StringBuilder,System.String)">
+ <summary>
+ Uses C style conventions to quote a string 'value' and append to the string builder 'sb'.
+ Thus all \ are turned into \\ and all " into \"
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData.PayloadString(System.Int32,System.IFormatProvider)">
+ <summary>
+ Implements TraceEvent interface
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData.Target">
+ <summary>
+ Implements TraceEvent interface
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData.GetCountForArray(Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData.PayloadFetch,Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData.PayloadFetchArrayInfo,System.Int32@)">
+ <summary>
+ Returns the count of elements for the array represented by 'arrayInfo'
+ It also will adjust 'offset' so that it points at the beginning of the
+ array data (skips past the count).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData.PayloadFetch.#ctor(System.UInt16,System.UInt16,System.Type,System.Collections.Generic.IDictionary{System.Int64,System.String})">
+ <summary>
+ Constructor for normal types, (int, string) ...) Also handles Enums (which are ints with a map)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData.PayloadFetch.#ctor(System.UInt16,Microsoft.Diagnostics.Tracing.Parsers.RegisteredTraceEventParser.TdhInputType,System.Int32)">
+ <summary>
+ Initialized a PayloadFetch for a given inType. REturns Size = DynamicTraceEventData.UNKNOWN_SIZE
+ if the type is unknown.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData.PayloadFetch.ArrayPayloadFetch(System.UInt16,Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData.PayloadFetch,System.UInt16,System.UInt16)">
+ <summary>
+ Returns a payload fetch for a Array. If you know the count, then you can give it.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData.PayloadFetch.Offset">
+ <summary>
+ Offset from the beginning of the struct.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData.PayloadFetch.LazyMap">
+ <summary>
+ LazyMap allow out to set a function that returns a map
+ instead of the map itself. This will be evaluated when the map
+ is fetched (which gives time for the map table to be populated.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.DynamicManifestTraceEventData">
+ <summary>
+ This class is only used to pretty-print the manifest event itself. It is pretty special purpose
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventParserState">
+ <summary>
+ DynamicTraceEventParserState represents the state of a DynamicTraceEventParser that needs to be
+ serialized to a log file. It does NOT include information about what events are chosen but DOES contain
+ any other necessary information that came from the ETL data file.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.ProviderManifest">
+ <summary>
+ A ProviderManifest represents the XML manifest associated with the provider.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.ProviderManifest.#ctor(System.IO.Stream,System.Int32)">
+ <summary>
+ Read a ProviderManifest from a stream
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.ProviderManifest.#ctor(System.String)">
+ <summary>
+ Read a ProviderManifest from a file.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.ProviderManifest.ValidateManifest">
+ <summary>
+ Normally ProviderManifest will fail silently if there is a problem with the manifest. If
+ you want to see this error you can all this method to force it explicitly It will
+ throw if there is a problem parsing the manifest.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.ProviderManifest.WriteToStream(System.IO.Stream)">
+ <summary>
+ Writes the manifest to 'outputStream' (as UTF8 XML text)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.ProviderManifest.WriteToFile(System.String)">
+ <summary>
+ Writes the manifest to a file 'filePath' (as a UTF8 XML)
+ </summary>
+ <param name="filePath"></param>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.ProviderManifest.ISDynamic">
+ <summary>
+ Set if this manifest came from the ETL data stream file.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.ProviderManifest.Name">
+ <summary>
+ The name of the ETW provider
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.ProviderManifest.Guid">
+ <summary>
+ The GUID that uniquey identifies the ETW provider
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.ProviderManifest.Version">
+ <summary>
+ The version is defined as the sum of all the version numbers of event version numbers + the number of events defined.
+ This has the property that if you follow correct versioning protocol (all versions for a linear sequence where a new
+ versions is only modifies is predecessor by adding new events or INCREASING the version numbers of existing events)
+ then the version number defined below will always strictly increase.
+
+ It turns out that .NET Core removed some events from the TplEtwProvider. To allow removal of truly old events
+ we also add 100* the largest event ID defined to the version number. That way if you add new events, even if you
+ removes some (less than 100) it will consider your 'better'.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.ProviderManifest.Id">
+ <summary>
+ This is an arbitrary id given when the Manifest is created that
+ identifies where the manifest came from (e.g. a file name or an event etc).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.ProviderManifest.BetterThan(Microsoft.Diagnostics.Tracing.Parsers.ProviderManifest)">
+ <summary>
+ Returns true if the current manifest is better to use than 'otherManifest' A manifest is
+ better if it has a larger version number OR, they have the same version number and it is
+ physically larger (we assume what happened is people added more properties but did not
+ update the version field appropriately).
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.ProviderManifest.Manifest">
+ <summary>
+ Retrieve manifest as one big string. Mostly for debugging
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.ProviderManifest.ManifestReader">
+ <summary>
+ Retrieve the manifest as XML
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.ProviderManifest.ToString">
+ <summary>
+ For debugging
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.ProviderManifest.ParseProviderEvents(System.Func{Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData,Microsoft.Diagnostics.Tracing.EventFilterResponse},System.Boolean)">
+ <summary>
+ Call 'callback the the parsed templates for this provider. If 'callback' returns RejectProvider, bail early
+ Note that the DynamicTraceEventData passed to the delegate needs to be cloned if you use subscribe to it.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.ProviderManifest.GetTypeForManifestTypeName(System.String)">
+ <summary>
+ Returns the .NET type corresponding to the manifest type 'manifestTypeName'
+ Returns null if it could not be found.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.ProviderManifest.Init">
+ <summary>
+ Initialize the provider. This means to advance the instance variable 'reader' until it it is at the 'provider' node
+ in the XML. It also has the side effect of setting the name and guid. The rest waits until events are registered.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords">
+ <summary>
+ Keywords are passed to TraceEventSession.EnableProvider to enable particular sets of
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords.GC">
+ <summary>
+ Logging when garbage collections and finalization happen.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords.GCHandle">
+ <summary>
+ Events when GC handles are set or destroyed.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords.Loader">
+ <summary>
+ Logging when modules actually get loaded and unloaded.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords.Jit">
+ <summary>
+ Logging when Just in time (JIT) compilation occurs.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords.NGen">
+ <summary>
+ Logging when precompiled native (NGEN) images are loaded.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords.StartEnumeration">
+ <summary>
+ Indicates that on attach or module load , a rundown of all existing methods should be done
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords.StopEnumeration">
+ <summary>
+ Indicates that on detach or process shutdown, a rundown of all existing methods should be done
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords.Security">
+ <summary>
+ Events associated with validating security restrictions.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords.AppDomainResourceManagement">
+ <summary>
+ Events for logging resource consumption on an app-domain level granularity
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords.JitTracing">
+ <summary>
+ Logging of the internal workings of the Just In Time compiler. This is fairly verbose.
+ It details decisions about interesting optimization (like inlining and tail call)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords.Interop">
+ <summary>
+ Log information about code thunks that transition between managed and unmanaged code.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords.Contention">
+ <summary>
+ Log when lock contention occurs. (Monitor.Enters actually blocks)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords.Exception">
+ <summary>
+ Log exception processing.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords.Threading">
+ <summary>
+ Log events associated with the threadpool, and other threading events.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords.JittedMethodILToNativeMap">
+ <summary>
+ Dump the native to IL mapping of any method that is JIT compiled. (V4.5 runtimes and above).
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords.OverrideAndSuppressNGenEvents">
+ <summary>
+ If enabled will suppress the rundown of NGEN events on V4.0 runtime (has no effect on Pre-V4.0 runtimes).
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords.Type">
+ <summary>
+ Enables the 'BulkType' event
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords.GCHeapDump">
+ <summary>
+ Enables the events associated with dumping the GC heap
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords.GCSampledObjectAllocationHigh">
+ <summary>
+ Enables allocation sampling with the 'fast'. Sample to limit to 100 allocations per second per type.
+ This is good for most detailed performance investigations. Note that this DOES update the allocation
+ path to be slower and only works if the process start with this on.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords.GCHeapSurvivalAndMovement">
+ <summary>
+ Enables events associate with object movement or survival with each GC.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords.GCHeapCollect">
+ <summary>
+ Triggers a GC. Can pass a 64 bit value that will be logged with the GC Start event so you know which GC you actually triggered.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords.GCHeapAndTypeNames">
+ <summary>
+ Indicates that you want type names looked up and put into the events (not just meta-data tokens).
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords.GCSampledObjectAllocationLow">
+ <summary>
+ Enables allocation sampling with the 'slow' rate, Sample to limit to 5 allocations per second per type.
+ This is reasonable for monitoring. Note that this DOES update the allocation path to be slower
+ and only works if the process start with this on.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords.GCAllObjectAllocation">
+ <summary>
+ Turns on capturing the stack and type of object allocation made by the .NET Runtime. This is only
+ supported after V4.5.3 (Late 2014) This can be very verbose and you should seriously using GCSampledObjectAllocationHigh
+ instead (and GCSampledObjectAllocationLow for production scenarios).
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords.SupressNGen">
+ <summary>
+ This suppresses NGEN events on V4.0 (where you have NGEN PDBs), but not on V2.0 (which does not know about this
+ bit and also does not have NGEN PDBS).
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords.PerfTrack">
+ <summary>
+ TODO document
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords.Stack">
+ <summary>
+ Also log the stack trace of events for which this is valuable.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords.ThreadTransfer">
+ <summary>
+ This allows tracing work item transfer events (thread pool enqueue/dequeue/ioenqueue/iodequeue/a.o.)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords.Debugger">
+ <summary>
+ .NET Debugger events
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords.Monitoring">
+ <summary>
+ Events intended for monitoring on an ongoing basis.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords.Codesymbols">
+ <summary>
+ Events that will dump PDBs of dynamically generated assemblies to the ETW stream.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords.Default">
+ <summary>
+ Recommend default flags (good compromise on verbosity).
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords.JITSymbols">
+ <summary>
+ What is needed to get symbols for JIT compiled code.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.Keywords.GCHeapSnapshot">
+ <summary>
+ This provides the flags commonly needed to take a heap .NET Heap snapshot with ETW.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser.State">
+ <summary>
+ Fetch the state object associated with this parser and cast it to
+ the ClrTraceEventParserState type. This state object contains any
+ informtion that you need from one event to another to decode events.
+ (typically ID->Name tables).
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCHeapStatsTraceData.Depth">
+ <summary>
+ Note that this field is derived from teh TotalPromotedSize* fields. If nothing was promoted, it is possible
+ that this could give a number that is smaller than what GC/Start or GC/Stop would indicate.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCBulkTypeTraceData.Values(System.Int32)">
+ <summary>
+ Returns the edge at the given zero-based index (index less than Count). The returned BulkTypeValues
+ points the the data in GCBulkRootEdgeTraceData so it cannot live beyond that lifetime.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCBulkTypeValues">
+ <summary>
+ This structure just POINTS at the data in the BulkTypeTraceData. It can only be used as long as
+ the BulkTypeTraceData is alive which (unless you cloned it) is only for the lifetime of the callback.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCBulkTypeValues.TypeID">
+ <summary>
+ On the desktop this is the Method Table Pointer
+ In project N this is the pointer to the EE Type
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCBulkTypeValues.ModuleID">
+ <summary>
+ For Desktop this is the Module*
+ For project N it is image base for the module that the type lives in?
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCBulkTypeValues.TypeNameID">
+ <summary>
+ On desktop this is the Meta-data token?
+ On project N it is the RVA of the typeID
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCBulkTypeValues.TypeName">
+ <summary>
+ Note that this method returns the type name with generic parameters in .NET Runtime
+ syntax e.g. System.WeakReference`1[System.Diagnostics.Tracing.EtwSession]
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCBulkRootEdgeTraceData.Values(System.Int32)">
+ <summary>
+ Returns the edge at the given zero-based index (index less than Count). The returned GCBulkRootEdgeValues
+ points the the data in GCBulkRootEdgeTraceData so it cannot live beyond that lifetime.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCBulkRootEdgeValues">
+ <summary>
+ This structure just POINTS at the data in the GCBulkEdgeTraceData. It can only be used as long as
+ the GCBulkEdgeTraceData is alive which (unless you cloned it) is only for the lifetime of the callback.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCBulkRootConditionalWeakTableElementEdgeTraceData.Values(System.Int32)">
+ <summary>
+ Returns the range at the given zero-based index (index less than Count). The returned GCBulkRootConditionalWeakTableElementEdgeValues
+ points the the data in GCBulkRootConditionalWeakTableElementEdgeTraceData so it cannot live beyond that lifetime.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCBulkRootConditionalWeakTableElementEdgeValues">
+ <summary>
+ This structure just POINTS at the data in the GCBulkRootConditionalWeakTableElementEdgeTraceData. It can only be used as long as
+ the GCBulkRootConditionalWeakTableElementEdgeTraceData is alive which (unless you cloned it) is only for the lifetime of the callback.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCBulkNodeTraceData.Values(System.Int32)">
+ <summary>
+ Returns the node at the given zero-based index (idx less than Count). The returned GCBulkNodeNodes
+ points the the data in GCBulkNodeTraceData so it cannot live beyond that lifetime.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCBulkNodeTraceData.UnsafeNodes(System.Int32,Microsoft.Diagnostics.Tracing.Parsers.Clr.GCBulkNodeUnsafeNodes*)">
+ <summary>
+ This unsafe interface may go away. Use the 'Nodes(idx)' instead
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCBulkNodeValues">
+ <summary>
+ This structure just POINTS at the data in the GCBulkNodeTraceData. It can only be used as long as
+ the GCBulkNodeTraceData is alive which (unless you cloned it) is only for the lifetime of the callback.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCBulkEdgeTraceData.Values(System.Int32)">
+ <summary>
+ Returns the 'idx' th edge.
+ The returned GCBulkEdgeEdges cannot live beyond the TraceEvent that it comes from.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCBulkEdgeValues">
+ <summary>
+ This structure just POINTS at the data in the GCBulkNodeTraceData. It can only be used as long as
+ the GCBulkNodeTraceData is alive which (unless you cloned it) is only for the lifetime of the callback.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCBulkSurvivingObjectRangesTraceData.Values(System.Int32)">
+ <summary>
+ Returns the range at the given zero-based index (index less than Count). The returned GCBulkSurvivingObjectRangesValues
+ points the the data in GCBulkSurvivingObjectRangesTraceData so it cannot live beyond that lifetime.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCBulkSurvivingObjectRangesValues">
+ <summary>
+ This structure just POINTS at the data in the GCBulkEdgeTraceData. It can only be used as long as
+ the GCBulkEdgeTraceData is alive which (unless you cloned it) is only for the lifetime of the callback.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCBulkMovedObjectRangesTraceData.Values(System.Int32)">
+ <summary>
+ Returns the range at the given zero-based index (index less than Count). The returned GCBulkSurvivingObjectRangesValues
+ points the the data in GCBulkSurvivingObjectRangesTraceData so it cannot live beyond that lifetime.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCBulkMovedObjectRangesValues">
+ <summary>
+ This structure just POINTS at the data in the GCBulkEdgeTraceData. It can only be used as long as
+ the GCBulkEdgeTraceData is alive which (unless you cloned it) is only for the lifetime of the callback.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.Clr.Gens">
+ <summary>
+ We keep Heap history for every Generation in 'Gens'
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.Clr.gc_heap_expand_mechanism">
+ <summary>
+ Taken from gcrecords.h, used to differentiate heap expansion and compaction reasons
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCPerHeapHistoryTraceData">
+ <summary>
+ Version 0, PreciseVersion 0.1: Silverlight (x86)
+ 0:041> dt -r2 coreclr!WKS::gc_history_per_heap
+ +0x000 gen_data : [5] WKS::gc_generation_data
+ +0x000 size_before : Uint4B/8B : [0 - 40), [40 - 80), [80 - 120), [120 - 160), [160 - 200)
+ +0x004 size_after : Uint4B/8B
+ +0x008 current_size : Uint4B/8B
+ +0x00c previous_size : Uint4B/8B
+ +0x010 fragmentation : Uint4B/8B
+ +0x014 in : Uint4B/8B
+ +0x018 out : Uint4B/8B
+ +0x01c new_allocation : Uint4B/8B
+ +0x020 surv : Uint4B/8B
+ +0x024 growth : Uint4B/8B
+ +0x0c8 mem_pressure : Uint4B : 200
+ +0x0cc mechanisms : [2] Uint4B : 204 (expand), 208 (compact)
+ +0x0d4 gen_condemn_reasons : Uint4B : 212
+ +0x0d8 heap_index : Uint4B : 216
+
+ clrInstanceId : byte : 220
+
+ Version 0, PreciseVersion 0.2: .NET 4.0
+ 0:000> dt -r2 clr!WKS::gc_history_per_heap
+ +0x000 gen_data : [5] WKS::gc_generation_data
+ +0x000 size_before : Uint4B/8B : [0 - 40), [40 - 80), [80 - 120), [120 - 160), [160 - 200)
+ +0x004 size_after : Uint4B/8B
+ +0x008 current_size : Uint4B/8B
+ +0x00c previous_size : Uint4B/8B
+ +0x010 fragmentation : Uint4B/8B
+ +0x014 in : Uint4B/8B
+ +0x018 out : Uint4B/8B
+ +0x01c new_allocation : Uint4B/8B
+ +0x020 surv : Uint4B/8B
+ +0x024 growth : Uint4B/8B
+ +0x0c8 mem_pressure : Uint4B : 200
+ +0x0cc mechanisms : [3] Uint4B : 204 (expand), 208 (compact), 212 (concurrent_compact)
+ +0x0d8 gen_condemn_reasons : Uint4B : 216
+ +0x0dc heap_index : Uint4B : 220
+
+ clrInstanceId : byte : 224
+
+ vm\gcrecord.h
+ Etw_GCDataPerHeapSpecial(...)
+ ...
+ EventDataDescCreate(EventData[0], gc_data_per_heap, datasize);
+ EventDataDescCreate(EventData[1], ClrInstanceId, sizeof(ClrInstanceId));
+
+ Version 1: ???
+
+ Version 2, PreciseVersion 2.1: .NET 4.5 (x86)
+ 0:000> dt -r2 WKS::gc_history_per_heap
+ clr!WKS::gc_history_per_heap
+ +0x000 gen_data : [5] WKS::gc_generation_data
+ +0x000 size_before : Uint4B/8B : [0 - 40), [40 - 80), [80 - 120), [120 - 160), [160 - 200)
+ +0x004 free_list_space_before : Uint4B/8B
+ +0x008 free_obj_space_before : Uint4B/8B
+ +0x00c size_after : Uint4B/8B
+ +0x010 free_list_space_after : Uint4B/8B
+ +0x014 free_obj_space_after : Uint4B/8B
+ +0x018 in : Uint4B/8B
+ +0x01c out : Uint4B/8B
+ +0x020 new_allocation : Uint4B/8B
+ +0x024 surv : Uint4B/8B
+ +0x0c8 gen_to_condemn_reasons : WKS::gen_to_condemn_tuning
+ +0x000 condemn_reasons_gen : Uint4B : 200
+ +0x004 condemn_reasons_condition : Uint4B : 204
+ +0x0d0 mem_pressure : Uint4B : 208
+ +0x0d4 mechanisms : [2] Uint4B : 212 (expand), 216 (compact)
+ +0x0dc heap_index : Uint4B : 220
+
+ vm\gcrecord.h
+ Etw_GCDataPerHeapSpecial(...)
+ ...
+ EventDataDescCreate(EventData[0], gc_data_per_heap, datasize);
+ EventDataDescCreate(EventData[1], ClrInstanceId, sizeof(ClrInstanceId));
+
+ Version 2, PreciseVersion 2.2: .NET 4.5.2 (x86)
+ 0:000> dt -r2 WKS::gc_history_per_heap
+ clr!WKS::gc_history_per_heap
+ +0x000 gen_data : [5] WKS::gc_generation_data
+ +0x000 size_before : Uint4B/8B : [0 - 40), [40 - 80), [80 - 120), [120 - 160), [160 - 200)
+ +0x004 free_list_space_before : Uint4B/8B
+ +0x008 free_obj_space_before : Uint4B/8B
+ +0x00c size_after : Uint4B/8B
+ +0x010 free_list_space_after : Uint4B/8B
+ +0x014 free_obj_space_after : Uint4B/8B
+ +0x018 in : Uint4B/8B
+ +0x01c out : Uint4B/8B
+ +0x020 new_allocation : Uint4B/8B
+ +0x024 surv : Uint4B/8B
+ +0x0c8 gen_to_condemn_reasons : WKS::gen_to_condemn_tuning
+ +0x000 condemn_reasons_gen : Uint4B : 200
+ +0x004 condemn_reasons_condition : Uint4B : 204
+ +0x0d0 mem_pressure : Uint4B : 208
+ +0x0d4 mechanisms : [2] Uint4B : 212 (expand), 216 (compact)
+ +0x0dc heap_index : Uint4B : 220
+ +0x0e0 extra_gen0_committed : Uint8B : 224
+
+ vm\gcrecord.h
+ Etw_GCDataPerHeapSpecial(...)
+ ...
+ EventDataDescCreate(EventData[0], gc_data_per_heap, datasize);
+ EventDataDescCreate(EventData[1], ClrInstanceId, sizeof(ClrInstanceId));
+
+ Version 3: .NET 4.6 (x86)
+ 0:000> dt -r2 WKS::gc_history_per_heap
+ clr!WKS::gc_history_per_heap
+ +0x000 gen_data : [4]
+ WKS::gc_generation_data
+ +0x000 size_before : Uint4B/8B
+ +0x004 free_list_space_before : Uint4B/8B
+ +0x008 free_obj_space_before : Uint4B/8B
+ +0x00c size_after : Uint4B/8B
+ +0x010 free_list_space_after : Uint4B/8B
+ +0x014 free_obj_space_after : Uint4B/8B
+ +0x018 in : Uint4B/8B
+ +0x01c pinned_surv : Uint4B/8B
+ +0x020 npinned_surv : Uint4B/8B
+ +0x024 new_allocation : Uint4B/8B
+ +0x0a0 maxgen_size_info : WKS::maxgen_size_increase
+ +0x000 free_list_allocated : Uint4B/8B
+ +0x004 free_list_rejected : Uint4B/8B
+ +0x008 end_seg_allocated : Uint4B/8B
+ +0x00c condemned_allocated : Uint4B/8B
+ +0x010 pinned_allocated : Uint4B/8B
+ +0x014 pinned_allocated_advance : Uint4B/8B
+ +0x018 running_free_list_efficiency : Uint4B/8B
+ +0x0bc gen_to_condemn_reasons : WKS::gen_to_condemn_tuning
+ +0x000 condemn_reasons_gen : Uint4B
+ +0x004 condemn_reasons_condition : Uint4B
+ +0x0c4 mechanisms : [2] Uint4B
+ +0x0cc machanism_bits : Uint4B
+ +0x0d0 heap_index : Uint4B
+ +0x0d4 extra_gen0_committed : Uint4B/8B
+
+ pal\src\eventprovider\lttng\eventprovdotnetruntime.cpp
+ FireEtXplatGCPerHeapHistory_V3(...)
+
+ tracepoint(
+ DotNETRuntime,
+ GCPerHeapHistory_V3, x86 offsets
+ ClrInstanceID, : 0
+ (const size_t) FreeListAllocated, : 2
+ (const size_t) FreeListRejected, : 6
+ (const size_t) EndOfSegAllocated, : 10
+ (const size_t) CondemnedAllocated, : 14
+ (const size_t) PinnedAllocated, : 18
+ (const size_t) PinnedAllocatedAdvance, : 22
+ RunningFreeListEfficiency, : 26
+ CondemnReasons0, : 30
+ CondemnReasons1 : 34
+ );
+ tracepoint(
+ DotNETRuntime,
+ GCPerHeapHistory_V3_1,
+ CompactMechanisms, : 38
+ ExpandMechanisms, : 42
+ HeapIndex, : 46
+ (const size_t) ExtraGen0Commit, : 50
+ Count, : 54 (number of WKS::gc_generation_data's)
+ Arg15_Struct_Len_, : ?? not really sent
+ (const int*) Arg15_Struct_Pointer_ : [58 - 98), ...
+ );
+
+ Version 3 is now setup to allow "add to the end" scenarios
+
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCPerHeapHistoryTraceData.CondemnReasons0">
+ <summary>
+ Returns the condemned generation number
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCPerHeapHistoryTraceData.CondemnReasons1">
+ <summary>
+ Returns the condemned condition
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCPerHeapHistoryTraceData.GenData(Microsoft.Diagnostics.Tracing.Parsers.Clr.Gens)">
+ <summary>
+ genNumber is a number from 0 to maxGenData-1. These are for generation 0, 1, 2, 3 = Large Object Heap
+ genNumber = 4 is that second pass for Gen 0.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCPerHeapHistoryGenData">
+ <summary>
+ Version 0: Silverlight (x86), .NET 4.0
+ [5] WKS::gc_generation_data
+ +0x000 size_before : Uint4B/8B
+ +0x004 size_after : Uint4B/8B
+ +0x008 current_size : Uint4B/8B
+ +0x00c previous_size : Uint4B/8B
+ +0x010 fragmentation : Uint4B/8B
+ +0x014 in : Uint4B/8B
+ +0x018 out : Uint4B/8B
+ +0x01c new_allocation : Uint4B/8B
+ +0x020 surv : Uint4B/8B
+ +0x024 growth : Uint4B/8B
+
+ Version 1: ???
+
+ Version 2, PreciseVersion 2.1: .NET 4.5 (x86), .NET 4.5.2 (x86)
+ [5] WKS::gc_generation_data
+ +0x000 size_before : Uint4B/8B
+ +0x004 free_list_space_before : Uint4B/8B
+ +0x008 free_obj_space_before : Uint4B/8B
+ +0x00c size_after : Uint4B/8B
+ +0x010 free_list_space_after : Uint4B/8B
+ +0x014 free_obj_space_after : Uint4B/8B
+ +0x018 in : Uint4B/8B
+ +0x01c out : Uint4B/8B
+ +0x020 new_allocation : Uint4B/8B
+ +0x024 surv : Uint4B/8B
+
+ Version 3: .NET 4.6 (x86)
+ [4] WKS::gc_generation_data
+ +0x000 size_before : Uint4B/8B
+ +0x004 free_list_space_before : Uint4B/8B
+ +0x008 free_obj_space_before : Uint4B/8B
+ +0x00c size_after : Uint4B/8B
+ +0x010 free_list_space_after : Uint4B/8B
+ +0x014 free_obj_space_after : Uint4B/8B
+ +0x018 in : Uint4B/8B
+ +0x01c pinned_surv : Uint4B/8B
+ +0x020 npinned_surv : Uint4B/8B
+ +0x024 new_allocation : Uint4B/8B
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCPerHeapHistoryGenData.SizeBefore">
+ <summary>
+ Size of the generation before the GC, includes fragmentation
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCPerHeapHistoryGenData.SizeAfter">
+ <summary>
+ Size of the generation after GC. Includes fragmentation
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCPerHeapHistoryGenData.ObjSpaceBefore">
+ <summary>
+ Size occupied by objects at the beginning of the GC, discounting fragmentation.
+ Only exits on 4.5 RC and beyond.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCPerHeapHistoryGenData.Fragmentation">
+ <summary>
+ This is the fragmenation at the end of the GC.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCPerHeapHistoryGenData.ObjSizeAfter">
+ <summary>
+ Size occupied by objects, discounting fragmentation.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCPerHeapHistoryGenData.FreeListSpaceBefore">
+ <summary>
+ This is the free list space (ie, what's threaded onto the free list) at the beginning of the GC.
+ Only exits on 4.5 RC and beyond.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCPerHeapHistoryGenData.FreeObjSpaceBefore">
+ <summary>
+ This is the free obj space (ie, what's free but not threaded onto the free list) at the beginning of the GC.
+ Only exits on 4.5 RC and beyond.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCPerHeapHistoryGenData.FreeListSpaceAfter">
+ <summary>
+ This is the free list space (ie, what's threaded onto the free list) at the end of the GC.
+ Only exits on 4.5 Beta and beyond.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCPerHeapHistoryGenData.FreeObjSpaceAfter">
+ <summary>
+ This is the free obj space (ie, what's free but not threaded onto the free list) at the end of the GC.
+ Only exits on 4.5 Beta and beyond.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCPerHeapHistoryGenData.In">
+ <summary>
+ This is the amount that came into this generation on this GC
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCPerHeapHistoryGenData.Out">
+ <summary>
+ This is the number of bytes survived in this generation.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCPerHeapHistoryGenData.Budget">
+ <summary>
+ This is the new budget for the generation
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCPerHeapHistoryGenData.SurvRate">
+ <summary>
+ This is the survival rate
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCGlobalHeapHistoryTraceData">
+ <summary>
+ Version 0: ???
+
+ Version 1: Silverlight (x86), .NET 4.0, .NET 4.5, .NET 4.5.2
+ VM\gc.cpp
+ 0:041> dt -r3 WKS::gc_history_global
+ coreclr!WKS::gc_history_global
+ +0x000 final_youngest_desired : Uint4B/8B
+ +0x004 num_heaps : Uint4B
+ +0x008 condemned_generation : Int4B
+ +0x00c gen0_reduction_count : Int4B
+ +0x010 reason :
+ reason_alloc_soh = 0n0
+ reason_induced = 0n1
+ reason_lowmemory = 0n2
+ reason_empty = 0n3
+ reason_alloc_loh = 0n4
+ reason_oos_soh = 0n5
+ reason_oos_loh = 0n6
+ reason_induced_noforce = 0n7
+ reason_gcstress = 0n8
+ reason_max = 0n9
+ +0x014 global_mechanims_p : Uint4B
+
+ FireEtwGCGlobalHeapHistory_V1(gc_data_global.final_youngest_desired, // upcast on 32bit to __int64
+ gc_data_global.num_heaps,
+ gc_data_global.condemned_generation,
+ gc_data_global.gen0_reduction_count,
+ gc_data_global.reason,
+ gc_data_global.global_mechanims_p,
+ GetClrInstanceId());
+ Version 2: .NET 4.6
+ clr!WKS::gc_history_global
+ +0x000 final_youngest_desired : Uint4B/8B
+ +0x004 num_heaps : Uint4B
+ +0x008 condemned_generation : Int4B
+ +0x00c gen0_reduction_count : Int4B
+ +0x010 reason :
+ reason_alloc_soh = 0n0
+ reason_induced = 0n1
+ reason_lowmemory = 0n2
+ reason_empty = 0n3
+ reason_alloc_loh = 0n4
+ reason_oos_soh = 0n5
+ reason_oos_loh = 0n6
+ reason_induced_noforce = 0n7
+ reason_gcstress = 0n8
+ reason_lowmemory_blocking = 0n9
+ reason_induced_compacting = 0n10
+ reason_lowmemory_host = 0n11
+ reason_max = 0n12
+ +0x014 pause_mode : Int4B
+ +0x018 mem_pressure : Uint4B
+ +0x01c global_mechanims_p : Uint4B
+
+ FireEtwGCGlobalHeapHistory_V2(gc_data_global.final_youngest_desired, // upcast on 32bit to __int64
+ gc_data_global.num_heaps,
+ gc_data_global.condemned_generation,
+ gc_data_global.gen0_reduction_count,
+ gc_data_global.reason,
+ gc_data_global.global_mechanims_p,
+ GetClrInstanceId());
+ gc_data_global.pause_mode,
+ gc_data_global.mem_pressure);
+
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Clr.FinalizeObjectTraceData.TypeName">
+ <summary>
+ Gets the full type name including generic parameters in runtime syntax
+ For example System.WeakReference`1[System.Diagnostics.Tracing.EtwSession]
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCBulkRootCCWTraceData.Values(System.Int32)">
+ <summary>
+ Returns the CCW at the given zero-based index (index less than Count). The returned GCBulkRootCCWValues
+ points the the data in GCBulkRootCCWTraceData so it cannot live beyond that lifetime.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCBulkRootCCWTraceData.ValueSize">
+ <summary>
+ Computes the size of one GCBulkRootCCWValues structure.
+ TODO FIX NOW Can rip out and make a constant 44 after 6/2014
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCBulkRootCCWValues">
+ <summary>
+ This structure just POINTS at the data in the GCBulkRootCCWTraceData. It can only be used as long as
+ the GCBulkRootCCWTraceData is alive which (unless you cloned it) is only for the lifetime of the callback.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCBulkRCWTraceData.Values(System.Int32)">
+ <summary>
+ Returns the edge at the given zero-based index (index less than Count). The returned GCBulkRCWValues
+ points the the data in GCBulkRCWTraceData so it cannot live beyond that lifetime.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCBulkRCWValues">
+ <summary>
+ This structure just POINTS at the data in the GCBulkRCWTraceData. It can only be used as long as
+ the GCBulkRCWTraceData is alive which (unless you cloned it) is only for the lifetime of the callback.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCBulkRootStaticVarTraceData.Values(System.Int32)">
+ <summary>
+ Returns 'idx'th static root.
+ The returned GCBulkRootStaticVarStatics cannot live beyond the TraceEvent that it comes from.
+ The implementation is highly tuned for sequential access.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.Clr.GCBulkRootStaticVarValues">
+ <summary>
+ This structure just POINTS at the data in the GCBulkRootStaticVarTraceData. It can only be used as long as
+ the GCBulkRootStaticVarTraceData is alive which (unless you cloned it) is only for the lifetime of the callback.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.Clr.ClrStackWalkTraceData.InstructionPointer(System.Int32)">
+ <summary>
+ Fetches the instruction pointer of a eventToStack frame 0 is the deepest frame, and the maximum should
+ be a thread offset routine (if you get a complete eventToStack).
+ </summary>
+ <param name="index">The index of the frame to fetch. 0 is the CPU EIP, 1 is the Caller of that
+ routine ...</param>
+ <returns>The instruction pointer of the specified frame.</returns>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Clr.ClrStackWalkTraceData.InstructionPointers">
+ <summary>
+ Access to the instruction pointers as a unsafe memory blob
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Clr.ModuleLoadUnloadTraceData.ModuleILFileName">
+ <summary>
+ This is simply the file name part of the ModuleILPath. It is a convenience method.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.Clr.ClrRundownTraceEventParser.Keywords.Threading">
+ <summary>
+ Log events associated with the threadpool, and other threading events.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.Clr.ClrRundownTraceEventParser.Keywords.JittedMethodILToNativeMap">
+ <summary>
+ Dump the native to IL mapping of any method that is JIT compiled. (V4.5 runtimes and above).
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.Clr.ClrRundownTraceEventParser.Keywords.SupressNGen">
+ <summary>
+ This supresses NGEN events on V4.0 (where you have NGEN PDBs), but not on V2.0 (which does not know about this
+ bit and also does not have NGEN PDBS).
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.Clr.ClrRundownTraceEventParser.Keywords.PerfTrack">
+ <summary>
+ TODO document
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.Clr.ClrRundownTraceEventParser.Keywords.CodeSymbolsRundown">
+ <summary>
+ Dump PDBs for dynamically generated modules.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.Clr.ClrTraceEventParserState">
+ <summary>
+ ClrTraceEventParserState holds all information that is shared among all events that is
+ needed to decode Clr events. This class is registered with the source so that it will be
+ persisted. Things in here include
+
+ * TypeID to TypeName mapping,
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.JSDumpHeap.BulkNodeTraceData.Values(System.Int32)">
+ <summary>
+ Returns the edge at the given zero-based index (index less than Count). The returned BulkNodeValues
+ points the the data in BulkNodeTraceData so it cannot live beyond that lifetime.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.JSDumpHeap.BulkNodeValues">
+ <summary>
+ This structure just POINTS at the data in the BulkNodeTraceData. It can only be used as long as
+ the BulkNodeTraceData is alive which (unless you cloned it) is only for the lifetime of the callback.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.JSDumpHeap.BulkAttributeTraceData.Values(System.Int32)">
+ <summary>
+ Returns the edge at the given zero-based index (index less than Count). The returned BulkAttributeValues
+ points the the data in BulkAttributeTraceData so it cannot live beyond that lifetime.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.JSDumpHeap.BulkAttributeValues">
+ <summary>
+ This structure just POINTS at the data in the BulkAttributeTraceData. It can only be used as long as
+ the BulkAttributeTraceData is alive which (unless you cloned it) is only for the lifetime of the callback.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.JSDumpHeap.BulkEdgeTraceData.Values(System.Int32)">
+ <summary>
+ Returns the edge at the given zero-based index (index less than Count). The returned BulkEdgeValues
+ points the the data in BulkEdgeTraceData so it cannot live beyond that lifetime.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.JSDumpHeap.BulkEdgeValues">
+ <summary>
+ This structure just POINTS at the data in the BulkNodeTraceData. It can only be used as long as
+ the BulkNodeTraceData is alive which (unless you cloned it) is only for the lifetime of the callback.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser">
+ <summary>
+ The KernelTraceEventParser is a class that knows how to decode the 'standard' kernel events.
+ It exposes an event for each event of interest that users can subscribe to.
+
+ see TraceEventParser for more
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.KernelSessionName">
+ <summary>
+ The special name for the Kernel session
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords">
+ <summary>
+ This is passed to TraceEventSession.EnableKernelProvider to enable particular sets of
+ events. See http://msdn.microsoft.com/en-us/library/aa363784(VS.85).aspx for more information on them
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.None">
+ <summary>
+ Logs nothing
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.DiskFileIO">
+ <summary>
+ Logs the mapping of file IDs to actual (kernel) file names.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.DiskIO">
+ <summary>
+ Loads the completion of Physical disk activity.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.ImageLoad">
+ <summary>
+ Logs native modules loads (LoadLibrary), and unloads
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.MemoryHardFaults">
+ <summary>
+ Logs all page faults that must fetch the data from the disk (hard faults)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.NetworkTCPIP">
+ <summary>
+ Logs TCP/IP network send and receive events.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.Process">
+ <summary>
+ Logs process starts and stops.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.ProcessCounters">
+ <summary>
+ Logs process performance counters (TODO When?) (Vista+ only)
+ see KernelTraceEventParser.ProcessPerfCtr, ProcessPerfCtrTraceData
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.Profile">
+ <summary>
+ Sampled based profiling (every msec) (Vista+ only) (expect 1K events per proc per second)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.Thread">
+ <summary>
+ Logs threads starts and stops
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.ContextSwitch">
+ <summary>
+ log thread context switches (Vista only) (can be > 10K events per second)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.DiskIOInit">
+ <summary>
+ log Disk operations (Vista+ only)
+ Generally not TOO volumous (typically less than 1K per second) (Stacks associated with this)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.Dispatcher">
+ <summary>
+ Thread Dispatcher (ReadyThread) (Vista+ only) (can be > 10K events per second)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.FileIO">
+ <summary>
+ log file FileOperationEnd (has status code) when they complete (even ones that do not actually
+ cause Disk I/O). (Vista+ only)
+ Generally not TOO volumous (typically less than 1K per second) (No stacks associated with these)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.FileIOInit">
+ <summary>
+ log the start of the File I/O operation as well as the end. (Vista+ only)
+ Generally not TOO volumous (typically less than 1K per second)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.Memory">
+ <summary>
+ Logs all page faults (hard or soft)
+ Can be pretty volumous (> 1K per second)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.Registry">
+ <summary>
+ Logs activity to the windows registry.
+ Can be pretty volumous (> 1K per second)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.SystemCall">
+ <summary>
+ log calls to the OS (Vista+ only)
+ This is VERY volumous (can be > 100K events per second)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.VirtualAlloc">
+ <summary>
+ Log Virtual Alloc calls and VirtualFree. (Vista+ Only)
+ Generally not TOO volumous (typically less than 1K per second)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.VAMap">
+ <summary>
+ Log mapping of files into memmory (Win8 and above Only)
+ Generally low volume.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.AdvancedLocalProcedureCalls">
+ <summary>
+ Logs Advanced Local Procedure call events.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.DeferedProcedureCalls">
+ <summary>
+ log defered procedure calls (an Kernel mechanism for having work done asynchronously) (Vista+ only)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.Driver">
+ <summary>
+ Device Driver logging (Vista+ only)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.Interrupt">
+ <summary>
+ log hardware interrupts. (Vista+ only)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.SplitIO">
+ <summary>
+ Disk I/O that was split (eg because of mirroring requirements) (Vista+ only)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.Default">
+ <summary>
+ Good default kernel flags. (TODO more detail)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.Verbose">
+ <summary>
+ These events are too verbose for normal use, but this give you a quick way of turing on 'interesting' events
+ This does not include SystemCall because it is 'too verbose'
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.ThreadTime">
+ <summary>
+ Use this if you care about blocked time.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.OS">
+ <summary>
+ You mostly don't care about these unless you are dealing with OS internals.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.All">
+ <summary>
+ All legal kernel events
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.NonContainer">
+ <summary>
+ These are the kernel events that are not allowed in containers. Can be subtracted out.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.PMCProfile">
+ <summary>
+ Turn on PMC (Precise Machine Counter) events. Only Win 8
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.ReferenceSet">
+ <summary>
+ Kernel reference set events (like XPERF ReferenceSet). Fully works only on Win 8.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.ThreadPriority">
+ <summary>
+ Events when thread priorities change.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.IOQueue">
+ <summary>
+ Events when queuing and dequeuing from the I/O completion ports.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords.Handle">
+ <summary>
+ Handle creation and closing (for handle leaks)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.NonOSKeywords">
+ <summary>
+ These keywords can't be passed to the OS, they are defined by KernelTraceEventParser
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.ParserTrackingOptions">
+ <summary>
+ What his parser should track by default.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.KernelPathToUserPathMapper">
+ <summary>
+ Defines how kernel paths are converted to user paths. Setting it overrides the default path conversion mechanism.
+ </summary>
+ </member>
+ <member name="E:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.ProcessStartGroup">
+ <summary>
+ Registers both ProcessStart and ProcessDCStart
+ </summary>
+ </member>
+ <member name="E:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.ProcessEndGroup">
+ <summary>
+ Registers both ProcessEnd and ProcessDCStop
+ </summary>
+ </member>
+ <member name="E:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.ThreadStartGroup">
+ <summary>
+ Registers both ThreadStart and ThreadDCStart
+ </summary>
+ </member>
+ <member name="E:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.ThreadEndGroup">
+ <summary>
+ Registers both ThreadEnd and ThreadDCStop
+ </summary>
+ </member>
+ <member name="E:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.ImageLoadGroup">
+ <summary>
+ Registers both ImageLoad and ImageDCStart
+ </summary>
+ </member>
+ <member name="E:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.ImageUnloadGroup">
+ <summary>
+ Registers both ImageUnload and ImageDCStop
+ </summary>
+ </member>
+ <member name="E:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.MemoryMemInfo">
+ <summary>
+ Rasied every 0.5s with memory metrics of the current machine.
+ </summary>
+ </member>
+ <member name="E:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.SysConfigVolumeMapping">
+ <summary>
+ File names in ETW are the Kernel names, which need to be mapped to the drive specification users see.
+ This event indicates this mapping.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParserState">
+ <summary>
+ KernelTraceEventParserState holds all information that is shared among all events that is
+ needed to decode kernel events. This class is registered with the source so that it will be
+ persisted. Things in here include
+
+ * FileID to FileName mapping,
+ * ThreadID to ProcessID mapping
+ * Kernel file name to user file name mapping
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParserState.FileIDToName(System.UInt64,System.UInt64,System.Int64)">
+ <summary>
+ If you have a file object (per-open-file) in addition to a fileKey, try using both
+ to look up the file name.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParserState.threadIDtoProcessIDRundown">
+ <summary>
+ This is for the circular buffer case. In that case we may not have thread starts (and thus we don't
+ have entries in threadIDtoProcessID). Because HistoryTable finds the FIRST entry GREATER than the
+ given threadID we NEGATE all times before we place it in this table.
+
+ Also, because circular buffering is not the common case, we only add entries to this table if needed
+ (if we could not find the thread ID using threadIDtoProcessID).
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.KernelToUserDriveMapping">
+ <summary>
+ Keeps track of the mapping from kernel names to file system names (drives)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.KernelToUserDriveMapping.#ctor">
+ <summary>
+ Create a new KernelToUserDriveMapping that can look up kernel names for drives and map them to windows drive letters.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.KernelToUserDriveMapping.Item(System.String)">
+ <summary>
+ Returns the string representing the windows drive letter for the kernel drive name 'kernelName'
+ </summary>
+ <param name="kernelName"></param>
+ <returns></returns>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Kernel.EventTraceHeaderTraceData.UTCOffsetMinutes">
+ <summary>
+ This is the number of minutes between the local time where the data was collected and UTC time.
+ It does NOT take Daylight savings time into account.
+ It is positive if your time zone is WEST of Greenwich.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.Kernel.ThreadTraceData.LogCodeAddresses(System.Func{Microsoft.Diagnostics.Tracing.TraceEvent,System.UInt64,System.Boolean})">
+ <summary>
+ Indicate that StartAddr and Win32StartAddr are a code addresses that needs symbolic information
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Kernel.CSwitchTraceData.NewThreadID">
+ <summary>
+ We report a context switch from from the new thread. Thus NewThreadID == ThreadID.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Kernel.DiskIOTraceData.Irp">
+ <summary>
+ The I/O Response Packet address. This represents the 'identity' of this particular I/O
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Kernel.DiskIOTraceData.HighResResponseTime">
+ <summary>
+ This is the time since the I/O was initiated, in source.PerfFreq (QPC) ticks.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Kernel.DiskIOTraceData.DiskServiceTimeMSec">
+ <summary>
+ This is the actual time the disk spent servicing this IO. Same as elapsed time for real time providers.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Kernel.DiskIOTraceData.ElapsedTimeMSec">
+ <summary>
+ The time since the I/O was initiated.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Kernel.DiskIOFlushBuffersTraceData.HighResResponseTime">
+ <summary>
+ This is the time since the I/O was initiated, in source.PerfFreq (QPC) ticks.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Kernel.DiskIOFlushBuffersTraceData.ElapsedTimeMSec">
+ <summary>
+ The time since the I/O was initiated.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Kernel.FileIONameTraceData.FileKey">
+ <summary>
+ This is a handle that represents a file NAME (not an open file).
+ In the MSDN does this field is called FileObject. However in other events FileObject is something
+ returned from Create file and is different. Events have have both (and some do) use FileKey. Thus
+ I use FileKey uniformly to avoid confusion.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Kernel.FileIOCreateTraceData.CreateOptions">
+ <summary>
+ See the Windows CreateFile API CreateOptions for this
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Kernel.FileIOCreateTraceData.CreateDispostion">
+ <summary>
+ See Windows CreateFile API CreateDisposition for this.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Kernel.FileIOCreateTraceData.FileAttributes">
+ <summary>
+ See Windows CreateFile API ShareMode parameter
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Kernel.FileIOCreateTraceData.ShareAccess">
+ <summary>
+ See windows CreateFile API ShareMode parameter
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.Kernel.CreateDisposition">
+ <summary>
+ See Windows CreateFile function CreateDispostion parameter.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.Kernel.CreateOptions">
+ <summary>
+ See Windows CreateFile function FlagsAndAttributes parameter.
+ TODO FIX NOW: these have not been validated yet.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Kernel.FileIODirEnumTraceData.FileObject">
+ <summary>
+ The FileObject is the object for the Directory (used by CreateFile to open and passed to Close to close)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Kernel.FileIODirEnumTraceData.FileKey">
+ <summary>
+ The FileKey is the object that represents the name of the directory.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Kernel.ImageLoadTraceData.BuildTime">
+ <summary>
+ This is the TimeDateStamp converted to a DateTime
+ TODO: daylight savings time seems to mess this up.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.Kernel.MemoryPageFaultTraceData.LogCodeAddresses(System.Func{Microsoft.Diagnostics.Tracing.TraceEvent,System.UInt64,System.Boolean})">
+ <summary>
+ Indicate that ProgramCounter is a code address that needs symbolic information
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Kernel.MemoryHardFaultTraceData.ElapsedTimeMSec">
+ <summary>
+ The time spent during the page fault.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.Kernel.MemoryPageAccessTraceData.LogCodeAddresses(System.Func{Microsoft.Diagnostics.Tracing.TraceEvent,System.UInt64,System.Boolean})">
+ <summary>
+ Indicate that the Address is a code address that needs symbolic information
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.Kernel.MemoryProcessMemInfoTraceData">
+ <summary>
+ This event is emitted by the Microsoft-Windows-Kernel-Memory with Keyword 0x40 KERNEL_MEM_KEYWORD_MEMINFO_EX every .5 seconds
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.Kernel.MemoryProcessMemInfoTraceData.Values(System.Int32)">
+ <summary>
+ Returns the edge at the given zero-based index (index less than Count). The returned MemoryProcessMemInfoValues
+ points the the data in MemoryProcessMemInfoTraceData so it cannot live beyond that lifetime.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.Kernel.MemoryProcessMemInfoTraceData.PayloadValue(System.Int32)">
+ <summary>
+ The fields after 'Count' are the first value in the array of working sets.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.Kernel.MemoryProcessMemInfoValues">
+ <summary>
+ This structure just POINTS at the data in the MemoryProcessMemInfoTraceData. It can only be used as long as
+ the MemoryProcessMemInfoTraceData is alive which (unless you cloned it) is only for the lifetime of the callback.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.Kernel.MemInfoTraceData.PayloadValue(System.Int32)">
+ <summary>
+ The fields after 'Count' are the first value in the array of working sets.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Kernel.SampledProfileTraceData.ExecutingDPC">
+ <summary>
+ Are we currently executing a Deferred Procedure Call (a mechanism the kernel uses to
+ 'steal' a thread to run its own work). If this is true, the CPU time is really
+ not logically related to the process (it is kernel time).
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Kernel.SampledProfileTraceData.ExecutingISR">
+ <summary>
+ Are we currently executing a Interrupt Service Routine? Like ExecutingDPC if this
+ is true the thread is really doing Kernel work, not work for the process.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Kernel.SampledProfileTraceData.NonProcess">
+ <summary>
+ NonProcess is true if ExecutingDPC or ExecutingISR is true.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Kernel.SampledProfileTraceData.Priority">
+ <summary>
+ The thread's current priority (higher is more likely to run). A normal thread with a normal base
+ priority is 8.
+ see http://msdn.microsoft.com/en-us/library/windows/desktop/ms685100(v=vs.85).aspx for more
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Kernel.SampledProfileTraceData.Rank">
+ <summary>
+ Your scheduling If the thread is not part of a scheduling group, this is 0 (see callout.c)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.Kernel.SampledProfileTraceData.LogCodeAddresses(System.Func{Microsoft.Diagnostics.Tracing.TraceEvent,System.UInt64,System.Boolean})">
+ <summary>
+ Indicate that the Address is a code address that needs symbolic information
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.Kernel.PMCCounterProfTraceData">
+ <summary>
+ PMC (Precise Machine Counter) events are fired when a CPU counter trips. The the ProfileSource identifies
+ which counter it is. The PerfInfoCollectionStart events will tell you the count that was configured to trip
+ the event.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.Kernel.PMCCounterProfTraceData.LogCodeAddresses(System.Func{Microsoft.Diagnostics.Tracing.TraceEvent,System.UInt64,System.Boolean})">
+ <summary>
+ Indicate that Address is a code address that needs symbolic information
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.Kernel.SysCallEnterTraceData.LogCodeAddresses(System.Func{Microsoft.Diagnostics.Tracing.TraceEvent,System.UInt64,System.Boolean})">
+ <summary>
+ Indicate that the Address is a code address that needs symbolic information
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.Kernel.StackWalkStackTraceData">
+ <summary>
+ Collects the call callStacks for some other event.
+
+ (TODO: always for the event that preceded it on the same thread)?
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Kernel.StackWalkStackTraceData.EventTimeStampQPC">
+ <summary>
+ The timestamp of the event which caused this stack walk using QueryPerformaceCounter
+ cycles as the tick.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Kernel.StackWalkStackTraceData.EventTimeStampRelativeMSec">
+ <summary>
+ Converts this to a time relative to the start of the trace in msec.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Kernel.StackWalkStackTraceData.FrameCount">
+ <summary>
+ The total number of eventToStack frames collected. The Windows OS currently has a maximum of 96 frames.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.Kernel.StackWalkStackTraceData.InstructionPointer(System.Int32)">
+ <summary>
+ Fetches the instruction pointer of a eventToStack frame 0 is the deepest frame, and the maximum should
+ be a thread offset routine (if you get a complete stack).
+ </summary>
+ <param name="index">The index of the frame to fetch. 0 is the CPU EIP, 1 is the Caller of that
+ routine ...</param>
+ <returns>The instruction pointer of the specified frame.</returns>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Kernel.StackWalkStackTraceData.InstructionPointers">
+ <summary>
+ Access to the instruction pointers as a unsafe memory blob
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.Kernel.StackWalkStackTraceData.FixupData">
+ <summary>
+ StackWalkTraceData does not set Thread and process ID fields properly. if that.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.Kernel.StackWalkRefTraceData">
+ <summary>
+ To save space, stack walks in Win8 can be complressed. The stack walk event only has a
+ reference to a stack Key which is then looked up by StackWalkDefTraceData.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Kernel.StackWalkRefTraceData.EventTimeStampQPC">
+ <summary>
+ The timestamp of the event which caused this stack walk using QueryPerformaceCounter
+ cycles as the tick.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Kernel.StackWalkRefTraceData.EventTimeStampRelativeMSec">
+ <summary>
+ Converts this to a time relative to the start of the trace in msec.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Kernel.StackWalkRefTraceData.StackKey">
+ <summary>
+ Returns a key that can be used to look up the stack in KeyDelete or KeyRundown events
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.Kernel.StackWalkRefTraceData.FixupData">
+ <summary>
+ StackWalkTraceData does not set Thread and process ID fields properly. if that.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.Kernel.StackWalkDefTraceData">
+ <summary>
+ This event defines a stack and gives it a unique id (the StackKey), which StackWalkRefTraceData can point at.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Kernel.StackWalkDefTraceData.StackKey">
+ <summary>
+ Returns a key that can be used to look up the stack in KeyDelete or KeyRundown events
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Kernel.StackWalkDefTraceData.FrameCount">
+ <summary>
+ The total number of eventToStack frames collected. The Windows OS currently has a maximum of 96 frames.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.Kernel.StackWalkDefTraceData.InstructionPointer(System.Int32)">
+ <summary>
+ Fetches the instruction pointer of a eventToStack frame 0 is the deepest frame, and the maximum should
+ be a thread offset routine (if you get a complete complete).
+ </summary>
+ <param name="index">The index of the frame to fetch. 0 is the CPU EIP, 1 is the Caller of that
+ routine ...</param>
+ <returns>The instruction pointer of the specified frame.</returns>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Kernel.StackWalkDefTraceData.InstructionPointers">
+ <summary>
+ Access to the instruction pointers as a unsafe memory blob
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Kernel.SystemPathsTraceData.SystemDirectory">
+ <summary>
+ e.g. c:\windows\system32
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Kernel.SystemPathsTraceData.SystemWindowsDirectory">
+ <summary>
+ .e.g c:\windows
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.SymbolTraceEventParser">
+ <summary>
+ Kernel traces have information about images that are loaded, however they don't have enough information
+ in the events themselves to unambigously look up PDBs without looking at the data inside the images.
+ This means that symbols can't be resolved unless you are on the same machine on which you gathered the data.
+
+ XPERF solves this problem by adding new 'synthetic' events that it creates by looking at the trace and then
+ opening each DLL mentioned and extracting the information needed to look PDBS up on a symbol server (this
+ includes the PE file's TimeDateStamp as well as a PDB Guid, and 'pdbAge' that can be found in the DLLs header.
+
+ These new events are added when XPERF runs the 'merge' command (or -d flag is passed). It is also exposed
+ through the KernelTraceControl.dll!CreateMergedTraceFile API.
+
+ SymbolTraceEventParser is a parser for extra events.
+ </summary>
+ </member>
+ <member name="E:Microsoft.Diagnostics.Tracing.Parsers.SymbolTraceEventParser.ImageIDDbgID_RSDS">
+ <summary>
+ The DbgIDRSDS event is added by XPERF for every Image load. It contains the 'PDB signature' for the DLL,
+ which is enough to unambiguously look the image's PDB up on a symbol server.
+ </summary>
+ </member>
+ <member name="E:Microsoft.Diagnostics.Tracing.Parsers.SymbolTraceEventParser.ImageID">
+ <summary>
+ Every DLL has a Timestamp in the PE file itself that indicates when it is built. This event dumps this timestamp.
+ This timestamp is used to be as the 'signature' of the image and is used as a key to find the symbols, however
+ this has mostly be superseded by the DbgID/RSDS event.
+ </summary>
+ </member>
+ <member name="E:Microsoft.Diagnostics.Tracing.Parsers.SymbolTraceEventParser.ImageIDFileVersion">
+ <summary>
+ The FileVersion event contains information from the file version resource that most DLLs have that indicated
+ detailed information about the exact version of the DLL. (What is in the File->Properties->Version property
+ page)
+ </summary>
+ </member>
+ <member name="E:Microsoft.Diagnostics.Tracing.Parsers.SymbolTraceEventParser.ImageIDNone">
+ <summary>
+ I don't really care about this one, but I need a definition in order to exclude it because it
+ has the same timestamp as a imageLoad event, and two events with the same timestamp confuse the
+ association between a stack and the event for the stack.
+ </summary>
+ </member>
+ <member name="E:Microsoft.Diagnostics.Tracing.Parsers.SymbolTraceEventParser.MetaDataEventInfo">
+ <summary>
+ This event has a TRACE_EVENT_INFO as its payload, and allows you to decode an event
+ </summary>
+ </member>
+ <member name="E:Microsoft.Diagnostics.Tracing.Parsers.SymbolTraceEventParser.MetaDataEventMapInfo">
+ <summary>
+ The event describes a Map (bitmap or ValueMap), and has a payload as follows
+
+ GUID ProviderId;
+ EVENT_MAP_INFO EventMapInfo;
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Symbol.WinSatXmlTraceData.Xml">
+ <summary>
+ The value of the one string payload property.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.Symbol.WinSatXmlTraceData.#ctor(System.Action{Microsoft.Diagnostics.Tracing.Parsers.Symbol.WinSatXmlTraceData},System.Int32,System.Int32,System.String,System.Guid,System.Int32,System.String,System.Guid,System.String)">
+ <summary>
+ Construct a TraceEvent template which has one string payload field with the given metadata and action
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.Symbol.WinSatXmlTraceData.ToXml(System.Text.StringBuilder)">
+ <summary>
+ implementation of TraceEvent Interface.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Symbol.WinSatXmlTraceData.PayloadNames">
+ <summary>
+ implementation of TraceEvent Interface.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.Symbol.WinSatXmlTraceData.PayloadValue(System.Int32)">
+ <summary>
+ implementation of TraceEvent Interface.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.Symbol.WinSatXmlTraceData.Dispatch">
+ <summary>
+ implementation of TraceEvent Interface.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.Symbol.WinSatXmlTraceData.Target">
+ <summary>
+ override
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.RegisteredTraceEventParser">
+ <summary>
+ RegisteredTraceEventParser uses the standard windows provider database (TDH, what gets registered with wevtutil)
+ to find the names of events and fields of the events).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.RegisteredTraceEventParser.#ctor(Microsoft.Diagnostics.Tracing.TraceEventSource,System.Boolean)">
+ <summary>
+ Create a new RegisteredTraceEventParser and attach it to the given TraceEventSource
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.RegisteredTraceEventParser.GetManifestForRegisteredProvider(System.String)">
+ <summary>
+ Given a provider name that has been registered with the operating system, get
+ a string representing the ETW manifest for that provider. Note that this
+ manifest is not as rich as the original source manifest because some information
+ is not actually compiled into the binary manifest that is registered with the OS.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.RegisteredTraceEventParser.GetManifestForRegisteredProvider(System.Guid)">
+ <summary>
+ Given a provider GUID that has been registered with the operating system, get
+ a string representing the ETW manifest for that provider. Note that this
+ manifest is not as rich as the original source manifest because some information
+ is not actually compiled into the binary manifest that is registered with the OS.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.RegisteredTraceEventParser.GetKeywordStr(System.Collections.Generic.SortedDictionary{System.UInt64,System.String},System.UInt64)">
+ <summary>
+ Generates a space separated list of set of keywords 'keywordSet' using the table 'keywords'
+ It will generate new keyword names if needed and add them to 'keywords' if they are not present.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.RegisteredTraceEventParser.TaskInfo">
+ <summary>
+ Class used to accumulate information about Tasks in the implementation of GetManifestForRegisteredProvider
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.RegisteredTraceEventParser.TryLookupWorker(Microsoft.Diagnostics.Tracing.TraceEvent,System.Collections.Generic.Dictionary{Microsoft.Diagnostics.Tracing.Parsers.MapKey,System.Collections.Generic.IDictionary{System.Int64,System.String}})">
+ <summary>
+ Try to look up 'unknonwEvent using TDH or the TraceLogging mechanism. if 'mapTable' is non-null it will be used
+ look up the string names for fields that have bitsets or enumerated values. This is only need for the KernelTraceControl
+ case where the map information is logged as special events and can't be looked up with TDH APIs.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.RegisteredTraceEventParser.TdhEventParser">
+ <summary>
+ TdhEventParser takes the Trace Diagnostics Helper (TDH) TRACE_EVENT_INFO structure and
+ (passed as a byte*) and converts it to a DynamicTraceEventData which which
+ can be used to parse events of that type. You first create TdhEventParser and then
+ call ParseEventMetaData to do the parsing.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.RegisteredTraceEventParser.TdhEventParser.#ctor(System.Byte*,Microsoft.Diagnostics.Tracing.TraceEventNativeMethods.EVENT_RECORD*,System.Collections.Generic.Dictionary{Microsoft.Diagnostics.Tracing.Parsers.MapKey,System.Collections.Generic.IDictionary{System.Int64,System.String}})">
+ <summary>
+ Creates a new parser from the TRACE_EVENT_INFO held in 'buffer'. Use
+ ParseEventMetaData to then parse it into a DynamicTraceEventData structure.
+ EventRecord can be null and mapTable if present allow the parser to resolve maps (enums), and can be null.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.RegisteredTraceEventParser.TdhEventParser.ParseEventMetaData">
+ <summary>
+ Actually performs the parsing of the TRACE_EVENT_INFO passed in the constructor
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.RegisteredTraceEventParser.TdhEventParser.ParseFields(System.Int32,System.Int32)">
+ <summary>
+ Parses at most 'maxFields' fields starting at the current position.
+ Will return the parse fields in 'payloadNamesRet' and 'payloadFetchesRet'
+ Will return true if successful, false means an error occurred.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.ExternalTraceEventParser">
+ <summary>
+ ExternalTraceEventParser is an abstract class that acts as a parser for any 'External' resolution
+ This include the TDH (RegisteredTraceEventParser) as well as the WPPTraceEventParser.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.ExternalTraceEventParser.#ctor(Microsoft.Diagnostics.Tracing.TraceEventSource,System.Boolean)">
+ <summary>
+ Create a new ExternalTraceEventParser and attach it to the given TraceEventSource
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Parsers.ExternalTraceEventParser.IsStatic">
+ <summary>
+ Override.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.ExternalTraceEventParser.GetProviderName">
+ <summary>
+ Override
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.ExternalTraceEventParser.HasDefinitionForTemplate(Microsoft.Diagnostics.Tracing.TraceEvent)">
+ <summary>
+ Returns true if the RegisteredTraceEventParser would return 'template' in EnumerateTemplates
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.ExternalTraceEventParser.EnumerateTemplates(System.Func{System.String,System.String,Microsoft.Diagnostics.Tracing.EventFilterResponse},System.Action{Microsoft.Diagnostics.Tracing.TraceEvent})">
+ <summary>
+ override
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.ExternalTraceEventParser.OnNewEventDefintion(Microsoft.Diagnostics.Tracing.TraceEvent,System.Boolean)">
+ <summary>
+ Register 'template' so that if there are any subscriptions to template they get registered with the source.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.MapKey">
+ <summary>
+ Used to look up Enums (provider x enumName); Very boring class.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.ExternalTraceEventParserState">
+ <summary>
+ TDHDynamicTraceEventParserState represents the state of a TDHDynamicTraceEventParser that needs to be
+ serialized to a log file. It does NOT include information about what events are chosen but DOES contain
+ any other necessary information that came from the ETL data file or the OS TDH APIs.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.ExternalTraceEventParserState.TraceEventComparer">
+ <summary>
+ This defines what it means to be the same event. For manifest events it means provider and event ID
+ for classic, it means that taskGuid and opcode match.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.ExternalTraceEventParserState.ToStream(FastSerialization.Serializer)">
+ <summary>
+ Implements IFastSerializable interface
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.ExternalTraceEventParserState.FromStream(FastSerialization.Deserializer)">
+ <summary>
+ Implements IFastSerializable interface
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Parsers.WppTraceEventParser">
+ <summary>
+ This parser knows how to decode Windows Software Trace Preprocessor (WPP) events. In order to decode
+ the events it needs access to the TMF files that describe the events (these are created from the PDB at
+ build time).
+ <br/>
+ You will generally use this for the 'FormattedMessage' property of the event.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Parsers.WppTraceEventParser.#ctor(Microsoft.Diagnostics.Tracing.TraceEventSource,System.String)">
+ <summary>
+ Construct a new WPPTraceEventParser that is attached to 'source'. Once you do this the source
+ will understand WPP events. In particular you can subscribe to the Wpp.All event to get the
+ stream of WPP events in the source. For WppTraceEventParser to function, it needs the TMF
+ files for the events it will decode. You should pass the directory to find these TMF files
+ in 'TMFDirectory'. Each file should have the form of a GUID.tmf.
+ </summary>
+ <param name="source"></param>
+ <param name="TMFDirectory"></param>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.ETWReloggerTraceEventSource">
+ <summary>
+ ETWReloggerTraceEventSource is designed to be able to write ETW files using an existing ETW input stream (either a file, files or real time session) as a basis.
+ The relogger capabilities only exist on Windows 8 OSes and beyond.
+
+ The right way to think about this class is that it is just like ETWTraceEventSource, but it also has a output file associated with it, and WriteEvent APIs that
+ can be used to either copy events from the event stream (the common case), or inject new events (high level stats).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ETWReloggerTraceEventSource.#ctor(System.String,System.String)">
+ <summary>
+ Create an ETWReloggerTraceEventSource that can takes its input from the family of etl files inputFileName
+ and can write them to the ETL file outputFileName (.kernel*.etl, .user*.etl .clr*.etl)
+
+ This is a shortcut for ETWReloggerTraceEventSource(inputFileName, TraceEventSourceType.MergeAll, outputFileStream)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ETWReloggerTraceEventSource.#ctor(System.String,Microsoft.Diagnostics.Tracing.TraceEventSourceType,System.String)">
+ <summary>
+ Create an ETWReloggerTraceEventSource that can takes its input from a variety of sources (either a single file,
+ a set of files, or a real time ETW session (based on 'type'), and can write these events to a new ETW output
+ file 'outputFileName.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.ETWReloggerTraceEventSource.OutputUsesCompressedFormat">
+ <summary>
+ The output file can use a compressed form or not. Compressed forms can only be read on Win8 and beyond. Defaults to true.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ETWReloggerTraceEventSource.WriteEvent(Microsoft.Diagnostics.Tracing.TraceEvent)">
+ <summary>
+ Writes an event from the input stream to the output stream of events.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ETWReloggerTraceEventSource.ConnectEventSource(System.Diagnostics.Tracing.EventSource)">
+ <summary>
+ Connect the given EventSource so any events logged from it will go to the output stream of events.
+ Once connected, you may only write events from this EventSource while processing the input stream
+ (that is during the callback of an input stream event), because the context for the EventSource event
+ (e.g. timestamp, proesssID, threadID ...) will be derived from the current event being processed by
+ the input stream.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ETWReloggerTraceEventSource.WriteEvent(System.Guid,TraceReloggerLib._EVENT_DESCRIPTOR@,Microsoft.Diagnostics.Tracing.TraceEvent,System.Object[])">
+ <summary>
+ Writes an event that did not exist previously into the data stream, The context data (time, process, thread, activity, comes from 'an existing event')
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ETWReloggerTraceEventSource.WriteEvent(System.Guid,TraceReloggerLib._EVENT_DESCRIPTOR@,System.DateTime,System.Int32,System.Int32,System.Int32,System.Guid,System.Object[])">
+ <summary>
+ Writes an event that did not exist previously into the data stream, The context data (time, process, thread, activity, comes from 'an existing event') is given explicitly
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.ETWReloggerTraceEventSource.EventsLost">
+ <summary>
+ implementing TraceEventDispatcher
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ETWReloggerTraceEventSource.Process">
+ <summary>
+ implementing TraceEventDispatcher
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ETWReloggerTraceEventSource.Dispose(System.Boolean)">
+ <summary>
+ Implements TraceEventDispatcher.Dispose
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ETWReloggerTraceEventSource.StopProcessing">
+ <summary>
+ Implements TraceEventDispatcher.StopProcessing
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.ETWReloggerTraceEventSource.ReloggerEventListener">
+ <summary>
+ This is used by the ConnectEventSource to route events from the EventSource to the relogger.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.ETWReloggerTraceEventSource.ReloggerCallbacks">
+ <summary>
+ This is the class the Win32 APIs call back on.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.ETWTraceEventSource">
+ <summary>
+ A ETWTraceEventSource represents the stream of events that was collected from a
+ TraceEventSession (eg the ETL moduleFile, or the live session event stream). Like all
+ TraceEventSource, it logically represents a stream of TraceEvent s. Like all
+ TraceEventDispathers it supports a callback model where Parsers attach themselves to this
+ sources, and user callbacks defined on the parsers are called when the 'Process' method is called.
+
+ * See also TraceEventDispatcher
+ * See also TraceEvent
+ * See also #ETWTraceEventSourceInternals
+ * See also #ETWTraceEventSourceFields
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ETWTraceEventSource.#ctor(System.String)">
+ <summary>
+ Open a ETW event trace moduleFile (ETL moduleFile) for processing.
+ </summary>
+ <param name="fileName">The ETL data moduleFile to open</param>`
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ETWTraceEventSource.#ctor(System.String,Microsoft.Diagnostics.Tracing.TraceEventSourceType)">
+ <summary>
+ Open a ETW event source for processing. This can either be a moduleFile or a real time ETW session
+ </summary>
+ <param name="fileOrSessionName">
+ If type == ModuleFile this is the name of the moduleFile to open.
+ If type == Session this is the name of real time session to open.</param>
+ <param name="type"></param>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ETWTraceEventSource.#ctor(System.Collections.Generic.IEnumerable{System.String})">
+ <summary>
+ Process all the files in 'fileNames' in order (that is all the events in the first
+ file are processed, then the second ...). Intended for parsing the 'Multi-File' collection mode.
+ </summary>
+ <param name="fileNames">The list of files path names to process (in that order)</param>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ETWTraceEventSource.Process">
+ <summary>
+ Processes all the events in the data source, issuing callbacks that were subscribed to. See
+ #Introduction for more
+ </summary>
+ <returns>false If StopProcesing was called</returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ETWTraceEventSource.ReprocessEvent(Microsoft.Diagnostics.Tracing.TraceEvent)">
+ <summary>
+ Reprocess a pre-constructed event which this processor has presumably created. Helpful to re-examine
+ "unknown" events, perhaps after a manifest has been received from the ETW stream.
+ Note when queuing events to reprocess you must <see cref="M:Microsoft.Diagnostics.Tracing.TraceEvent.Clone">Clone</see> them first
+ or certain internal data may no longer be available and you may receive memory access violations.
+ </summary>
+ <param name="ev">Event to re-process.</param>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.ETWTraceEventSource.LogFileName">
+ <summary>
+ The log moduleFile that is being processed (if present)
+ TODO: what does this do for Real time sessions?
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.ETWTraceEventSource.SessionName">
+ <summary>
+ The name of the session that generated the data.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.ETWTraceEventSource.Size">
+ <summary>
+ The size of the log, will return 0 if it does not know.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.ETWTraceEventSource.EventsLost">
+ <summary>
+ returns the number of events that have been lost in this session. Note that this value is NOT updated
+ for real time sessions (it is a snapshot). Instead you need to use the TraceEventSession.EventsLost property.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.ETWTraceEventSource.CanReset">
+ <summary>
+ Returns true if the Process can be called multiple times (if the Data source is from a
+ moduleFile, not a real time stream.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ETWTraceEventSource.SynchronizeClock">
+ <summary>
+ This routine is only useful/valid for real-time sessions.
+
+ TraceEvent.TimeStamp internally is stored using a high resolution clock called the Query Performance Counter (QPC).
+ This clock is INDEPENDENT of the system clock used by DateTime. These two clocks are synchronized to within 2 msec at
+ session startup but they can drift from there (typically 2msec / min == 3 seconds / day). Thus if you have long
+ running real time session it becomes problematic to compare the timestamps with those in another session or something
+ timestamped with the system clock. SynchronizeClock will synchronize the TraceEvent.Timestamp clock with the system
+ clock again. If you do this right before you start another session, then the two sessions will be within 2 msec of
+ each other, and their timestamps will correlate. Doing it periodically (e.g. hourly), will keep things reasonably close.
+
+ TODO: we can achieve perfect synchronization by exposing the QPC tick sync point so we could read the sync point
+ from one session and set that exact sync point for another session.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.ETWTraceEventSource.ModuleSymbolOptions">
+ <summary>
+ Options that can be passed to GetModulesNeedingSymbols
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.ETWTraceEventSource.ModuleSymbolOptions.OnlyNGENImages">
+ <summary>
+ This is the default, where only NGEN images are included (since these are the only images whose PDBS typically
+ need to be resolved agressively AT COLLECTION TIME)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.ETWTraceEventSource.ModuleSymbolOptions.IncludeUnmanagedModules">
+ <summary>
+ If set, this option indicates that non-NGEN images should also be included in the list of returned modules
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.ETWTraceEventSource.ModuleSymbolOptions.IncludeModulesWithOutSamples">
+ <summary>
+ Normally only modules what have a CPU or stack sample are included in the list of assemblies (thus you don't
+ unnecessarily have to generate NGEN PDBS for modules that will never be looked up). However if there are
+ events that have addresses that need resolving that this routine does not recognise, this option can be
+ set to insure that any module that was event LOADED is included. This is inefficient, but guarenteed to
+ be complete
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ETWTraceEventSource.GetModulesNeedingSymbols(System.String,Microsoft.Diagnostics.Tracing.ETWTraceEventSource.ModuleSymbolOptions)">
+ <summary>
+ Given an ETL file, returns a list of the full paths to DLLs that were loaded in the trace that need symbolic
+ information (PDBs) so that the stack traces and CPU samples can be properly resolved. By default this only
+ returns NGEN images since these are the ones that need to be resolved and generated at collection time.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.ETWTraceEventSource.ImageData">
+ <summary>
+ Image data is a trivial record for image data, where it is keyed by the base address, processID and name.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ETWTraceEventSource.GetOSPointerSize">
+ <summary>
+ Returns the size of pointer (8 or 4) for the operating system (not necessarily the process)
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.ETWTraceEventSource.QPCTime">
+ <summary>
+ This is a little helper class that maps QueryPerformanceCounter (QPC) ticks to DateTime. There is an error of
+ a few msec, but as long as every one uses the same one, we probably don't care.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ETWTraceEventSource.Dispose(System.Boolean)">
+ <summary>
+ see Dispose pattern
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ETWTraceEventSource.Finalize">
+ <summary>
+ see Dispose pattern
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.ETWTraceEventSource.lockObj">
+ <summary>
+ Used by real time TraceLog on Windows7.
+ If we have several real time sources we have them coming in on several threads, but we want the illusion that they
+ are one source (thus being processed one at a time). Thus we want a lock that is taken on every dispatch.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.TraceEventSourceType">
+ <summary>
+ The kinds of data sources that can be opened (see ETWTraceEventSource)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.TraceEventSourceType.MergeAll">
+ <summary>
+ Look for any files like *.etl or *.*.etl (the later holds things like *.kernel.etl or *.clrRundown.etl ...)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.TraceEventSourceType.FileOnly">
+ <summary>
+ Look for a ETL moduleFile *.etl as the event data source
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.TraceEventSourceType.Session">
+ <summary>
+ Use a real time session as the event data source.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.EventPipe.EventCache.Flush">
+ <summary>
+ After all events have been parsed we could have some straglers that weren't
+ earlier than any sorted event. Sort and dispatch those now.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.EventPipe.ClrThreadStackWalkTraceData.InstructionPointer(System.Int32)">
+ <summary>
+ Fetches the instruction pointer of a eventToStack frame 0 is the deepest frame, and the maximum should
+ be a thread offset routine (if you get a complete eventToStack).
+ </summary>
+ <param name="index">The index of the frame to fetch. 0 is the CPU EIP, 1 is the Caller of that
+ routine ...</param>
+ <returns>The instruction pointer of the specified frame.</returns>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.EventPipe.ClrThreadStackWalkTraceData.InstructionPointers">
+ <summary>
+ Access to the instruction pointers as a unsafe memory blob
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.EventPipeEventSource">
+ <summary>
+ EventPipeEventSource knows how to decode EventPipe (generated by the .NET core runtime).
+ Please see <see href="https://github.com/Microsoft/perfview/blob/master/src/TraceEvent/EventPipe/EventPipeFormat.md" />for details on the file format.
+
+ By conventions files of such a format are given the .netperf suffix and are logically
+ very much like a ETL file in that they have a header that indicate things about
+ the trace as a whole, and a list of events. Like more modern ETL files the
+ file as a whole is self-describing. Some of the events are 'MetaData' events
+ that indicate the provider name, event name, and payload field names and types.
+ Ordinary events then point at these meta-data event so that logically all
+ events have a name some basic information (process, thread, timestamp, activity
+ ID) and user defined field names and values of various types.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.EventPipeEventSource.Version">
+ <summary>
+ This is the version number reader and writer (although we don't don't have a writer at the moment)
+ It MUST be updated (as well as MinimumReaderVersion), if breaking changes have been made.
+ If your changes are forward compatible (old readers can still read the new format) you
+ don't have to update the version number but it is useful to do so (while keeping MinimumReaderVersion unchanged)
+ so that readers can quickly determine what new content is available.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.EventPipeEventSource.MinimumReaderVersion">
+ <summary>
+ This field is only used for writers, and this code does not have writers so it is not used.
+ It should be set to Version unless changes since the last version are forward compatible
+ (old readers can still read this format), in which case this shoudl be unchanged.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.EventPipeEventSource.MinimumVersionCanRead">
+ <summary>
+ This is the smallest version that the deserializer here can read. Currently
+ we are careful about backward compat so our deserializer can read anything that
+ has ever been produced. We may change this when we believe old writers basically
+ no longer exist (and we can remove that support code).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.EventPipeEventSource.OnNewEventPipeEventDefinition(Microsoft.Diagnostics.Tracing.EventPipeEventMetaDataHeader,FastSerialization.PinnedStreamReader)">
+ <summary>
+ Give meta-data for an event, passed as a EventPipeEventMetaDataHeader and readerForParameters
+ which is a StreamReader that points at serialized parameter information, decode the meta-data
+ and record a template associated with this source. The readerForParameters is advanced beyond
+ the event parameters information.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.EventPipeEventSource.ReadEventParametersAndBuildTemplate(Microsoft.Diagnostics.Tracing.EventPipeEventMetaDataHeader,FastSerialization.PinnedStreamReader)">
+ <summary>
+ Given the EventPipe metaData header and a stream pointing at the serialized meta-data for the parameters for the
+ event, create a new DynamicTraceEventData that knows how to parse that event.
+ ReaderForParameters.Current is advanced past the parameter information.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.EventPipeBlock">
+ <summary>
+ The Nettrace format is divided up into various blocks - this is a base class that handles the common
+ aspects for all of them.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.EventPipeEventBlock">
+ <summary>
+ An EVentPipeEventBlock represents a block of events. It basicaly only has
+ one field, which is the size in bytes of the block. But when its FromStream
+ is called, it will perform the callbacks for the events (thus deserializing
+ it performs dispatch).
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.EventPipeMetadataBlock">
+ <summary>
+ A block of metadata carrying events. These 'events' aren't dispatched by EventPipeEventSource - they carry
+ the metadata that allows the payloads of non-metadata events to be decoded.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.EventPipeSequencePointBlock">
+ <summary>
+ An EventPipeSequencePointBlock represents a stream divider that contains
+ updates for all thread event sequence numbers, indicates that all queued
+ events can be sorted and dispatched, and that all cached events/stacks can
+ be flushed.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.EventPipeStackBlock">
+ <summary>
+ An EventPipeStackBlock represents a block of interned stacks. Events refer
+ to stacks by an id.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.EventPipeEventMetaDataHeader">
+ <summary>
+ Private utility class.
+
+ An EventPipeEventMetaDataHeader holds the information that can be shared among all
+ instances of an EventPipe event from a particular provider. Thus it contains
+ things like the event name, provider, It however does NOT contain the data
+ about the event parameters (the names of the fields and their types), That is
+ why this is a meta-data header and not all the meta-data.
+
+ This class has two main functions
+ 1. The constructor takes a PinnedStreamReader and decodes the serialized metadata
+ so you can access the data conveniently (but it does not decode the parameter info)
+ 2. It remembers a EVENT_RECORD structure (from ETW) that contains this data)
+ and has a function GetEventRecordForEventData which converts from a
+ EventPipeEventHeader (the raw serialized data) to a EVENT_RECORD (which
+ is what TraceEvent needs to look up the event an pass it up the stack.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.EventPipeEventMetaDataHeader.#ctor(FastSerialization.PinnedStreamReader,System.Int32,System.Int32,System.Int32,System.Int32)">
+ <summary>
+ Creates a new MetaData instance from the serialized data at the current position of 'reader'
+ of length 'length'. This typically points at the PAYLOAD AREA of a meta-data events)
+ 'fileFormatVersionNumber' is the version number of the file as a whole
+ (since that affects the parsing of this data) and 'processID' is the process ID for the
+ whole stream (since it needs to be put into the EVENT_RECORD.
+
+ When this constructor returns the reader has read up to the serialized information about
+ the parameters. We do this because this code does not know the best representation for
+ this parameter information and so it just lets other code handle it.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.EventPipeEventMetaDataHeader.GetEventRecordForEventData(Microsoft.Diagnostics.Tracing.EventPipeEventHeader@)">
+ <summary>
+ Given a EventPipeEventHeader takes a EventPipeEventHeader that is specific to an event, copies it
+ on top of the static information in its EVENT_RECORD which is specialized meta-data
+ and returns a pointer to it. Thus this makes the EventPipe look like an ETW provider from
+ the point of view of the upper level TraceEvent logic.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.EventPipeEventMetaDataHeader.MetaDataId">
+ <summary>
+ This is a number that is unique to this meta-data blob. It is expected to be a small integer
+ that starts at 1 (since 0 is reserved) and increases from there (thus an array can be used).
+ It is what is matched up with EventPipeEventHeader.MetaDataId
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.EventPipeEventMetaDataHeader.ReadEventMetaData(FastSerialization.PinnedStreamReader,System.Int32)">
+ <summary>
+ Reads the meta data for information specific to one event.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.EventPipeEventHeader">
+ <summary>
+ Private utility class.
+
+ At the start of every event from an EventPipe is a header that contains
+ common fields like its size, threadID timestamp etc. EventPipeEventHeader
+ is the layout of this. Events have two variable sized parts: the user
+ defined fields, and the stack. EventPipEventHeader knows how to
+ decode these pieces (but provides no semantics for it.
+
+ It is not a public type, but used in low level parsing of EventPipeEventSource.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.EventPipeEventHeader.GetTotalEventSize(System.Byte*,System.Int32)">
+ <summary>
+ Size of the event header + stack + payload (includes EventSize field itself)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.EventPipeEventHeader.GetHeaderSize(System.Int32)">
+ <summary>
+ Header Size is defined to be the number of bytes before the Payload bytes.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Stacks.CallTree">
+ <summary>
+ SampleInfos of a set of stackSource by eventToStack. This represents the entire call tree. You create an empty one in using
+ the default constructor and use 'AddSample' to add stackSource to it. You traverse it by
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CallTree.#ctor(Microsoft.Diagnostics.Tracing.Stacks.ScalingPolicyKind)">
+ <summary>
+ Creates an empty call tree, indicating the scaling policy of the metric. You populate it by assigning a StackSOurce to the tree.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTree.StackSource">
+ <summary>
+ A CallTree is generated from a StackSource. Setting the StackSource causes the tree to become populated.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTree.PercentageBasis">
+ <summary>
+ When calculating percentages, the PercentageBasis do we use as 100%. By default we use the
+ Inclusive time for the root, but that can be changed here.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTree.Root">
+ <summary>
+ Returns the root node of the call tree.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTree.NodeIndexLimit">
+ <summary>
+ An upper bound for the node indexes in the call tree. (All indexes
+ are strictly less than this number) Thus ASSSUMING YOU DON'T ADD
+ NEW NODES, an array of this size can be used to index the nodes (and
+ thus lookup nodes by index or to store additional information about a node).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CallTree.CallerCallee(System.String)">
+ <summary>
+ Get a CallerCalleeNode for the nodes in the call tree named 'nodeName'
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTree.ByID">
+ <summary>
+ Returns a list of nodes that have statistics rolled up by treeNode by ID. It is not
+ sorted by anything in particular. Note that ID is not quite the same thing as the
+ name. You can have two nodes that have different IDs but the same Name. These
+ will show up as two distinct entries in the resulting list.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CallTree.ByIDSortedExclusiveMetric">
+ <summary>
+ Returns the list returned by the ByID property sorted by exclusive metric.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CallTree.FoldNodesUnder(System.Single,System.Boolean)">
+ <summary>
+ If there are any nodes that have strictly less than to 'minInclusiveMetric'
+ then remove the node, placing its samples into its parent (thus the parent's
+ exclusive metric goes up).
+
+ If useWholeTraceMetric is true, nodes are only folded if their inclusive metric
+ OVER THE WHOLE TRACE is less than 'minInclusiveMetric'. If false, then a node
+ is folded if THAT NODE has less than the 'minInclusiveMetric'
+
+ Thus if 'useWholeTraceMetric' == false then after calling this routine no
+ node will have less than minInclusiveMetric.
+
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CallTree.Sort(System.Comparison{Microsoft.Diagnostics.Tracing.Stacks.CallTreeNode})">
+ <summary>
+ Cause the children of each CallTreeNode in the CallTree to be sorted (accending) based on comparer
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CallTree.SortInclusiveMetricDecending">
+ <summary>
+ Sorting by InclusiveMetric Decending is so common, provide a shortcut.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTree.ScalingPolicy">
+ <summary>
+ When converting the InclusiveMetricByTime to a InclusiveMetricByTimeString you have to decide
+ how to scale the samples to the digits displayed in the string. This enum indicates this policy
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTree.TimeHistogramController">
+ <summary>
+ The nodes in the calltree have histograms in time, all of these histograms share a controller that
+ contains sharable information. This propertly returns that TimeHistogramController
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTree.ScenarioHistogram">
+ <summary>
+ The nodes in the calltree have histograms indexed by scenario (which is user defiend),
+ all of these histograms share a controller that contains sharable information.
+ This propertly returns that ScenarioHistogramController
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTree.DisableParallelism">
+ <summary>
+ Turns off logic for computing call trees in parallel. Safer but slower.
+ </summary>
+ <remarks>
+ <para>This is off by default following indications of race conditions.</para>
+ </remarks>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CallTree.FreeMemory">
+ <summary>
+ Break all links in the call tree to free as much memory as possible.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CallTree.ToXml(System.IO.TextWriter)">
+ <summary>
+ Write an XML representtaion of the CallTree to 'writer'
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CallTree.ToString">
+ <summary>
+ An XML representtaion of the CallTree (for debugging)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CallTree.AccumulateSumByID(Microsoft.Diagnostics.Tracing.Stacks.CallTreeNode,System.Collections.Generic.Dictionary{System.Int32,Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase},Microsoft.Diagnostics.Tracing.Stacks.RecursionGuard)">
+ <summary>
+ Traverse the subtree of 'treeNode' into the m_sumByID dictionary. We don't want to
+ double-count inclusive times, so we have to keep track of all callers currently on the
+ stack and we only add inclusive times for nodes that are not already on the stack.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Stacks.ScalingPolicyKind">
+ <summary>
+ ScalingPolicyKind represents the desired way to scale the metric in the samples.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Stacks.ScalingPolicyKind.ScaleToData">
+ <summary>
+ This is the default. In this policy, 100% is chosen so that the histogram is scaled as best it can.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Stacks.ScalingPolicyKind.TimeMetric">
+ <summary>
+ It assumes that the metric represents time
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeIndex">
+ <summary>
+ Represents a unique ID for a node in a call tree. Can be used to look up a call tree node easily.
+ It is a dense value (from 0 up to a maximum).
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeIndex.Invalid">
+ <summary>
+ An Invalid Node Index.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase">
+ <summary>
+ A CallTreeNodeBase is the inforation in a CallTreeNode without parent or child relationships.
+ ByName nodes and Caller-Callee nodes need this because they either don't have or need different
+ parent-child relationships.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase.Index">
+ <summary>
+ Returns a unique small, dense number (suitable for looking up in an array) that represents
+ this call tree node (unlike the ID, which more like the name of the frame of the node), so you
+ can have many nodes with the same name, but only one with the same index. See CallTree.GetNodeIndexLimit.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase.#ctor(Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase)">
+ <summary>
+ Create a CallTreeNodeBase (a CallTreeNode without children) which is a copy of another one.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase.Name">
+ <summary>
+ The Frame name that this tree node represents.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase.DisplayName">
+ <summary>
+ Currently the same as Name, but could contain additional info.
+ Suitable for display but not for programmatic comparison.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase.ID">
+ <summary>
+ The ID represents a most fine grained uniqueness associated with this node. It can represent
+ a method, but for sources that support 'goto source' functionality these IDs actually represent
+ particular lines (or more precisely program counter locations), within the method. Thus it is
+ very likely that there are call tree nodes that have the same name but different IDs.
+
+ This can be StackSourceFrameIndex.Invalid for Caller-callee nodes (which have names, but no useful ID)
+
+ If ID != Invalid, and the IDs are the same then the names are guaranteed to be the same.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase.InclusiveMetric">
+ <summary>
+ The sum of the metric of all samples that are in this node or any child of this node (recursively)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase.AverageInclusiveMetric">
+ <summary>
+ The average metric of all samples that are in this node or any child of this node (recursively).
+ This is simply InclusiveMetric / InclusiveCount.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase.ExclusiveMetric">
+ <summary>
+ The sum of the metric of all samples that are in this node
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase.ExclusiveFoldedMetric">
+ <summary>
+ The sum of the metric of all samples in this node that are there because they were folded (inlined). It is alwasy less than or equal to ExclusiveMetric.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase.InclusiveCount">
+ <summary>
+ The sum of the count of all samples that are in this node or any child of this node (recursively)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase.ExclusiveCount">
+ <summary>
+ The sum of the count of all samples that are in this node
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase.ExclusiveFoldedCount">
+ <summary>
+ The sum of the count of all samples in this node that are there because they were folded (inlined). It is alwasy less than or equal to ExclusiveCount.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase.InclusiveMetricPercent">
+ <summary>
+ The inclusive metric, normalized to the total metric for the entire tree.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase.ExclusiveMetricPercent">
+ <summary>
+ The exclusive metric, normalized to the total metric for the entire tree.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase.ExclusiveFoldedMetricPercent">
+ <summary>
+ The exclusive folded metric, normalized to the total metric for the entire tree.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase.FirstTimeRelativeMSec">
+ <summary>
+ The time of the first sample for this node or any of its children (recursively)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase.FirstTimeRelMSec">
+ <summary>
+ The time of the first sample for this node or any of its children (recursively)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase.LastTimeRelativeMSec">
+ <summary>
+ The time of the last sample for this node or any of its children (recursively)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase.LastTimeRelMSec">
+ <summary>
+ The time of the last sample for this node or any of its children (recursively)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase.DurationMSec">
+ <summary>
+ The difference between the first and last sample (in MSec).
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase.CallTree">
+ <summary>
+ The call tree that contains this node.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase.InclusiveMetricByTime">
+ <summary>
+ Returns the histogram that groups of samples associated with this node or any of its children by time buckets
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase.InclusiveMetricByTimeString">
+ <summary>
+ Returns a string that represents the InclusiveMetricByTime Histogram by using character for every bucket (like PerfView)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase.InclusiveMetricByScenario">
+ <summary>
+ Returns the histogram that groups of samples associated with this node or any of its children by scenario buckets
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase.InclusiveMetricByScenarioString">
+ <summary>
+ Returns a string that represents the InclusiveMetricByScenario Histogram by using character for every bucket (like PerfView)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase.GetSamples(System.Boolean,System.Func{Microsoft.Diagnostics.Tracing.Stacks.StackSourceSampleIndex,System.Boolean})">
+ <summary>
+ Returns all the original stack samples in this node. If exclusive==true then just he
+ sample exclusively in this node are returned, otherwise it is the inclusive samples.
+
+ If the original stack source that was used to create this CodeTreeNode was a FilterStackSource
+ then that filtering is removed in the returned Samples.
+
+ Returns the total number of samples (the number of times 'callback' is called)
+
+ If the callback returns false, the iteration over samples stops.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase.GetTrees(System.Action{Microsoft.Diagnostics.Tracing.Stacks.CallTreeNode})">
+ <summary>
+ While 'GetSamples' can return all the samples in the tree, this is a relatively
+ inefficient way of representing the samples. Instead you can return a list of
+ trees whose samples represent all the samples. This is what GetTrees does.
+ It calls 'callback' on a set of trees that taken as a whole have all the samples
+ in 'node'.
+
+ Note you ave to be careful when using this for inclusive summation of byname nodes because
+ you will get trees that 'overlap' (bname nodes might refer into the 'middle' of another
+ call tree). This can be avoided pretty easily by simply stopping inclusive traversal
+ whenever a tree node with that ID occurs (see GetSamples for an example).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase.ToXmlAttribs(System.IO.TextWriter)">
+ <summary>
+ Returns a string representing the set of XML attributes that can be added to another XML element.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase.ToString">
+ <summary>
+ An XML representation of the CallTreeNodeBase (for debugging)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase.FreeMemory">
+ <summary>
+ The GUI sadly holds on to Call things in the model in its cache, and call tree nodes have linkes to whole
+ call tree. To avoid the GUI cache from holding on to the ENTIRE MODEL, we neuter the nodes when we are
+ done with them so that even if they are pointed to by the GUI cache it does not hold onto most of the
+ (dead) model. FreeMemory does this neutering.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase.CombineByIdSamples(Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase,System.Boolean,System.Double,System.Boolean)">
+ <summary>
+ Combines the 'this' node with 'otherNode'. If 'newOnStack' is true, then the inclusive
+ metrics are also updated.
+
+ Note that I DON'T accumulate other.m_samples into this.m_samples. This is because we want to share
+ samples as much a possible. Thus nodes remember their samples by pointing at other call trees
+ and you fetch the samples by an inclusive walk of the tree.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase.GetSamplesForTreeNode(Microsoft.Diagnostics.Tracing.Stacks.CallTreeNode,System.Boolean,System.Func{Microsoft.Diagnostics.Tracing.Stacks.StackSourceSampleIndex,System.Boolean},Microsoft.Diagnostics.Tracing.Stacks.StackSourceFrameIndex)">
+ <summary>
+ To avoid double-counting for byname nodes, with we can be told to exclude any children with a particular ID
+ (the ID of the ByName node itself) if are doing the inclusive case. The goal is to count every reachable
+ tree exactly once. We do this by conceptually 'marking' each node with ID at the top level (when they are
+ enumerated as children of the Byname node), and thus any node with that excludeChildrenWithID is conceptually
+ marked if you encounter it as a child in the tree itself (so you should exclude it). The result is that
+ every node is visited exactly once (without the expense of having a 'visited' bit).
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNode">
+ <summary>
+ Represents a single treeNode in a CallTree
+
+ Each node keeps all the sample with the same path to the root.
+ Each node also remembers its parent (caller) and children (callees).
+ The nodes also keeps the IDs of all its samples (so no information
+ is lost, just sorted by stack). You get at this through the
+ CallTreeNodeBase.GetSamples method.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNode.Caller">
+ <summary>
+ The caller (parent) of this node
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNode.Callees">
+ <summary>
+ The nodes this node calls (its children).
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNode.IsLeaf">
+ <summary>
+ Returns true if Callees is empty.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNode.AllCallees">
+ <summary>
+ AllCallees is an extension of CallTreesNodes to support graphs (e.g. memory heaps).
+ It always starts with the 'normal' Callees, however in addition if we are
+ displaying a Graph, it will also children that were 'pruned' when the graph was
+ transformed into a tree. (by using StackSource.GetRefs).
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNode.HasChildren">
+ <summary>
+ Returns true if AllCallees is non-empty.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNode.IsGraphNode">
+ <summary>
+ Returns true if the call trees came from a graph (thus AllCallees may be strictly larger than Callees)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNode.ToXml(System.IO.TextWriter,System.String)">
+ <summary>
+ Writes an XML representation of the call tree Node it 'writer'
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNode.ToString">
+ <summary>
+ Returns an XML representation of the call tree Node (for debugging);
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNode.GetBrokenStackCount">
+ <summary>
+ Adds up the counts of all nodes called 'BROKEN' nodes in a particular tree node
+
+ This is a utility function.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNode.IndentString(System.Boolean)">
+ <summary>
+ Creates a string that has spaces | and + signs that represent the indentation level
+ for the tree node. (Called from XAML)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNode.FreeMemory(System.Collections.Generic.Stack{Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase})">
+ <summary>
+ Implements CallTreeNodesBase interface
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNode.SortAll(System.Comparison{Microsoft.Diagnostics.Tracing.Stacks.CallTreeNode},Microsoft.Diagnostics.Tracing.Stacks.RecursionGuard)">
+ <summary>
+ Sort the childre of every node in the te
+ </summary>
+ <param name="comparer"></param>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNode.GetCallees">
+ <summary>
+ Some calltrees already fill in their children, others do so lazily, in which case they
+ override this method.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CallTreeNode.FoldNodesUnder(System.Single,System.Collections.Generic.Dictionary{System.Int32,Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase})">
+ <summary>
+ Fold away any nodes having less than 'minInclusiveMetric'. If 'sumByID' is non-null then the
+ only nodes that have a less then the minInclusiveMetric for the whole trace are folded.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Stacks.CallerCalleeNode">
+ <summary>
+ A CallerCalleeNode gives statistics that focus on a NAME. (unlike calltrees that use ID)
+ It takes all stackSource that have callStacks that include that treeNode and compute the metrics for
+ all the callers and all the callees for that treeNode.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CallerCalleeNode.#ctor(System.String,Microsoft.Diagnostics.Tracing.Stacks.CallTree)">
+ <summary>
+ Given a complete call tree, and a Name within that call tree to focus on, create a
+ CallerCalleeNode that represents the single Caller-Callee view for that treeNode.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallerCalleeNode.Callers">
+ <summary>
+ The list of CallTreeNodeBase nodes that called the method represented by this CallerCalleeNode
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CallerCalleeNode.Callees">
+ <summary>
+ The list of CallTreeNodeBase nodes that where called by the method represented by this CallerCalleeNode
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CallerCalleeNode.ToXml(System.IO.TextWriter,System.String)">
+ <summary>
+ wrtites an XML representation of the call tree Node it 'writer'
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CallerCalleeNode.ToString">
+ <summary>
+ Returns an XML representation of the CallerCalleeNode (for debugging);
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CallerCalleeNode.FreeMemory(System.Collections.Generic.Stack{Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase})">
+ <summary>
+ Implements CallTreeNodesBase interface
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CallerCalleeNode.AccumulateSamplesForNode(Microsoft.Diagnostics.Tracing.Stacks.CallTreeNode,System.Int32,Microsoft.Diagnostics.Tracing.Stacks.RecursionGuard)">
+ <summary>
+ A caller callee view is a summation which centers around one 'focus' node which is represented by the CallerCalleeNode.
+ This node has a caller and callee list, and these nodes (as well as the CallerCalleNode itself) represent the aggregation
+ over the entire tree.
+
+ AccumulateSamplesForNode is the routine that takes a part of a aggregated call tree (represented by 'treeNode' and adds
+ in the statistics for that call tree into the CallerCalleeNode aggregations (and its caller and callee lists).
+
+ 'recursionsCount' is the number of times the focus node name has occurred in the path from 'treeNode' to the root. In
+ addition to setting the CallerCalleeNode aggregation, it also returns a 'weightedSummary' inclusive aggregation
+ FOR JUST treeNode (the CallerCalleNode is an aggregation over the entire call tree accumulated so far).
+
+ The key problem for this routine to avoid is double counting of inclusive samples in the face of recursive functions.
+ Thus all samples are weighted by the recursion count before being included in 'weightedSummaryRet (as well as in
+ the CallerCalleeNode and its Callers and Callees).
+
+ An important optimization is the ability to NOT create (but rather reuse) CallTreeNodes when returning weightedSummaryRet.
+ To accomplish this the weightedSummaryScaleRet is needed. To get the correct numerical value for weightedSummaryRet, you
+ actually have to scale values by weightedSummaryScaleRet before use. This allows us to represent weights of 0 (subtree has
+ no calls to the focus node), or cases where the subtree is completely uniform in its weighting (the subtree does not contain
+ any additional focus nodes), by simply returning the tree node itself and scaling it by the recursion count).
+
+ isUniformRet is set to false if anyplace in 'treeNode' does not have the scaling factor weightedSummaryScaleRet. This
+ means the the caller cannot simply scale 'treeNode' by a weight to get weightedSummaryRet.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CallerCalleeNode.Find(System.Collections.Generic.Dictionary{System.String,Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase}@,System.String)">
+ <summary>
+ Find the Caller-Callee treeNode in 'elems' with name 'frameName'. Always succeeds because it
+ creates one if necessary.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Stacks.AggregateCallTreeNode">
+ <summary>
+ AggregateCallTreeNode supports a multi-level caller-callee view.
+
+ It does this by allow you to take any 'focus' node (typically a byname node)
+ and compute a tree of its callers and a tree of its callees. You do this
+ by passing the node of interested to either the 'CallerTree' or 'CalleeTrees'.
+
+ The AggregateCallTreeNode remembers if if is a caller or callee node and its
+ 'Callees' method returns the children (which may in fact be Callers).
+
+ What is nice about 'AggregateCallTreeNode is that it is lazy, and you only
+ form the part of the tree you actually explore. A classic 'caller-callee'
+ view is simply the caller and callee trees only explored to depth 1.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.AggregateCallTreeNode.CallerTree(Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase)">
+ <summary>
+ Given any node (typically a byName node, but it works on any node), Create a
+ tree rooted at 'node' that represents the callers of that node.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.AggregateCallTreeNode.CalleeTree(Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase)">
+ <summary>
+ Given any node (typically a byName node, but it works on any node), Create a
+ tree rooted at 'node' that represents the callees of that node.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.AggregateCallTreeNode.GetTrees(System.Action{Microsoft.Diagnostics.Tracing.Stacks.CallTreeNode})">
+ <summary>
+ Calls 'callback' for each distinct call tree in this node. Note that the same
+ trees can overlap (in the case of recursive functions), so you need a mechanism
+ for visiting a tree only once.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.AggregateCallTreeNode.ToString">
+ <summary>
+ Returns an XML representation of the AggregateCallTreeNode (for debugging);
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.AggregateCallTreeNode.FreeMemory(System.Collections.Generic.Stack{Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase})">
+ <summary>
+ Implementation of CallTreeNodeBase interface
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.AggregateCallTreeNode.GetCallees">
+ <summary>
+ Implementation of CallTreeNode interface
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.AggregateCallTreeNode.MergeCaller(Microsoft.Diagnostics.Tracing.Stacks.CallTreeNode,System.Collections.Generic.List{Microsoft.Diagnostics.Tracing.Stacks.CallTreeNode},System.Int32)">
+ <summary>
+ See m_callerOffset and MergeCallee for more.
+
+ The 'this' node is a AggregateCallTree representing the 'callers' nodes. Like
+ MergeCallee the aggregate node represents a list of CallTreeNodes. However unlike
+ MergeCallee, the list of CallTreeNodes each represent a sample (a complete call stack)
+ and 'callerOffset' indicates how far 'up' that stack is the node of interest.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.AggregateCallTreeNode.MergeCallee(Microsoft.Diagnostics.Tracing.Stacks.CallTreeNode,System.Collections.Generic.List{Microsoft.Diagnostics.Tracing.Stacks.CallTreeNode})">
+ <summary>
+ An aggregateCallTreeNode is exactly that, the sum of several callTrees
+ (each of which represent a number of individual samples). Thus we had to
+ take each sample (which is 'treenode' and merge it into the aggregate.
+ We do this one at a time. Thus we call MergeCallee for each calltree
+ in our list and we find the 'callees' of each of those nodes, and create
+ aggregates for the children (which is in calleeList).
+
+ This routine is not recursive and does not touch most of the tree but
+ it does call SubtractOutTrees which is recursive and may look at a lot
+ of the tree (although we try to minimize this)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.AggregateCallTreeNode.SubtractOutTrees(Microsoft.Diagnostics.Tracing.Stacks.CallTreeNode,Microsoft.Diagnostics.Tracing.Stacks.StackSourceFrameIndex,Microsoft.Diagnostics.Tracing.Stacks.AggregateCallTreeNode)">
+ <summary>
+ Traverse 'treeCallee' and subtract out the inclusive time for any tree that matches 'idToExclude' from the node 'statsRet'.
+ This is needed in AggregateCallTrees because the same trees from the focus node are in the list to aggregate, but are also
+ in the subtree's in various places (and thus are counted twice). We solve this by walking this subtree (in this routine)
+ and subtracting out any nodes that match 'idToExclude'.
+
+ As an optimization this routine also sets the m_recurision bit 'statsRet' if anywhere in 'treeCallee' we do find an id to
+ exclude. That way in a common case (where there is no instances of 'idToExclude') we don't have to actualy walk the
+ tree the second time (we simply know that there is no adjustment necessary.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Stacks.AggregateCallTreeNode.m_trees">
+ <summary>
+ An AggregateCallTree remembers all its samples by maintaining a list of call trees
+ that actually contain the samples that the Aggregate represents. m_trees hold this.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Stacks.AggregateCallTreeNode.m_callerOffset">
+ <summary>
+ AggregateCallTreeNode can represent either a 'callers' tree or a 'callees' tree. For
+ the 'callers' tree case the node represented by the aggregate does NOT have same ID as
+ the tree in the m_trees list. Instead the aggregate is some node 'up the chain' toward
+ the caller. m_callerOffset keeps track of this (it is the same number for all elements
+ in m_trees).
+
+ For callee nodes, this number is not needed. Thus we use a illegal value (-1) to
+ represent that fact that the node is a callee node rather than a caller node.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Stacks.Histogram">
+ <summary>
+ A Histogram is logically an array of floating point values. Often they
+ represent frequency, but it can be some other metric. The X axis can
+ represent different things (time, scenario). It is the HisogramContoller
+ which understands what the X axis is. Histograms know their HistogramController
+ but not the reverse.
+
+ Often Histograms are sparse (most array elements are zero), so the represnetation
+ is designed to optimzed for this case (an array of non-zero index, value pairs).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.Histogram.#ctor(Microsoft.Diagnostics.Tracing.Stacks.HistogramController)">
+ <summary>
+ Create a new histogram. Every histogram needs a controller but these controllers
+ can be shared among many histograms.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.Histogram.AddSample(Microsoft.Diagnostics.Tracing.Stacks.StackSourceSample)">
+ <summary>
+ Add a sample to this histogram.
+ </summary>
+ <param name="sample">The sample to add.</param>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.Histogram.AddMetric(System.Single,System.Int32)">
+ <summary>
+ Add an amount to a bucket in this histogram.
+ </summary>
+ <param name="metric">The amount to add to the bucket.</param>
+ <param name="bucket">The bucket to add to.</param>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.Histogram.AddScaled(Microsoft.Diagnostics.Tracing.Stacks.Histogram,System.Double)">
+ <summary>
+ Computes this = this + histogram * weight in place (this is updated).
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.Histogram.Count">
+ <summary>
+ The number of buckets in this histogram.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.Histogram.Controller">
+ <summary>
+ The <see cref="T:Microsoft.Diagnostics.Tracing.Stacks.HistogramController"/> that controls this histogram.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.Histogram.Item(System.Int32)">
+ <summary>
+ Get the metric contained in a bucket.
+ </summary>
+ <param name="index">The bucket to retrieve.</param>
+ <returns>The metric contained in that bucket.</returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.Histogram.Clone">
+ <summary>
+ Make a copy of this histogram.
+ </summary>
+ <returns>An independent copy of this histogram.</returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.Histogram.ToString">
+ <summary>
+ A string representation (for debugging)
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.Histogram.#ctor(Microsoft.Diagnostics.Tracing.Stacks.Histogram)">
+ <summary>
+ Create a histogram that is a copy of another histogram.
+ </summary>
+ <param name="other">The histogram to copy.</param>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.Histogram.GetEnumerator">
+ <summary>
+ Implementes IEnumerable interface
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.Histogram.System#Collections#IEnumerable#GetEnumerator">
+ <summary>
+ Implementes IEnumerable interface
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.Histogram.GetEnumerable">
+ <summary>
+ Get an IEnumerable that can be used to enumerate the metrics stored in the buckets of this Histogram.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Stacks.Histogram.m_controller">
+ <summary>
+ The controller for this histogram.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Stacks.HistogramController">
+ <summary>
+ A Histogram is conceputually an array of floating point values. A Histogram Controller
+ contains all the information besides the values themselves need to understand the array
+ of floating point value. There are alot of Histograms, however they all tend to share
+ the same histogram controller. Thus Histograms know their Histogram controller, but not
+ the reverse.
+
+ Thus HistogramContoller is a abstract class (we have one for time, and one for scenarios).
+
+ HistogramControllers are responsible for:
+
+ - Adding a sample to the histogram for a node (see <see cref="M:Microsoft.Diagnostics.Tracing.Stacks.HistogramController.AddSample(Microsoft.Diagnostics.Tracing.Stacks.Histogram,Microsoft.Diagnostics.Tracing.Stacks.StackSourceSample)"/>)
+ - Converting a histogram to its string representation see (<see cref="M:Microsoft.Diagnostics.Tracing.Stacks.HistogramController.GetDisplayString(Microsoft.Diagnostics.Tracing.Stacks.Histogram)"/>)
+ - Managing the size and scale of histograms and their corresponding display strings
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.HistogramController.Scale">
+ <summary>
+ The scale factor for histograms controlled by this HistogramController.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.HistogramController.BucketCount">
+ <summary>
+ The number of buckets in each histogram controlled by this HistogramController.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.HistogramController.CharacterCount">
+ <summary>
+ The number of characters in the display string for histograms controlled by this HistogramController.
+ Buckets are a logial concept, where CharacterCount is a visual concept (how many you can see on the
+ screen right now).
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.HistogramController.Tree">
+ <summary>
+ The CallTree managed by this HistogramController.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.HistogramController.InvalidateScale">
+ <summary>
+ Force recalculation of the scale parameter.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.HistogramController.AddSample(Microsoft.Diagnostics.Tracing.Stacks.Histogram,Microsoft.Diagnostics.Tracing.Stacks.StackSourceSample)">
+ <summary>
+ Add a sample to the histogram for a node.
+ </summary>
+ <param name="histogram">The histogram to add this sample to. Must be controlled by this HistogramController.</param>
+ <param name="sample">The sample to add.</param>
+ <remarks>
+ Overriding classes are responsible for extracting the metric, scaling the metric,
+ determining the appropriate bucket or buckets, and adding the metric to the histogram using <see cref="M:Microsoft.Diagnostics.Tracing.Stacks.Histogram.AddMetric(System.Single,System.Int32)"/>.
+ </remarks>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.HistogramController.GetInfoForCharacterRange(Microsoft.Diagnostics.Tracing.Stacks.HistogramCharacterIndex,Microsoft.Diagnostics.Tracing.Stacks.HistogramCharacterIndex,Microsoft.Diagnostics.Tracing.Stacks.Histogram)">
+ <summary>
+ Gets human-readable information about a range of histogram characters.
+ </summary>
+ <param name="start">The start character index (inclusive).</param>
+ <param name="end">The end character index (exclusive).</param>
+ <param name="histogram">The histogram.</param>
+ <returns>A string containing information about the contents of that character range.</returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.HistogramController.GetDisplayString(Microsoft.Diagnostics.Tracing.Stacks.Histogram)">
+ <summary>
+ Convert a histogram into its display string.
+ </summary>
+ <param name="histogram">The histogram to convert to a string.</param>
+ <returns>A string suitable for GUI display.</returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.HistogramController.HistogramString(System.Collections.Generic.IEnumerable{System.Single},System.Int32,System.Double,System.Int32)">
+ <summary>
+ A utility function that turns an array of floats into a ASCII character graph.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.HistogramController.HistogramString(System.Single[],System.Double,System.Int32)">
+ <summary>
+ A utility function that turns an array of floats into a ASCII character graph.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.HistogramController.#ctor(Microsoft.Diagnostics.Tracing.Stacks.CallTree)">
+ <summary>
+ Initialize a new HistogramController.
+ </summary>
+ <param name="tree">The CallTree that this HistogramController controls.</param>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.HistogramController.CalculateScale">
+ <summary>
+ Calculate the scale factor for this histogram.
+ </summary>
+ <returns>The scale factor for this histogram.</returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.HistogramController.CalculateAverageScale(Microsoft.Diagnostics.Tracing.Stacks.Histogram)">
+ <summary>
+ Calculates an average scale factor for a histogram.
+ </summary>
+ <param name="hist">The root histogram to calculate against.</param>
+ <returns>A scale factor that will normalize the maximum value to 200%.</returns>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Stacks.HistogramController.m_scale">
+ <summary>
+ The scale parameter. 0.0 if uncalculated.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Stacks.HistogramCharacterIndex">
+ <summary>
+ An enum representing a displayed histogram bucket (one character in a histogram string).
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Stacks.HistogramCharacterIndex.Invalid">
+ <summary>
+ A HistogramCharacterIndex can be used to represent error conditions
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Stacks.ScenarioHistogramController">
+ <summary>
+ A <see cref="T:Microsoft.Diagnostics.Tracing.Stacks.HistogramController"/> that groups histograms by scenarios.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.ScenarioHistogramController.#ctor(Microsoft.Diagnostics.Tracing.Stacks.CallTree,System.Int32[],System.Int32,System.String[])">
+ <summary>
+ Initialize a new ScenarioHistogramController.
+ </summary>
+ <param name="tree">The CallTree to manage.</param>
+ <param name="scenarios">An ordered array of scenario IDs to display.</param>
+ <param name="totalScenarios">The total number of possible scenarios that can be supplied by the underlying StackSource.
+ This number might be larger than the highest number in <paramref name="scenarios"/>.</param>
+ <param name="scenarioNames">The names of the scenarios (for UI use).</param>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.ScenarioHistogramController.GetScenariosForCharacterIndex(Microsoft.Diagnostics.Tracing.Stacks.HistogramCharacterIndex)">
+ <summary>
+ Get a list of scenarios contained in a given bucket.
+ </summary>
+ <param name="bucket">The bucket to look up.</param>
+ <returns>The scenarios contained in that bucket.</returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.ScenarioHistogramController.GetScenariosForCharacterRange(Microsoft.Diagnostics.Tracing.Stacks.HistogramCharacterIndex,Microsoft.Diagnostics.Tracing.Stacks.HistogramCharacterIndex)">
+ <summary>
+ Get a list of scenarios contained in a given bucket range.
+ </summary>
+ <param name="start">The start of the bucket range (inclusive).</param>
+ <param name="end">The end of the bucket range (exclusive).</param>
+ <returns>The scenarios contained in that range of buckets.</returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.ScenarioHistogramController.AddSample(Microsoft.Diagnostics.Tracing.Stacks.Histogram,Microsoft.Diagnostics.Tracing.Stacks.StackSourceSample)">
+ <summary>
+ Add a sample to a histogram controlled by this HistogramController.
+ </summary>
+ <param name="histogram">The histogram to add the sample to.</param>
+ <param name="sample">The sample to add.</param>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.ScenarioHistogramController.GetNameForScenario(System.Int32)">
+ <summary>
+ Get the human-readable name for a scenario.
+ </summary>
+ <param name="scenario">The ID of the scenario to look up.</param>
+ <returns>The human-readable name for that scenario.</returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.ScenarioHistogramController.GetInfoForCharacterRange(Microsoft.Diagnostics.Tracing.Stacks.HistogramCharacterIndex,Microsoft.Diagnostics.Tracing.Stacks.HistogramCharacterIndex,Microsoft.Diagnostics.Tracing.Stacks.Histogram)">
+ <summary>
+ Get the human-readable names for all scenarios contained in a range of histogram characters.
+ </summary>
+ <param name="start">The (inclusive) start index of the range.</param>
+ <param name="end">The (exclusive) end index of the range.</param>
+ <param name="histogram">The histogram.</param>
+ <returns>A comma-separated list of scenario names contained in that range.</returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.ScenarioHistogramController.GetDisplayString(Microsoft.Diagnostics.Tracing.Stacks.Histogram)">
+ <summary>
+ Convert a histogram into a string suitable for UI display.
+ </summary>
+ <param name="histogram">The histogram to convert.</param>
+ <returns>A string representing the histogram that is suitable for UI display.</returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.ScenarioHistogramController.CalculateScale">
+ <summary>
+ Calculate the scale factor for all histograms controlled by this ScenarioHistogramController.
+ </summary>
+ <returns>
+ In the current implementation, returns a scale that normalizes 100% to half of the maximum value at the root.
+ </returns>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Stacks.ScenarioHistogramController.m_characterFromScenario">
+ <summary>
+ An array mapping each scenario to a bucket.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Stacks.ScenarioHistogramController.m_scenariosFromCharacter">
+ <summary>
+ An array mapping each bucket to a list of scenarios.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Stacks.ScenarioHistogramController.m_scenarioNames">
+ <summary>
+ An array mapping each scenario to its name.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Stacks.TimeHistogramController">
+ <summary>
+ A HistogramController holds all the information to understand the buckets of a histogram
+ (basically everything except the array of metrics itself. For time this is the
+ start and end time
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.TimeHistogramController.#ctor(Microsoft.Diagnostics.Tracing.Stacks.CallTree,System.Double,System.Double)">
+ <summary>
+ Create a new TimeHistogramController.
+ </summary>
+ <param name="tree">The CallTree to control with this controller.</param>
+ <param name="start">The start time of the histogram.</param>
+ <param name="end">The end time of the histogram.</param>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.TimeHistogramController.Start">
+ <summary>
+ The start time of the histogram.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.TimeHistogramController.End">
+ <summary>
+ The end time of the histogram.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.TimeHistogramController.GetStartTimeForBucket(Microsoft.Diagnostics.Tracing.Stacks.HistogramCharacterIndex)">
+ <summary>
+ Gets the start time for the histogram bucket represented by a character.
+ </summary>
+ <param name="bucket">The index of the character to look up.</param>
+ <returns>The start time of the bucket represented by the character.</returns>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.TimeHistogramController.BucketDuration">
+ <summary>
+ The duration of time represented by each bucket.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.TimeHistogramController.CalculateScale">
+ <summary>
+ Implements HistogramController interface
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.TimeHistogramController.AddSample(Microsoft.Diagnostics.Tracing.Stacks.Histogram,Microsoft.Diagnostics.Tracing.Stacks.StackSourceSample)">
+ <summary>
+ Implements HistogramController interface
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.TimeHistogramController.GetInfoForCharacterRange(Microsoft.Diagnostics.Tracing.Stacks.HistogramCharacterIndex,Microsoft.Diagnostics.Tracing.Stacks.HistogramCharacterIndex,Microsoft.Diagnostics.Tracing.Stacks.Histogram)">
+ <summary>
+ Implements HistogramController interface
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.TimeHistogramController.GetDisplayString(Microsoft.Diagnostics.Tracing.Stacks.Histogram)">
+ <summary>
+ Implements HistogramController interface
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Stacks.RecursionGuard">
+ <summary>
+ This structure provides a clean API for a lightweight recursion stack guard to prevent StackOverflow exceptions
+ We do ultimately do a stack-overflow to prevent infinite recursion, but it is now under our
+ control and much larger than you may get on any one thread stack.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Stacks.RecursionGuard.SingleThreadRecursionLimit">
+ <summary>
+ For recursive methods that need to process deep stacks, this constant defines the limit for recursion within
+ a single thread. After reaching this limit, methods need to trampoline to a new thread before continuing to
+ recurse.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Stacks.RecursionGuard.MaxResets">
+ <summary>
+ To prevent run-away recursion, fail after this depth (in this case 20*400 = 8K)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.RecursionGuard.Depth">
+ <summary>
+ The amount of recursion we have currently done.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.RecursionGuard.Entry">
+ <summary>
+ Gets the recursion guard for entering a recursive method.
+ </summary>
+ <remarks>
+ This is equivalent to the default <see cref="T:Microsoft.Diagnostics.Tracing.Stacks.RecursionGuard"/> value.
+ </remarks>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.RecursionGuard.Recurse">
+ <summary>
+ Gets an updated recursion guard for recursing into a method.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.RecursionGuard.ResetOnNewThread">
+ <summary>
+ Gets an updated recursion guard for continuing execution on a new thread.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.RecursionGuard.RequiresNewThread">
+ <summary>
+ Gets a value indicating whether the current operation has exceeded the recursion depth for a single thread,
+ and needs to continue executing on a new thread.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.Formats.SpeedScopeStackSourceWriter.WriteStackViewAsJson(Microsoft.Diagnostics.Tracing.Stacks.StackSource,System.String)">
+ <summary>
+ exports provided StackSource to a https://www.speedscope.app/ format
+ schema: https://www.speedscope.app/file-format-schema.json
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.Formats.SpeedScopeStackSourceWriter.GetSortedSamplesPerThread(Microsoft.Diagnostics.Tracing.Stacks.StackSource)">
+ <summary>
+ we want to identify the thread for every sample to prevent from
+ overlaping of samples for the concurrent code so we group the samples by Threads
+ this method also sorts the samples by relative time (ascending)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.Formats.SpeedScopeStackSourceWriter.MakeSureSamplesDoNotOverlap(System.Collections.Generic.List{Microsoft.Diagnostics.Tracing.Stacks.Formats.SpeedScopeStackSourceWriter.Sample})">
+ <summary>
+ this method fixes the metrics of the samples to make sure they don't overlap
+ it's very common that following samples overlap by a very small number like 0.0000000000156
+ we can't allow for that to happen because the SpeedScope can't draw such samples
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.Formats.SpeedScopeStackSourceWriter.WalkTheStackAndExpandSamples(Microsoft.Diagnostics.Tracing.Stacks.StackSource,System.Collections.Generic.IEnumerable{Microsoft.Diagnostics.Tracing.Stacks.Formats.SpeedScopeStackSourceWriter.Sample},System.Collections.Generic.Dictionary{System.String,System.Int32})">
+ <summary>
+ all the samples that we have are leafs (last sample in the call stack)
+ this method expands those samples to full information
+ it walks the stack up to the begining and adds a sample for every method on the stack
+ it's required to build full information
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.Formats.SpeedScopeStackSourceWriter.GetAggregatedOrderedProfileEvents(System.Collections.Generic.IReadOnlyDictionary{System.Int32,System.Collections.Generic.List{Microsoft.Diagnostics.Tracing.Stacks.Formats.SpeedScopeStackSourceWriter.Sample}})">
+ <summary>
+ this method aggregates all the singular samples to continuous events
+ example: samples for Main taken at time 0.1 0.2 0.3 0.4 0.5
+ are gonna be translated to Main start at 0.1 stop at 0.5
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.Formats.SpeedScopeStackSourceWriter.AreNotContinuous(Microsoft.Diagnostics.Tracing.Stacks.Formats.SpeedScopeStackSourceWriter.Sample,Microsoft.Diagnostics.Tracing.Stacks.Formats.SpeedScopeStackSourceWriter.Sample)">
+ <summary>
+ this method checks if both samples do NOT belong to the same profile event
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.Formats.SpeedScopeStackSourceWriter.AddEvents(System.Collections.Generic.List{Microsoft.Diagnostics.Tracing.Stacks.Formats.SpeedScopeStackSourceWriter.ProfileEvent},Microsoft.Diagnostics.Tracing.Stacks.Formats.SpeedScopeStackSourceWriter.Sample,Microsoft.Diagnostics.Tracing.Stacks.Formats.SpeedScopeStackSourceWriter.Sample,System.Int32)">
+ <summary>
+ this method adds a new profile event for provided samples
+ it also make sure that a profile event does not open and close at the same time (would be ignored by SpeedScope)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.Formats.SpeedScopeStackSourceWriter.OrderForExport(System.Collections.Generic.IEnumerable{Microsoft.Diagnostics.Tracing.Stacks.Formats.SpeedScopeStackSourceWriter.ProfileEvent})">
+ <summary>
+ this method orders the profile events in the order required by SpeedScope
+ it's just the order of drawing the time graph
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.Formats.SpeedScopeStackSourceWriter.WriteToFile(System.Collections.Generic.IReadOnlyDictionary{System.String,System.Collections.Generic.IReadOnlyList{Microsoft.Diagnostics.Tracing.Stacks.Formats.SpeedScopeStackSourceWriter.ProfileEvent}},System.Collections.Generic.IReadOnlyList{System.String},System.IO.TextWriter,System.String)">
+ <summary>
+ writes pre-calculated data to SpeedScope format
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Stacks.StackSource">
+ <summary>
+ A stack source is a logically a list of StackSourceSamples. Each sample has a metric and stack (hence the name StackSource)
+ The stacks are represented as indexes that the StackSourceStacks base class can resolve into frame names and stack chains.
+ The result is very efficient (no string processing) way of processing the conceptual list of stack samples.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.StackSource.ProduceSamples(System.Action{Microsoft.Diagnostics.Tracing.Stacks.StackSourceSample})">
+ <summary>
+ Call 'callback' on every sample in the StackSource. Will be done linearly and only
+ one callback will be active simultaneously.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.StackSource.ForEach(System.Action{Microsoft.Diagnostics.Tracing.Stacks.StackSourceSample})">
+ <summary>
+ Call 'callback' on every sample in the StackSource. Will be done linearly and only
+ one callback will be active simultaneously.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.StackSource.SamplesImmutable">
+ <summary>
+ If this is overridden to return true, then during the 'Foeach' callback you can save references
+ to the samples you are given because they will not be overridden by the stack source. If this is
+ false you must make a copy of the sample if you with to remember it.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.StackSource.ParallelForEach(System.Action{Microsoft.Diagnostics.Tracing.Stacks.StackSourceSample},System.Int32)">
+ <summary>
+ Also called 'callback' on every sample in the StackSource however there may be more than
+ one callback running simultaneously. Thus 'callback' must be thread-safe and the order
+ of the samples should not matter. If desiredParallelism == 0 (the default) then the
+ implementation will choose a good value of parallelism.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.StackSource.BaseStackSource">
+ <summary>
+ If this stack source is a source that simply groups another source, get the base source. It will return
+ itself if there is no base source.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.StackSource.GetSampleByIndex(Microsoft.Diagnostics.Tracing.Stacks.StackSourceSampleIndex)">
+ <summary>
+ If this source supports fetching the samples by index, this is how you get it. Like ForEach the sample that
+ is returned is not allowed to be modified. Also the returned sample will become invalid the next time GetSampleIndex
+ is called (we reuse the StackSourceSample on each call)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.StackSource.SampleIndexLimit">
+ <summary>
+ Returns the limit on stack samples indexes (all index are strictly less than this). Returns 0 if unknown.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.StackSource.SampleTimeRelativeMSecLimit">
+ <summary>
+ Returns a time which is greater than or equal the timestamp of any sample in the StackSource. Returns 0 if unknown.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.StackSource.ScenarioCount">
+ <summary>
+ In addition to Time and Metric a sample can have a Scneario number associated with it. ScenarioCount
+ returns the number of such scnearios. Returning 0 implies no scenario support.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.StackSource.SamplingRate">
+ <summary>
+ StackSources can optionally support a sampling rate. If the source supports it it will return
+ non-null for the current sampling rate (1 if it is doing nothing). Sampling is a way of speeding
+ things up. If you sample at a rate of 10, it means that only one out of every 10 samples is actually
+ produced by 'ForEach'. Note that it is expected that when the sampling rate is set the
+ source will correspondingly adjust the CountMultiplier, so that the total will look like no sampling
+ is occuring
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.StackSource.IsGraphSource">
+ <summary>
+ If each 'callstack' is really a node in a graph (like MemoryGraphStackSource)
+ Then return true. If this returns true 'GetRefs' works.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.StackSource.GetReferences(Microsoft.Diagnostics.Tracing.Stacks.StackSourceSampleIndex,Microsoft.Diagnostics.Tracing.Stacks.RefDirection,System.Action{Microsoft.Diagnostics.Tracing.Stacks.StackSourceSampleIndex})">
+ <summary>
+ Only used if IsGraphSource==true. If 'direction' is 'From' Calls 'callback' for node that is referred to FROM nodeIndex.
+ If 'direction' is 'To' then it calls 'callback' for every node that refers TO nodeIndex. This API returns references
+ that are not necessarily a tree (they can for DAGs or have cycles).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.StackSource.Dump(System.String)">
+ <summary>
+ Dump the stack source to a file as XML. Used for debugging.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.StackSource.Dump(System.IO.TextWriter)">
+ <summary>
+ Dump the stack source to a TextWriter as XML. Used for debugging.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Stacks.RefDirection">
+ <summary>
+ RefDirection represents the direction of the references in a heap graph.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Stacks.RefDirection.From">
+ <summary>
+ Indicates that you are interested in referneces FROM the node of interest
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Stacks.RefDirection.To">
+ <summary>
+ Indicates that you are interested in referneces TO the node of interest
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Stacks.StackSourceStacks">
+ <summary>
+ Samples have stacks (lists of frames, each frame contains a name) associated with them. This interface allows you to get
+ at this information. We don't use normal objects to represent these but rather give each stack (and frame) a unique
+ (dense) index. This has a number of advantages over using objects to represent the stack.
+
+ * Indexes are very serialization friendly, and this data will be presisted. Thus indexes are the natural form for data on disk.
+ * It allows the data to be read from the serialized format (disk) lazily in a very straightfoward fashion, keeping only the
+ hottest elements in memory.
+ * Users of this API can associate additional data with the call stacks or frames trivially and efficiently simply by
+ having an array indexed by the stack or frame index.
+
+ So effectively a StackSourceStacks is simply a set of 'Get' methods that allow you to look up information given a Stack or
+ frame index.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.StackSourceStacks.GetCallerIndex(Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex)">
+ <summary>
+ Given a call stack, return the call stack of the caller. This function can return StackSourceCallStackIndex.Discard
+ which means that this sample should be discarded.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.StackSourceStacks.GetFrameIndex(Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex)">
+ <summary>
+ For efficiency, m_frames are assumed have a integer ID instead of a string name that
+ is unique to the frame. Note that it is expected that GetFrameIndex(x) == GetFrameId(y)
+ then GetFrameName(x) == GetFrameName(y). The converse does NOT have to be true (you
+ can reused the same name for distinct m_frames, however this can be confusing to your
+ users, so be careful.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.StackSourceStacks.GetNumberOfFoldedFrames(Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex)">
+ <summary>
+ FilterStackSources can combine more than one frame into a given frame. It is useful to know
+ how many times this happened. Returning 0 means no combining happened. This metric does
+ not include grouping, but only folding.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.StackSourceStacks.GetFrameName(Microsoft.Diagnostics.Tracing.Stacks.StackSourceFrameIndex,System.Boolean)">
+ <summary>
+ Get the frame name from the FrameIndex. If 'verboseName' is true then full module path is included.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.StackSourceStacks.CallStackIndexLimit">
+ <summary>
+ all StackSourceCallStackIndex are guaranteed to be less than this. Allocate an array of this size to associate side information
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.StackSourceStacks.CallFrameIndexLimit">
+ <summary>
+ all StackSourceFrameIndex are guaranteed to be less than this. Allocate an array of this size to associate side information
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.StackSourceStacks.OnlyManagedCodeStacks">
+ <summary>
+ True if it only has managed code stacks. Otherwise false.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.StackSourceStacks.StackDepth(Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex)">
+ <summary>
+ Computes the depth (number of callers), associated with callStackIndex. This routine is O(n) and mostly useful for debugging.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.StackSourceStacks.ToString(Microsoft.Diagnostics.Tracing.Stacks.StackSourceSample,System.Text.StringBuilder)">
+ <summary>
+ Returns an XML string representation of a 'sample'. For debugging.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.StackSourceStacks.ToString(Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex)">
+ <summary>
+ Returns an XML string representation of a 'callStackIndex'. For debugging.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Stacks.StackSourceSample">
+ <summary>
+ StackSourceSample represents a single sample that has a stack. It has a number of predefined data items associate with it
+ including a stack, a metric and a time as well as other optional fields. Note that all its properties are read-write.
+ It is basically a named tuple.
+
+ StackSource.ProductSamples push these.
+
+ In general StackSourceSample are NOT immutable but expected to be overwritted frequently. Thus you need to copy
+ the sample if you want to keep a refernece to it.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.StackSourceSample.StackIndex">
+ <summary>
+ The Stack associated with the sample
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.StackSourceSample.Metric">
+ <summary>
+ The metric (cost) associated with the sample
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.StackSourceSample.SampleIndex">
+ <summary>
+ If the source supports fetching samples by some ID, then SampleIndex returns this ID for the sample and
+ GetSampleByIndex is the API that converts this index into a sample again.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.StackSourceSample.TimeRelativeMSec">
+ <summary>
+ The time associated with the sample. (can be left 0)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.StackSourceSample.Count">
+ <summary>
+ Normally the count of a sample is 1, however when you take a statistical sample, and you also have
+ other constraints (like you do when you are going a sample of heap memory), you may need to have the
+ count adjusted to something else.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.StackSourceSample.Scenario">
+ <summary>
+ A scenario is simply a integer that represents some group the sample belongs to.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.StackSourceSample.ToString">
+ <summary>
+ Returns an XML string representing the sample
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.StackSourceSample.ToString(Microsoft.Diagnostics.Tracing.Stacks.StackSourceStacks)">
+ <summary>
+ Returns an XML string representing the sample, howevever this one can actually expand the stack because it is given the source
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.StackSourceSample.#ctor(Microsoft.Diagnostics.Tracing.Stacks.StackSource)">
+ <summary>
+ Create a StackSourceSample which is associated with 'source'.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.StackSourceSample.#ctor(Microsoft.Diagnostics.Tracing.Stacks.StackSourceSample)">
+ <summary>
+ Copy a StackSourceSample from 'template'
+ </summary>
+ <param name="template"></param>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Stacks.StackSourceSampleIndex">
+ <summary>
+ Identifies a particular sample from the sample source, it allows 3rd parties to attach additional
+ information to the sample by creating an array indexed by sampleIndex.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Stacks.StackSourceSampleIndex.Invalid">
+ <summary>
+ Returned when no appropriate Sample exists.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex">
+ <summary>
+ An opaque handle that are 1-1 with a complete call stack
+
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex.Start">
+ <summary>
+ The first real call stack index (after the pseudo-ones before this)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex.Invalid">
+ <summary>
+ Returned when no appropriate CallStack exists. (Top of stack)
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Stacks.StackSourceFrameIndex">
+ <summary>
+ Identifies a particular frame within a stack It represents a particular instruction pointer (IP) location
+ in the code or a group of such locations.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Stacks.StackSourceFrameIndex.Root">
+ <summary>
+ Pseduo-node representing the root of all stacks
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Stacks.StackSourceFrameIndex.Broken">
+ <summary>
+ Pseduo-frame that represents the caller of all broken stacks.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Stacks.StackSourceFrameIndex.Unknown">
+ <summary>
+ Unknown what to do (Must be before the 'special ones below') // Non negative represents normal m_frames (e.g. names of methods)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Stacks.StackSourceFrameIndex.Overhead">
+ <summary>
+ Profiling overhead (rundown)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Stacks.StackSourceFrameIndex.Start">
+ <summary>
+ The first real call stack index (after the pseudo-ones before this)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Stacks.StackSourceFrameIndex.Invalid">
+ <summary>
+ Should not happen (uninitialized) (also means completely folded away)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Stacks.StackSourceFrameIndex.Discard">
+ <summary>
+ Sample has been filtered out (useful for filtering stack sources)
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Stacks.StackSourceModuleIndex">
+ <summary>
+ A StackSourceModuleIndex uniquely identifies a module to the stack source.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Stacks.StackSourceModuleIndex.Start">
+ <summary>
+ Start is where 'ordinary' module indexes start.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Stacks.StackSourceModuleIndex.Invalid">
+ <summary>
+ Invalid is a module index that is never used and can be used to signal error conditions.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Stacks.CopyStackSource">
+ <summary>
+ This stack source takes another and copies out all its events. This allows you to 'replay' the source
+ efficiently when the original source only does this inefficiently.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CopyStackSource.#ctor">
+ <summary>
+ Create a CopyStackSource that has no samples in it. It can never have samples so it is only useful as a placeholder.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CopyStackSource.#ctor(Microsoft.Diagnostics.Tracing.Stacks.StackSourceStacks)">
+ <summary>
+ Create a CopyStackSource that you can add samples which use indexes that 'sourceStacks' can decode. All samples
+ added to the stack source must only refer to this StackSourceStacks
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CopyStackSource.AddSample(Microsoft.Diagnostics.Tracing.Stacks.StackSourceSample)">
+ <summary>
+ Add a sample to stack source. it will clone 'sample' so sample can be overwritten after this method returns.
+ It is an error if 'sample' does not used the StackSourceStacks passed to the CopyStackSource at construction.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CopyStackSource.Clone(Microsoft.Diagnostics.Tracing.Stacks.StackSource)">
+ <summary>
+ Create a clone of the given stack soruce.
+ </summary>
+ <param name="source"></param>
+ <returns></returns>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CopyStackSource.SourceStacks">
+ <summary>
+ Returns the StackSourceStacks that can interpret indexes for this stack source.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CopyStackSource.GetSampleByIndex(Microsoft.Diagnostics.Tracing.Stacks.StackSourceSampleIndex)">
+ <summary>
+ Implementation of the StackSource interface
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CopyStackSource.SampleIndexLimit">
+ <summary>
+ Implementation of the StackSource interface
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CopyStackSource.SampleTimeRelativeMSecLimit">
+ <summary>
+ Implementation of the StackSource interface
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CopyStackSource.ForEach(System.Action{Microsoft.Diagnostics.Tracing.Stacks.StackSourceSample})">
+ <summary>
+ Implementation of the StackSource interface
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CopyStackSource.SamplesImmutable">
+ <summary>
+ Implementation of the StackSource interface
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CopyStackSource.GetCallerIndex(Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex)">
+ <summary>
+ Implementation of the StackSource interface
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CopyStackSource.GetFrameIndex(Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex)">
+ <summary>
+ Implementation of the StackSource interface
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.CopyStackSource.GetFrameName(Microsoft.Diagnostics.Tracing.Stacks.StackSourceFrameIndex,System.Boolean)">
+ <summary>
+ Implementation of the StackSource interface
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CopyStackSource.CallStackIndexLimit">
+ <summary>
+ Implementation of the StackSource interface
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.CopyStackSource.CallFrameIndexLimit">
+ <summary>
+ Implementation of the StackSource interface
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Stacks.InternStackSource">
+ <summary>
+ Like CopyStackSource InternStackSource copies the samples. however unlike CopyStackSource
+ InternStackSource copies all the information in the stacks too (mapping stack indexes to names)
+ Thus it never refers to the original source again). It also interns the stacks making for
+ an efficient representation of the data. This is useful when the original source is expensive
+ to iterate over.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.InternStackSource.Diff(Microsoft.Diagnostics.Tracing.Stacks.StackSource,Microsoft.Diagnostics.Tracing.Stacks.StackSource)">
+ <summary>
+ Compute the difference between two sources of stacks.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.InternStackSource.Diff(Microsoft.Diagnostics.Tracing.Stacks.StackSource,Microsoft.Diagnostics.Tracing.Stacks.StackSourceStacks,Microsoft.Diagnostics.Tracing.Stacks.StackSource,Microsoft.Diagnostics.Tracing.Stacks.StackSourceStacks)">
+ <summary>
+ Compute only the delta of source from the baseline. This variation allows you to specify
+ the unfiltered names (the sourceStacks and baselineStacks) but otherwise keep the filtering.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.InternStackSource.#ctor(Microsoft.Diagnostics.Tracing.Stacks.StackSource,Microsoft.Diagnostics.Tracing.Stacks.StackSourceStacks)">
+ <summary>
+ Create a new stack source that can create things out of nothing.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.InternStackSource.#ctor">
+ <summary>
+ Create a new InternStackSource
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.InternStackSource.Interner">
+ <summary>
+ Returns the Interner, which is the class that holds the name->index mappings that that every
+ name has a unique index.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.InternStackSource.GetCallerIndex(Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex)">
+ <summary>
+ Implementation of the StackSource interface
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.InternStackSource.GetFrameIndex(Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex)">
+ <summary>
+ Implementation of the StackSource interface
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.InternStackSource.GetFrameName(Microsoft.Diagnostics.Tracing.Stacks.StackSourceFrameIndex,System.Boolean)">
+ <summary>
+ Implementation of the StackSource interface
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.InternStackSource.CallStackIndexLimit">
+ <summary>
+ Implementation of the StackSource interface
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.InternStackSource.CallFrameIndexLimit">
+ <summary>
+ Implementation of the StackSource interface
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.InternStackSource.InternFullStackFromSource(Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex,Microsoft.Diagnostics.Tracing.Stacks.StackSourceStacks,System.Int32)">
+ <summary>
+ InternFullStackFromSource will take a call stack 'baseCallStackIndex' from the source 'source' and completely copy it into
+ the intern stack source (interning along the way of course). Logically baseCallStackIndex has NOTHING to do with any of the
+ call stack indexes in the intern stack source.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner">
+ <summary>
+ StackSourceInterner is a helper class that knows how to intern module, frame and call stacks.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.#ctor(System.Int32,System.Int32,System.Int32,Microsoft.Diagnostics.Tracing.Stacks.StackSourceFrameIndex,Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex,Microsoft.Diagnostics.Tracing.Stacks.StackSourceModuleIndex)">
+ <summary>
+ Create a new StackSourceInterner. Optionally supply estimates on how many items you need and where the frame, callstack and module indexes start.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.DoneInterning">
+ <summary>
+ As an optimization, if you are done adding new nodes, then you can call this routine can abandon
+ some tables only needed during the interning phase.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.CallStackStartIndex">
+ <summary>
+ The CallStackStartIndex value passed to the constructor
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.FrameStartIndex">
+ <summary>
+ The FrameStartIndex value passed to the constructor
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.GetCallerIndex(Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex)">
+ <summary>
+ Given a StackSourceCallStackIndex return the StackSourceCallStackIndex of the caller
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.GetFrameIndex(Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex)">
+ <summary>
+ Given a StackSourceCallStackIndex return the StackSourceFrameIndex for the Frame associated
+ with the top call stack
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.GetFrameName(Microsoft.Diagnostics.Tracing.Stacks.StackSourceFrameIndex,System.Boolean)">
+ <summary>
+ Get a name from a frame index. If the frame index is a
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.GetModuleIndex(Microsoft.Diagnostics.Tracing.Stacks.StackSourceFrameIndex)">
+ <summary>
+ Given a StackSourceFrameIndex return the StackSourceModuleIndex associated with the frame
+ </summary>
+ <param name="frameIndex"></param>
+ <returns></returns>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.FrameNameLookup">
+ <summary>
+ If you intern frames as derived frames, when GetFrameName is called the interner needs to know
+ how to look up the derived frame from its index. This is the function that is called.
+
+ It is called with the frame index and a boolean which indicates whether the full path of the module
+ should be specified, and returns the frame string.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.ModuleIntern(System.String)">
+ <summary>
+ Lookup or create a StackSourceModuleIndex for moduleName
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.FrameIntern(System.String,Microsoft.Diagnostics.Tracing.Stacks.StackSourceModuleIndex)">
+ <summary>
+ Lookup or create a StackSourceFrameIndex for frame with the name frameName and the module identified by moduleIndex
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.FrameIntern(Microsoft.Diagnostics.Tracing.Stacks.StackSourceFrameIndex,System.String)">
+ <summary>
+ You can also create frames out of other frames using this method. Given an existing frame, and
+ a suffix 'frameSuffix'
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.CallStackIntern(Microsoft.Diagnostics.Tracing.Stacks.StackSourceFrameIndex,Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex)">
+ <summary>
+ Lookup or create a StackSourceCallStackIndex for a call stack with the frame identified frameIndex and caller identified by callerIndex
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.FrameCount">
+ <summary>
+ The current number of unique frames that have been interned so far
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.CallStackCount">
+ <summary>
+ The current number of unique call stacks that have been interned so far
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.InternTable`1">
+ <summary>
+ A specialized hash table for interning.
+ It loosely follows the implementation of <see cref="T:System.Collections.Generic.Dictionary`2"/> but with
+ several key allowances for known usage patterns:
+ 1. We don't store the hashcode on each entry on the assumption that values can be compared
+ as quickly as recomputing hash codes. The downside to that is that the hash codes must
+ be recomputed whenever the map is resized, but that is very cheap.
+ 2. We supply a single <see cref="M:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.InternTable`1.Intern(`0)"/> method (instead of a TryGetValue
+ followed by an Add) so that a hashcode computation is saved in the case of a "miss".
+ 3. We don't support removal. This means we don't need to keep track of a free list and neither
+ do we need sentinel values. This also allows us to use all 32 bits of the hash-code (where
+ <see cref="T:System.Collections.Generic.Dictionary`2"/> uses only 31 bits, reserving -1 to indicate a freed
+ entry. The only sentinel value is in the <see cref="F:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.InternTable`1._buckets"/> array to indicate a free
+ bucket.
+ 4. We return an index (of the interned item) to the caller which can be used for constant-time
+ look-up in the table via <see cref="P:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.InternTable`1.Item(System.Int32)"/>.
+ 5. To free up memory, the caller can call <see cref="M:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.InternTable`1.DoneInterning"/>. The entries themselves
+ are stored separately from the indexing parts of the table so that the latter can be dropped
+ easily.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.InternTable`1.#ctor(System.Int32)">
+ <summary>
+ Construct the intern map
+ </summary>
+ <param name="initialCapacity">The estimated capacity of the map.</param>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.InternTable`1.Count">
+ <summary>
+ Count of interned values.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.InternTable`1.Item(System.Int32)">
+ <summary>
+ Access an element by index.
+ </summary>
+ <param name="index">The zero-based index of the desired entry.</param>
+ <returns>The entry at the requested index.</returns>
+ <remarks>For performance, in Release mode we do no range checking on <paramref name="index"/>, so it is possible to
+ access an entry beyond <see cref="P:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.InternTable`1.Count"/> but prior to the maximum capacity of the array.</remarks>
+ <exception cref="T:System.IndexOutOfRangeException"><paramref name="index"/> was less than zero or greater than the capacity.</exception>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.InternTable`1.Intern(`0)">
+ <summary>
+ Intern a value. If the same value has been seen before
+ then this returns the index of the previously seen entry. If not, a new entry
+ is added and this returns the index of the newly added entry.
+ </summary>
+ <param name="value">The candidate value.</param>
+ <returns>The index of the interned entry.</returns>
+ <exception cref="T:System.NullReferenceException">This routine was called after calling <see cref="M:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.InternTable`1.DoneInterning"/>.</exception>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.InternTable`1.DoneInterning">
+ <summary>
+ As an optimization, if you are done calling <see cref="M:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.InternTable`1.Intern(`0)"/>, then you can call this
+ to free up some memory.
+ </summary>
+ <remarks>After calling this, you can still call <see cref="P:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.InternTable`1.Item(System.Int32)"/>. However, if you try to
+ call <see cref="M:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.InternTable`1.Intern(`0)"/> you will get a <see cref="T:System.NullReferenceException"/>.</remarks>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.InternTable`1.Bucket">
+ <summary>
+ Elements representing the structure of the hash table. The structure is
+ a collection of singly linked lists, one list per 'bucket' where a
+ bucket number is selected by taking the hash code of an incoming item
+ and mapping it onto the <see cref="F:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.InternTable`1._buckets"/> array (see <see cref="M:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.InternTable`1.BucketNumberFromValue(`0)"/>).
+ </summary>
+ <remarks>
+ Caution: For a given <see cref="T:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.InternTable`1.Bucket"/>, <see cref="F:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.InternTable`1.Bucket._head"/> and
+ <see cref="F:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.InternTable`1.Bucket._next"/> are UNRELATED to each other. Logically, you can
+ think of <see cref="F:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.InternTable`1.Bucket._next"/> as being part of a value in the
+ <see cref="F:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.InternTable`1._entries"/> table. (We don't actually do that in order to
+ support <see cref="M:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.InternTable`1.DoneInterning"/> efficiently.)
+ To find the next element in the linked list, you should NOT simply
+ look at <see cref="F:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.InternTable`1.Bucket._next"/>. Instead, you should first look up the
+ <see cref="T:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.InternTable`1.Bucket"/> in the <see cref="F:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.InternTable`1._buckets"/> array indexed by
+ <see cref="F:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.InternTable`1.Bucket._head"/> and look at the <see cref="F:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.InternTable`1.Bucket._next"/> field of that.
+ </remarks>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.InternTable`1.Bucket._head">
+ <summary>
+ Index into the <see cref="F:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.InternTable`1._entries"/> array of the head item in the linked list or
+ -1 to indicate an empty bucket.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.InternTable`1.Bucket._next">
+ <summary>
+ Index into the <see cref="F:Microsoft.Diagnostics.Tracing.Stacks.StackSourceInterner.InternTable`1._buckets"/> array of the next item in the linked list or
+ -1 to indicate that this is the last item.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Stacks.TraceEventStackSource">
+ <summary>
+ TraceEventStackSource is an implementation of a StackSource for ETW information (TraceLog)
+ It takes a TraceEvents (which is a list of TraceEvents you get get from a TraceLog) and
+ implements that StackSource protocol for them. (thus any code needing a StackSource
+ can then work on it.
+
+ The key to the implementation is how StackSourceFrameIndex and StackSourceCallStackIndex
+ (part of the StackSource protocol) are mapped to the Indexes in TraceLog. Here is
+ the mapping.
+
+ TraceEventStackSource create the following meaning for the StackSourceCallStackIndex
+
+ * The call stacks ID consists of the following ranges concatenated together.
+ * a small set of fixed Pseudo stacks (Start marks the end of these)
+ * CallStackIndex
+ * ThreadIndex
+ * ProcessIndex
+ * BrokenStacks (One per thread)
+ * Stacks for CPU samples without explicit stacks (we make 1 element stacks out of them)
+
+ TraceEventStackSource create the following meaning for the StackSourceFrameIndex
+
+ The frame ID consists of the following ranges concatenated together.
+ * a small fixed number of Pseudo frame (Broken, and Unknown)
+ * MaxCodeAddressIndex - something with a TraceCodeAddress.
+ * ThreadIndex - ETW stacks don't have a thread or process node, so we add them.
+ * ProcessIndex
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.TraceEventStackSource.#ctor(Microsoft.Diagnostics.Tracing.Etlx.TraceEvents)">
+ <summary>
+ Creates a new TraceEventStackSource given a list of events 'events' from a TraceLog
+ </summary>
+ <param name="events"></param>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.TraceEventStackSource.TraceLog">
+ <summary>
+ Returns the TraceLog file that is associated with this stack source.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.TraceEventStackSource.ShowUnknownAddresses">
+ <summary>
+ Normally addresses without symbolic names are listed as ?, however sometimes it is useful
+ to see the actual address as a hexadecimal number. Setting this will do that.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.TraceEventStackSource.LookupWarmSymbols(System.Int32,Microsoft.Diagnostics.Symbols.SymbolReader,Microsoft.Diagnostics.Tracing.Stacks.StackSource,System.Predicate{Microsoft.Diagnostics.Tracing.Etlx.TraceModuleFile})">
+ <summary>
+ Looks up symbols for all modules that have an inclusive count >= minCount.
+ stackSource, if given, can be used to be the filter. If null, 'this' is used.
+ If stackSource is given, it needs to use the same indexes for frames as 'this'.
+ shouldLoadSymbols, if given, can be used to filter the modules.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.TraceEventStackSource.GetFrameCodeAddress(Microsoft.Diagnostics.Tracing.Stacks.StackSourceFrameIndex)">
+ <summary>
+ Given a frame index, return the corresponding code address for it. This is useful for looking up line number information.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.TraceEventStackSource.ForEach(System.Action{Microsoft.Diagnostics.Tracing.Stacks.StackSourceSample})">
+ <summary>
+ Implementation of StackSource protocol.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.TraceEventStackSource.SampleTimeRelativeMSecLimit">
+ <summary>
+ Implementation of StackSource protocol.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.TraceEventStackSource.GetFrameIndex(Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex)">
+ <summary>
+ Implementation of StackSource protocol.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.TraceEventStackSource.GetCallerIndex(Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex)">
+ <summary>
+ Implementation of StackSource protocol.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.TraceEventStackSource.GetSourceLine(Microsoft.Diagnostics.Tracing.Stacks.StackSourceFrameIndex,Microsoft.Diagnostics.Symbols.SymbolReader)">
+ <summary>
+ Implementation of StackSource protocol.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.TraceEventStackSource.GetFrameName(Microsoft.Diagnostics.Tracing.Stacks.StackSourceFrameIndex,System.Boolean)">
+ <summary>
+ Implementation of StackSource protocol.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.TraceEventStackSource.CallStackIndexLimit">
+ <summary>
+ Implementation of StackSource protocol.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.TraceEventStackSource.CallFrameIndexLimit">
+ <summary>
+ Implementation of StackSource protocol.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.TraceEventStackSource.GetModulesForStack(Microsoft.Diagnostics.Tracing.Stacks.TraceEventStackSource.ModuleList[],Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex)">
+ <summary>
+ Returns a list of modules for the stack 'stackIdx'. It also updates the interning table stackModuleLists, so
+ that the entry cooresponding to stackIdx remembers the answer. This can speed up processing alot since many
+ stacks have the same prefixes to root.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Stacks.TraceEventStackSource.ModuleList">
+ <summary>
+ A ModuleList is a linked list of modules. It is only used in GetModulesForStack and LookupWarmSymbols
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Stacks.TraceEventStackSource.m_pseudoStacksTable">
+ <summary>
+ This maps pseudo-stacks to their index (thus it is the inverse of m_pseudoStack;
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.TraceEventStackSource.GetPseudoStack(Microsoft.Diagnostics.Tracing.Etlx.ThreadIndex,Microsoft.Diagnostics.Tracing.Etlx.CodeAddressIndex)">
+ <summary>
+ Given a thread and a call stack that does not have a stack, make up a pseudo stack for it consisting of the code address,
+ the broken node, the thread and process. Will return -1 if it can't allocate another Pseudo-stack.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource">
+ <summary>
+ Like a TraceEventStackSource a MutableTraceEventStackSource allows you incorporate the stacks associated with
+ a TraceEvent as a sample in the StackSource. However in addition it allows you to create new frames for these
+ stacks on the fly as well as add samples that did not exist in the original TraceEvent stream. This gives you
+ a lot of flexibility to add additional data to the original stream of TraceEvents.
+
+ Like TraceEventStackSource MutableTraceEventStackSource supports the GetFrameCodeAddress() method that allows
+ you to map from the StackSourceFrameIndex back its TraceLog code address (that lets you get at the source code and
+ line number for that frame).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource.#ctor(Microsoft.Diagnostics.Tracing.Etlx.TraceLog)">
+ <summary>
+ Create a new MutableTraceEventStackSource that can represent stacks comming from any events in the given TraceLog with a stack.
+ You use the 'AddSample' and 'DoneAddingSamples' to specify exactly which stacks you want in your source.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource.AddSample(Microsoft.Diagnostics.Tracing.Stacks.StackSourceSample)">
+ <summary>
+ After creating a MultableTraceEventStackSource, you add the samples you want using this AddSample API (you can reuse 'sample'
+ used as an argument to this routine. It makes a copy. The samples do NOT need to be added in time order (the MultableTraceEventStackSource
+ will sort them). When you done DoneAddingSamples must be called before using the
+ the MutableTraceEventStackSource as a stack source.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource.DoneAddingSamples">
+ <summary>
+ After calling 'AddSample' to add the samples that should belong to the source, DoneAddingSamples() should be called to
+ to complete the construction of the stack source. Only then can the reading API associated with the stack source be called.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource.Interner">
+ <summary>
+ The Interner is the class that allows you to make new indexes out of strings and other bits.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource.GetCallStackForProcess(Microsoft.Diagnostics.Tracing.Etlx.TraceProcess)">
+ <summary>
+ Returns a StackSourceCallStackIndex representing just one entry that represents the process 'process'
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource.GetCallStackForThread(Microsoft.Diagnostics.Tracing.Etlx.TraceThread)">
+ <summary>
+ Returns a StackSourceCallStackIndex representing just two entries that represent 'thread' which has a parent of its process.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource.GetCallStackThread(Microsoft.Diagnostics.Tracing.Etlx.CallStackIndex,Microsoft.Diagnostics.Tracing.Etlx.TraceThread)">
+ <summary>
+ Returns a StackSourceCallStackIndex representing the call stack from the TraceLog represented by the CallStackIndex 'callStackIndex'.
+ If that stack is invalid, use 'thread' to at least return a call stack for the thread.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource.GetCallStack(Microsoft.Diagnostics.Tracing.Etlx.CallStackIndex,Microsoft.Diagnostics.Tracing.TraceEvent)">
+ <summary>
+ Returns a StackSourceCallStackIndex representing the call stack from the TraceLog represented by the CallStackIndex 'callStackIndex'.
+ Use the TraceEvent 'data' to find the stack if callStackIndex is invalid.
+ TODO data should be removed (or callstack derived from it)
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource.CallStackMap">
+ <summary>
+ A very simple IDictionary-like interface for remembering values in GetCallStack()
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource.CallStackMap.Get(Microsoft.Diagnostics.Tracing.Etlx.CallStackIndex)">
+ <summary>
+ Fetches an value given a key
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource.CallStackMap.Put(Microsoft.Diagnostics.Tracing.Etlx.CallStackIndex,Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex)">
+ <summary>
+ Sets a key-value pair
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource.GetCallStack(Microsoft.Diagnostics.Tracing.Etlx.CallStackIndex,Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex,Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource.CallStackMap)">
+ <summary>
+ Find the StackSourceCallStackIndex for the TraceEvent call stack index 'callStackIndex' which has a top of its
+ stack (above the stack, where the thread and process would normally go) as 'top'. If callStackMap is non-null
+ it is used as an interning table for CallStackIndex -> StackSourceCallStackIndex. This can speed up the
+ transformation dramatically. It will still work if it is null.
+ </summary>
+
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource.GetFrameIndex(Microsoft.Diagnostics.Tracing.Etlx.CodeAddressIndex)">
+ <summary>
+ Create a frame name from a TraceLog code address.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource.GetCallerIndex(Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex)">
+ <summary>
+ Implementation of StackSource protocol.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource.GetFrameIndex(Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex)">
+ <summary>
+ Implementation of StackSource protocol.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource.GetModuleIndex(Microsoft.Diagnostics.Tracing.Stacks.StackSourceFrameIndex)">
+ <summary>
+ Implementation of StackSource protocol.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource.GetFrameName(Microsoft.Diagnostics.Tracing.Stacks.StackSourceFrameIndex,System.Boolean)">
+ <summary>
+ Implementation of StackSource protocol.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource.GetSampleByIndex(Microsoft.Diagnostics.Tracing.Stacks.StackSourceSampleIndex)">
+ <summary>
+ Implementation of StackSource protocol.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource.SampleIndexLimit">
+ <summary>
+ Implementation of StackSource protocol.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource.ForEach(System.Action{Microsoft.Diagnostics.Tracing.Stacks.StackSourceSample})">
+ <summary>
+ Implementation of StackSource protocol.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource.SamplesImmutable">
+ <summary>
+ Implementation of StackSource protocol.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource.CallFrameIndexLimit">
+ <summary>
+ Implementation of StackSource protocol.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource.CallStackIndexLimit">
+ <summary>
+ Implementation of StackSource protocol.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource.SampleTimeRelativeMSecLimit">
+ <summary>
+ Implementation of StackSource protocol.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource.m_Interner">
+ <summary>
+ private
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Stacks.MutableTraceEventStackSource.m_emptyModuleIdx">
+ <summary>
+ private
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.TraceEventSource">
+ <summary>
+ TraceEventSource is an abstract base class that represents the output of a ETW session (e.g. a ETL file
+ or ETLX file or a real time stream). This base class is NOT responsible for actually processing
+ the events, but contains methods for properties associated with the session
+ like its start and end time, filename, and characteristics of the machine it was collected on.
+ <para>This class has two main subclasses:</para>
+ <para>* <see cref="T:Microsoft.Diagnostics.Tracing.TraceEventDispatcher"/> which implements a 'push' (callback) model and is the only mode for ETL files.
+ ETWTraceEventSource is the most interesting subclass of TraceEventDispatcher.</para>
+ <para>* see TraceLog which implements both a 'push' (callback) as well as pull (foreach) model but only works on ETLX files.</para>
+ <para>This is the end.</para>
+ <para>The normal user pattern is to create a TraceEventSource, create TraceEventParsers attached to the TraceEventSource, and then subscribe
+ event callbacks using the TraceEventParsers</para>
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEventSource.Clr">
+ <summary>
+ For convenience, we provide a property returns a ClrTraceEventParser that knows
+ how to parse all the Common Language Runtime (CLR .NET) events into callbacks.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEventSource.Kernel">
+ <summary>
+ For convenience, we provide a property returns a KernelTraceEventParser that knows
+ how to parse all the Kernel events into callbacks.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEventSource.Dynamic">
+ <summary>
+ For convenience, we provide a property returns a DynamicTraceEventParser that knows
+ how to parse all event providers that dynamically log their schemas into the event streams.
+ In particular, it knows how to parse any events from a System.Diagnostics.Tracing.EventSources.
+
+ Note that the DynamicTraceEventParser has subsumed the functionality of RegisteredTraceEventParser
+ so any registered providers are also looked up here.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEventSource.Registered">
+ <summary>
+ For convenience, we provide a property returns a RegisteredTraceEventParser that knows
+ how to parse all providers that are registered with the operating system.
+
+ Because the DynamicTraceEventParser has will parse all providers that that RegisteredTraceEventParser
+ will parse, this function is obsolete, you should use Dynamic instead.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEventSource.SessionStartTime">
+ <summary>
+ The time when session started logging.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEventSource.SessionEndTime">
+ <summary>
+ The time that the session stopped logging.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEventSource.SessionEndTimeRelativeMSec">
+ <summary>
+ The Session End time expressed as milliseconds from the start of the session
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEventSource.SessionDuration">
+ <summary>
+ The difference between SessionEndTime and SessionStartTime;
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEventSource.Size">
+ <summary>
+ The size of the trace, if it is known. Will return 0 if it is not known.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEventSource.PointerSize">
+ <summary>
+ Returns the size of a pointer on the machine where events were collected (4 for 32 bit or 8 for 64 bit)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEventSource.EventsLost">
+ <summary>
+ The number of events that were dropped (e.g. because the incoming event rate was too fast)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEventSource.NumberOfProcessors">
+ <summary>
+ The number of processors on the machine doing the logging.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEventSource.CpuSpeedMHz">
+ <summary>
+ Cpu speed of the machine doing the logging.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEventSource.OSVersion">
+ <summary>
+ The version of the windows operating system on the machine doing the logging.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEventSource.IsRealTime">
+ <summary>
+ Returns true if this is a real time session.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEventSource.DataLifetimeMsec">
+ <summary>
+ Time based threshold for how long data should be retained
+ by accumulates that are processing this TraceEventSource.
+ A value of 0, the default, indicates an infinite accumulation.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventSource.DataLifetimeEnabled">
+ <summary>
+ Check if a DataLifetime model is enabled
+ </summary>
+ <returns>True - lifetime tracking is enabled</returns>
+ <returns>False - lifetime tracking is not enabled</returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventSource.Dispose">
+ <summary>
+ Closes any files and cleans up any resources associated with this TraceEventSource
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEventSource.UserData">
+ <summary>
+ TraceEventSource supports attaching arbitrary user data to the source. This property returns a key-value bag of these attached values.
+ <para>
+ One convention that has been established is that TraceEventParsers that need additional state to parse their events should
+ store them in UserData under the key 'parsers\(ParserName)'
+ </para>
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventSource.Dispose(System.Boolean)">
+ <summary>
+ Dispose pattern
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEventSource.QPCFreq">
+ <summary>
+ This is the high frequency tick clock on the processor (what QueryPerformanceCounter uses).
+ You should not need
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventSource.QPCTimeToRelMSec(System.Int64)">
+ <summary>
+ Converts the Query Performance Counter (QPC) ticks to a number of milliseconds from the start of the trace.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventSource.RelativeMSecToQPC(System.Double)">
+ <summary>
+ Converts a Relative MSec time to the Query Performance Counter (QPC) ticks
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventSource.UTCDateTimeToQPC(System.DateTime)">
+ <summary>
+ Converts a DateTime to the Query Performance Counter (QPC) ticks
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventSource.QPCTimeToDateTimeUTC(System.Int64)">
+ <summary>
+ Converts the Query Performance Counter (QPC) ticks to a DateTime
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventSource.LastChanceGetThreadID(Microsoft.Diagnostics.Tracing.TraceEvent)">
+ <summary>
+ Some events (like HardFault) do not have a thread ID or a process ID, but they MIGHT have a Stack
+ If they do try to get the ThreadID for the event from that. Return -1 if not successful.
+ This is intended to be overridden by the TraceLog class that has this additional information.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.TraceEvent">
+ <summary>
+ TraceEvent an abstract class represents the data from one event in the stream of events in a TraceEventSource.
+ The TraceEvent class has all the properties of an event that are common to all ETW events, including TimeStamp
+ ProviderGuid, ProcessID etc. Subclasses of TraceEvent then extend this abstract class to include properties
+ specific to a particular payload.
+ <para>
+ An important architectural point is that TraceEvent classes are aggressively reused by default. The TraceEvent that is
+ passed to any TraceEventParser callback or in a foreach is ONLY valid for the duration for that callback (or one
+ iteration of the foreach). If you need save a copy of the event data, you must call the Clone() method to make
+ a copy. The IObservable interfaces (TraceEventParser.Observe* methods) however implicitly call Clone() so you
+ do not have to call Clone() when processing with IObservables (but these are slower).
+ </para>
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEvent.ProviderGuid">
+ <summary>
+ The GUID that uniquely identifies the Provider for this event. This can return Guid.Empty for classic (Pre-VISTA) ETW providers.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEvent.ProviderName">
+ <summary>
+ The name of the provider associated with the event. It may be of the form Provider(GUID) or UnknownProvider in some cases but is never null.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEvent.EventName">
+ <summary>
+ A name for the event. This is simply the concatenation of the task and opcode names (separated by a /). If the
+ event has no opcode, then the event name is just the task name.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEvent.ID">
+ <summary>
+ Returns the provider-specific integer value that uniquely identifies event within the scope of
+ the provider. (Returns 0 for classic (Pre-VISTA) ETW providers).
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEvent.Task">
+ <summary>
+ Events for a given provider can be given a group identifier (integer) called a Task that indicates the
+ broad area within the provider that the event pertains to (for example the Kernel provider has
+ Tasks for Process, Threads, etc).
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEvent.TaskName">
+ <summary>
+ The human readable name for the event's task (group of related events) (eg. process, thread,
+ image, GC, ...). May return a string Task(GUID) or Task(TASK_NUM) if no good symbolic name is
+ available. It never returns null.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEvent.Opcode">
+ <summary>
+ An opcode is a numeric identifier (integer) that identifies the particular event within the group of events
+ identified by the event's task. Often events have opcode 'Info' (0), which is the default. This value
+ is interpreted as having no-opcode (the task is sufficient to identify the event).
+ <para>
+ Generally the most useful opcodes are the Start and Stop opcodes which are used to indicate the beginning and the
+ end of a interval of time. Many tools will match up start and stop opcodes automatically and compute durations.
+ </para>
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEvent.OpcodeName">
+ <summary>
+ Returns the human-readable string name for the Opcode property.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEvent.Level">
+ <summary>
+ The verbosity of the event (Fatal, Error, ..., Info, Verbose)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEvent.Version">
+ <summary>
+ The version number for this event. The only compatible change to an event is to add new properties at the end.
+ When this is done the version numbers is incremented.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEvent.Keywords">
+ <summary>
+ ETW Event providers can specify a 64 bit bitfield called 'keywords' that define provider-specific groups of
+ events which can be enabled and disabled independently.
+ Each event is given a keywords mask that identifies which groups the event belongs to. This property returns this mask.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEvent.Channel">
+ <summary>
+ A Channel is a identifier (integer) that defines an 'audience' for the event (admin, operational, ...).
+ Channels are only used for Windows Event Log integration.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEvent.TimeStamp">
+ <summary>
+ The time of the event. You may find TimeStampRelativeMSec more convenient.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEvent.TimeStampRelativeMSec">
+ <summary>
+ Returns a double representing the number of milliseconds since the beginning of the session.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEvent.ThreadID">
+ <summary>
+ The thread ID for the thread that logged the event
+ <para>This field may return -1 for some events when the thread ID is not known.</para>
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEvent.ProcessID">
+ <summary>
+ The process ID of the process which logged the event.
+ <para>This field may return -1 for some events when the process ID is not known.</para>
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEvent.ProcessName">
+ <summary>
+ Returns a short name for the process. This the image file name (without the path or extension),
+ or if that is not present, then the string 'Process(XXXX)'
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEvent.ProcessorNumber">
+ <summary>
+ The processor Number (from 0 to TraceEventSource.NumberOfProcessors) that logged this event.
+ event.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEvent.PointerSize">
+ <summary>
+ Get the size of a pointer associated with process that logged the event (thus it is 4 for a 32 bit process).
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEvent.ActivityID">
+ <summary>
+ Conceptually every ETW event can be given a ActivityID (GUID) that uniquely identifies the logical
+ work being carried out (the activity). This property returns this GUID. Can return Guid.Empty
+ if the thread logging the event has no activity ID associated with it.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEvent.RelatedActivityID">
+ <summary>
+ ETW supports the ability to take events with another GUID called the related activity that is either
+ causes or is caused by the current activity. This property returns that GUID (or Guid.Empty if the
+ event has not related activity.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEvent.FormattedMessage">
+ <summary>
+ Event Providers can define a 'message' for each event that are meant for human consumption.
+ FormattedMessage returns this string with the values of the payload filled in at the appropriate places.
+ <para>It will return null if the event provider did not define a 'message' for this event</para>
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.GetFormattedMessage(System.IFormatProvider)">
+ <summary>
+ Creates and returns the value of the 'message' for the event with payload values substituted.
+ Payload values are formatted using the given formatProvider.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEvent.EventIndex">
+ <summary>
+ An EventIndex is a integer that is guaranteed to be unique for this event over the entire log. Its
+ primary purpose is to act as a key that allows side tables to be built up that allow value added
+ processing to 'attach' additional data to this particular event unambiguously.
+ <para>This property is only set for ETLX file. For ETL or real time streams it returns 0</para>
+ <para>EventIndex is currently a 4 byte quantity. This does limit this property to 4Gig of events</para>
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEvent.Source">
+ <summary>
+ The TraceEventSource associated with this event.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEvent.IsClassicProvider">
+ <summary>
+ Returns true if this event is from a Classic (Pre-VISTA) provider
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEvent.PayloadNames">
+ <summary>
+ Returns the names of all the manifest declared field names for the event. May be empty if the manifest is not available.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.PayloadValue(System.Int32)">
+ <summary>
+ Given an index from 0 to PayloadNames.Length-1, return the value for that payload item as an object (boxed if necessary).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.PayloadString(System.Int32,System.IFormatProvider)">
+ <summary>
+ PayloadString is like PayloadValue(index).ToString(), however it can do a better job in some cases. In particular
+ if the payload is a enumeration or a bitfield and the manifest defined the enumeration values, then it will print the string name
+ of the enumeration value instead of the integer value.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.PayloadIndex(System.String)">
+ <summary>
+ Returns the index in 'PayloadNames for field 'propertyName'. Returns something less than 0 if not found.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.PayloadByName(System.String)">
+ <summary>
+ PayloadByName fetches the value of a payload property by the name of the property.
+ <para>It will return null if propertyName is not found.</para>
+ <para>This method is not intended to be used in performance critical code.</para>
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.PayloadStringByName(System.String,System.IFormatProvider)">
+ <summary>
+ PayloadStringByName functions the same as PayloadByName, but uses PayloadString instead of PayloadValue.
+ <para>It will return null if propertyName is not found.</para>
+ <para>This method is not intended to be used in performance critical code.</para>
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEvent.EventDataLength">
+ <summary>
+ The size of the event-specific data payload. (see EventData)
+ <para>Normally this property is not used because some TraceEventParser has built a subclass of
+ TraceEvent that parses the payload</para>
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.EventData">
+ <summary>
+ Returns an array of bytes representing the event-specific payload associated with the event.
+ <para>Normally this method is not used because some TraceEventParser has built a subclass of
+ TraceEvent that parses the payload</para>
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.EventData(System.Byte[],System.Int32,System.Int32,System.Int32)">
+ <summary>
+ Gets the event data and puts it in 'targetBuffer' at 'targetStartIndex' and returns the resulting buffer.
+ If 'targetBuffer is null, it will allocate a buffer of the correct size.
+ <para>Normally this method is not used because some TraceEventParser has built a subclass of
+ TraceEvent that parses the payload</para>
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.Clone">
+ <summary>
+ The events passed to the callback functions only last as long as the callback, so if you need to
+ keep the information around after that you need to copy it. This method makes that copy.
+ <para>This method is more expensive than copy out all the event data from the TraceEvent instance
+ to a type of your construction.</para>
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.ToString">
+ <summary>
+ Pretty print the event. It uses XML syntax..
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.ToString(System.IFormatProvider)">
+ <summary>
+ Pretty print the event using XML syntax, formatting data using the supplied IFormatProvider
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.ToXml(System.Text.StringBuilder)">
+ <summary>
+ Write an XML representation to the stringBuilder sb and return it.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.ToXml(System.Text.StringBuilder,System.IFormatProvider)">
+ <summary>
+ Writes an XML representation of the event to a StringBuilder sb, formatting data using the passed format provider.
+ Returns the StringBuilder.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.Dump(System.Boolean,System.Boolean)">
+ <summary>
+ Dumps a very verbose description of the event, including a dump of they payload bytes. It is in
+ XML format. This is very useful in debugging (put it in a watch window) when parsers are not
+ interpreting payloads properly.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.TraceEvent.EventTypeUserData">
+ <summary>
+ EventTypeUserData is a field users get to use to attach their own data on a per-event-type basis.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEvent.DataStart">
+ <summary>
+ Returns the raw IntPtr pointer to the data blob associated with the event. This is the way the
+ subclasses of TraceEvent get at the data to display it in a efficient (but unsafe) manner.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.#ctor(System.Int32,System.Int32,System.String,System.Guid,System.Int32,System.String,System.Guid,System.String)">
+ <summary>
+ Create a template with the given event meta-data. Used by TraceParserGen.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.SkipUTF8String(System.Int32)">
+ <summary>
+ Skip UTF8 string starting at 'offset' bytes into the payload blob.
+ </summary>
+ <returns>Offset just after the string</returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.SkipUnicodeString(System.Int32)">
+ <summary>
+ Skip Unicode string starting at 'offset' bytes into the payload blob.
+ </summary>
+ <returns>Offset just after the string</returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.SkipUnicodeString(System.Int32,System.Int32)">
+ <summary>
+ Skip 'stringCount' Unicode strings starting at 'offset' bytes into the payload blob.
+ </summary>
+ <returns>Offset just after the last string</returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.SkipSID(System.Int32)">
+ <summary>
+ Skip a Security ID (SID) starting at 'offset' bytes into the payload blob.
+ </summary>
+ <returns>Offset just after the Security ID</returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.HostOffset(System.Int32,System.Int32)">
+ <summary>
+ Trivial helper that allows you to get the Offset of a field independent of 32 vs 64 bit pointer size.
+ </summary>
+ <param name="offset">The Offset as it would be on a 32 bit system</param>
+ <param name="numPointers">The number of pointer-sized fields that came before this field.
+ </param>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.HostSizePtr(System.Int32)">
+ <summary>
+ Computes the size of 'numPointers' pointers on the machine where the event was collected.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.GetUTF8StringAt(System.Int32)">
+ <summary>
+ Given an Offset to a null terminated ASCII string in an event blob, return the string that is
+ held there.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.GetFixedAnsiStringAt(System.Int32,System.Int32)">
+ <summary>
+ Returns the string represented by a fixed length ASCII string starting at 'offset' of length 'charCount'
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.GetFixedUnicodeStringAt(System.Int32,System.Int32)">
+ <summary>
+ Given an Offset to a fixed sized string at 'offset', whose buffer size is 'charCount'
+ Returns the string value. A null in the string will terminate the string before the
+ end of the buffer.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.GetIPAddrV6At(System.Int32)">
+ <summary>
+ Returns the encoding of a Version 6 IP address that has been serialized at 'offset' in the payload bytes.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.GetGuidAt(System.Int32)">
+ <summary>
+ Returns the GUID serialized at 'offset' in the payload bytes.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.GetDateTimeAt(System.Int32)">
+ <summary>
+ Get the DateTime that serialized (as a windows FILETIME) at 'offset' in the payload bytes.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.GetUnicodeStringAt(System.Int32)">
+ <summary>
+ Given an Offset to a null terminated Unicode string in an payload bytes, return the string that is
+ held there.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.GetByteArrayAt(System.Int32,System.Int32)">
+ <summary>
+ Give an offset to a byte array of size 'size' in the payload bytes, return a byte[] that contains
+ those bytes.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.GetByteAt(System.Int32)">
+ <summary>
+ Returns a byte value that was serialized at 'offset' in the payload bytes
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.GetInt16At(System.Int32)">
+ <summary>
+ Returns a short value that was serialized at 'offset' in the payload bytes
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.GetInt32At(System.Int32)">
+ <summary>
+ Returns an int value that was serialized at 'offset' in the payload bytes
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.GetInt64At(System.Int32)">
+ <summary>
+ Returns a long value that was serialized at 'offset' in the payload bytes
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.GetIntPtrAt(System.Int32)">
+ <summary>
+ Get something that is machine word sized for the provider that collected the data, but is an
+ integer (and not an address)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.GetAddressAt(System.Int32)">
+ <summary>
+ Gets something that is pointer sized for the provider that collected the data.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.GetSingleAt(System.Int32)">
+ <summary>
+ Returns an int float (single) that was serialized at 'offset' in the payload bytes
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.GetDoubleAt(System.Int32)">
+ <summary>
+ Returns an int double precision floating point value that was serialized at 'offset' in the payload bytes
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.XmlAttrib(System.Text.StringBuilder,System.String,System.String)">
+ <summary>
+ Write the XML attribute 'attribName' with value 'value' to the string builder
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.XmlAttrib(System.Text.StringBuilder,System.String,System.Int32)">
+ <summary>
+ Write the XML attribute 'attribName' with value 'value' to the string builder
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.XmlAttrib(System.Text.StringBuilder,System.String,System.Int64)">
+ <summary>
+ Write the XML attribute 'attribName' with value 'value' to the string builder
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.XmlAttribHex(System.Text.StringBuilder,System.String,System.UInt64)">
+ <summary>
+ Write the XML attribute 'attribName' with value 'value' to the string builder
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.XmlAttribHex(System.Text.StringBuilder,System.String,System.Int64)">
+ <summary>
+ Write the XML attribute 'attribName' with value 'value' to the string builder
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.XmlAttribHex(System.Text.StringBuilder,System.String,System.UInt32)">
+ <summary>
+ Write the XML attribute 'attribName' with value 'value' to the string builder
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.XmlAttribHex(System.Text.StringBuilder,System.String,System.Int32)">
+ <summary>
+ Write the XML attribute 'attribName' with value 'value' to the string builder
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.XmlAttrib(System.Text.StringBuilder,System.String,System.Object)">
+ <summary>
+ Write the XML attribute 'attribName' with value 'value' to the string builder
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.Prefix(System.Text.StringBuilder)">
+ <summary>
+ Prints a standard prefix for a event (includes the time of the event, the process ID and the
+ thread ID.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.ThreadIDforStacks">
+ <summary>
+ Because we want the ThreadID to be the ID of the CREATED thread, and the stack
+ associated with the event is the parentThreadID
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEvent.Target">
+ <summary>
+ Returns (or sets) the delegate associated with this event.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.SetState(System.Object)">
+ <summary>
+ If this TraceEvent belongs to a parser that needs state, then this callback will set the state.
+ Parsers with state are reasonably rare, the main examples are KernelTraceEventParser and ClrTraceEventParser.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEvent.TimeStampQPC">
+ <summary>
+ Returns the Timestamp for the event using Query Performance Counter (QPC) ticks.
+ The start time for the QPC tick counter is arbitrary and the units also vary.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.LogCodeAddresses(System.Func{Microsoft.Diagnostics.Tracing.TraceEvent,System.UInt64,System.Boolean})">
+ <summary>
+ A standard way for events to are that certain addresses are addresses in code and ideally have
+ symbolic information associated with them. Returns true if successful.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEvent.IsEventWriteString">
+ <summary>
+ Was this written with the windows EventWriteString API? (see also EventDataAsString)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.Compare(Microsoft.Diagnostics.Tracing.EventIndex,Microsoft.Diagnostics.Tracing.EventIndex)">
+ <summary>
+ Used for binary searching of event IDs. Abstracts the size (currently a int, could go to long)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.Matches(Microsoft.Diagnostics.Tracing.TraceEvent)">
+ <summary>
+ Returns true if the two traceEvents have the same identity.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.Finalize">
+ <summary>
+ Normally TraceEvent does not have unmanaged data, but if you call 'Clone' it will.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.DumpArray(System.Byte[],System.Int32)">
+ <summary>
+ For debugging. dumps an array. If you specify a size of 0 (the default) it dumps the whole array.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.EventDataAsString">
+ <summary>
+ If the event data looks like a unicode string, then return it. This is heuristic. (See also IsEventWriteString)
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.Dispatch">
+ <summary>
+ Each TraceEvent items knows where it should Dispatch to.
+ ETWTraceEventSource.Dispatch calls this function to go to the right placed. By default we
+ do nothing. Typically a subclass just dispatches to another callback that passes itself to a
+ type-specific event callback.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.Validate">
+ <summary>
+ This is a DEBUG-ONLY routine that allows a routine to do consistency checking in a debug build.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEvent.DebugValidate">
+ <summary>
+ Validate that the events is not trash.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.TraceEvent.next">
+ <summary>
+ TraceEvent knows where to dispatch to. To support many subscriptions to the same event we chain
+ them.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.TraceEvent.payloadNames">
+ <summary>
+ The array of names for each property in the payload (in order).
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.TraceEventID">
+ <summary>
+ Individual event providers can supply many different types of events. These are distinguished from each
+ other by a TraceEventID, which is just a 16 bit number. Its meaning is provider-specific.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.TraceEventID.Illegal">
+ <summary>
+ Illegal is a EventID that is not used by a normal event.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.TraceEventChannel">
+ <summary>
+ Providers can define different audiences or Channels for an event (eg Admin, Developer ...).
+ It is only used for Windows Event log support.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.TraceEventChannel.Default">
+ <summary>
+ The default channel.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.TraceEventOpcode">
+ <summary>
+ There are certain classes of events (like start and stop) which are common across a broad variety of
+ event providers for which it is useful to treat uniformly (for example, determining the elapsed time
+ between a start and stop event). To facilitate this, event can have opcode which defines these
+ common operations. Below are the standard ones but providers can define additional ones.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.TraceEventOpcode.Info">
+ <summary>
+ Generic opcode that does not have specific semantics associated with it.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.TraceEventOpcode.Start">
+ <summary>
+ The entity (process, thread, ...) is starting
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.TraceEventOpcode.Stop">
+ <summary>
+ The entity (process, thread, ...) is stoping (ending)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.TraceEventOpcode.DataCollectionStart">
+ <summary>
+ The entity (process, thread, ...) did not terminate before data collection ended, so indicate
+ this at data collection termination time.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.TraceEventOpcode.DataCollectionStop">
+ <summary>
+ The entity (process, thread, ...) did not terminate before data collection ended, so indicate
+ this at data collection termination time. This is mostly for 'flight recorder' scenarios where
+ you only have the 'tail' of the data and would like to know about everything that existed.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.TraceEventOpcode.Extension">
+ <summary>
+ Reserved
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.TraceEventOpcode.Reply">
+ <summary>
+ Reserved
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.TraceEventOpcode.Resume">
+ <summary>
+ Reserved
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.TraceEventOpcode.Suspend">
+ <summary>
+ Reserved
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.TraceEventOpcode.Transfer">
+ <summary>
+ Reserved
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.TraceEventLevel">
+ <summary>
+ Indicates to a provider whether verbose events should be logged.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.TraceEventLevel.Always">
+ <summary>
+ Always log the event (It also can mean that the provider decides the verbosity) You probably should not use it....
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.TraceEventLevel.Critical">
+ <summary>
+ Events that indicate critical conditions
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.TraceEventLevel.Error">
+ <summary>
+ Events that indicate error conditions
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.TraceEventLevel.Warning">
+ <summary>
+ Events that indicate warning conditions
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.TraceEventLevel.Informational">
+ <summary>
+ Events that indicate information
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.TraceEventLevel.Verbose">
+ <summary>
+ Events that verbose information
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.TraceEventKeyword">
+ <summary>
+ ETW defines the concept of a Keyword, which is a 64 bit bitfield. Each bit in the bitfield
+ represents some provider defined 'area' that is useful for filtering. When processing the events, it
+ is then possible to filter based on whether various bits in the bitfield are set. There are some
+ standard keywords, but most are provider specific.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.TraceEventKeyword.None">
+ <summary>
+ No event groups (keywords) selected
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.TraceEventKeyword.All">
+ <summary>
+ All event groups (keywords) selected
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.TraceEventTask">
+ <summary>
+ Tasks are groups of related events for a given provider (for example Process, or Thread, Kernel Provider).
+ They are defined by the provider.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.TraceEventTask.Default">
+ <summary>
+ If you don't explicitly choose a task you get the default
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.EventIndex">
+ <summary>
+ EventIdex is a unsigned integer that is unique to a particular event. EventIndex is guaranteed to be
+ unique over the whole log. It is only used by ETLX files.
+ <para>
+ Currently the event ID simply the index in the log file of the event. We don't however guarantee ordering.
+ In the future we may add new events to the log and given them IDs 'at the end' even if the events are not
+ at the end chronologically.
+ </para>
+ <para>
+ EventIndex is a 32 bit number limits it to 4Gig events in an ETLX file.
+ </para>
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.EventIndex.Invalid">
+ <summary>
+ Invalid is an EventIndex that will not be used by a normal event.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.ITraceParserServices">
+ <summary>
+ TraceEventSource has two roles. The first is the obvious one of providing some properties
+ like 'SessionStartTime' for clients. The other role is provide an interface for TraceEventParsers
+ to 'hook' to so that events can be decoded. ITraceParserServices is the API service for this
+ second role. It provides the methods that parsers register templates for subclasses of
+ the TraceEvent class that know how to parse particular events.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ITraceParserServices.RegisterEventTemplate(Microsoft.Diagnostics.Tracing.TraceEvent)">
+ <summary>
+ RegisterEventTemplate is the mechanism a particular event payload description 'template'
+ (a subclass of TraceEvent) is injected into the event processing stream. Once registered, an
+ event is 'parsed' simply by setting the 'rawData' field in the event. It is up to the template
+ then to take this raw data an present it in a useful way to the user (via properties). Note that
+ parsing is thus 'lazy' in no processing of the raw data is not done at event dispatch time but
+ only when the properties of an event are accessed.
+
+ Ownership of the template transfers when this call is made. The source will modify this and
+ assumes it has exclusive use (thus you should clone the template if necessary).
+ <para>
+ Another important aspect is that templates are reused by TraceEventSource aggressively. The
+ expectation is that no memory needs to be allocated during a normal dispatch
+ </para>
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ITraceParserServices.UnregisterEventTemplate(System.Delegate,System.Int32,System.Guid)">
+ <summary>
+ UnregisterEventTemplate undoes the action of RegisterEventTemplate. Logically you would
+ pass the template to unregister, but typically you don't have that at unregistration time.
+ To avoid forcing clients to remember the templates they registered, UnregisterEventTemplate
+ takes three things that will uniquely identify the template to unregister. These are
+ the eventID, and provider ID and the Action (callback) for the template.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ITraceParserServices.RegisterParser(Microsoft.Diagnostics.Tracing.TraceEventParser)">
+ <summary>
+ It is expected that when a subclass of TraceEventParser is created, it calls this
+ method on the source. This allows the source to do any Parser-specific initialization.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ITraceParserServices.RegisterUnhandledEvent(System.Func{Microsoft.Diagnostics.Tracing.TraceEvent,System.Boolean})">
+ <summary>
+ Indicates that this callback should be called on any unhandled event. The callback
+ returns true if the lookup should be retried after calling this (that is there is
+ the unhandled event was found).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ITraceParserServices.TaskNameForGuid(System.Guid)">
+ <summary>
+ Looks if any provider has registered an event with task with 'taskGuid'. Will return null if
+ there is no registered event.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ITraceParserServices.ProviderNameForGuid(System.Guid)">
+ <summary>
+ Looks if any provider has registered with the given GUID OR has registered any task that matches
+ the GUID. Will return null if there is no registered event.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.TraceEventParser">
+ <summary>
+ TraceEventParser Represents a class that knows how to decode particular set of events (typically
+ all the events of a single ETW provider). It is expected that subclasses of TraceEventParser
+ have a constructor that takes a TraceEventSource as an argument that 'attaches' th parser
+ to the TraceEventSource. TraceEventParsers break into two groups.
+ <para>
+ * Those that work on a single provider, and thus the provider name is implicit in th parser. This is the common case.
+ The AddCallbackForEvent* methods are meant to be used for these TraceEventParsers</para>
+ <para>
+ * Those that work on multiple providers. There are only a handful of these (DynamicTraceEventParser, ...).
+ The AddCallbackForProviderEvent* methods which take 'Provider' parameters are meant to be used for these TraceEventParsers
+ </para>
+ <para>
+ In addition to the AddCallback* methods on TraceEventParser, there are also Observe* extension methods that
+ provide callbacks using the IObservable style.
+ </para>
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEventParser.Source">
+ <summary>
+ Get the source this TraceEventParser is attached to.
+ </summary>
+ </member>
+ <member name="E:Microsoft.Diagnostics.Tracing.TraceEventParser.All">
+ <summary>
+ Subscribe to all the events this parser can parse. It is shorthand for AddCallback{TraceEvent}(value)/RemoveCallback(value)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventParser.AddCallbackForEvent``1(System.String,System.Action{``0})">
+ <summary>
+ A shortcut that adds 'callback' in the provider associated with this parser (ProvderName) and an event name 'eventName'. 'eventName'
+ can be null in which case any event that matches 'Action{T}' will call the callback.
+ 'eventName is of the form 'TaskName/OpcodeName' if the event has a non-trivial opcode, otherwise it is 'TaskName'.
+ <para>
+ The callback alone is used as the subscription id for unregistration, so the callback delegate should be unique (by delegate comparison)
+ </para>
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventParser.AddCallbackForEvents``1(System.Action{``0})">
+ <summary>
+ Causes 'callback' to be called for any event in the provider associated with this parser (ProviderName) whose type is compatible with T and
+ whose eventName will pass 'eventNameFilter'.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventParser.AddCallbackForEvents``1(System.Predicate{System.String},System.Action{``0})">
+ <summary>
+ Causes 'callback' to be called for any event in the provider associated with this parser (ProviderName) whose type is compatible with T and
+ whose eventName will pass 'eventNameFilter'. The eventNameFilter parameter can be null, in which case all events that are compatible
+ with T will be selected.
+
+ eventNames passed to the filer are of the form 'TaskName/OpcodeName' if the event has a non-trivial opcode, otherwise it is 'TaskName'.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventParser.AddCallbackForEvents``1(System.Predicate{System.String},System.Object,System.Action{``0})">
+ <summary>
+ Causes 'callback' to be called for any event in the provider associated with this parser (ProviderName) whose type is compatible with T and
+ whose eventName will pass 'eventNameFilter'. The eventNameFilter parameter can be null, in which case all events that are compatible
+ with T will be selected.
+ <para>
+ A 'subscriptionID' can be passed and this value along with the callback can be used
+ to uniquely identify subscription to remove using the 'RemoveCallback' API. If null is passed, then only the identity of the callback can
+ be used to identify the subscription to remove.
+
+ eventNames passed to the filer are of the form 'TaskName/OpcodeName' if the event has a non-trivial opcode, otherwise it is 'TaskName'.
+ </para>
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventParser.AddCallbackForProviderEvent(System.String,System.String,System.Action{Microsoft.Diagnostics.Tracing.TraceEvent})">
+ <summary>
+ A shortcut that adds 'callback' for the event in 'providerName' and an event name 'eventName'
+ The callback alone is used as the subscription id for unregistration, so the callback delegate should be unique (by delegate comparison)
+
+ eventName is of the of the form 'TaskName/OpcodeName' if the event has a non-trivial opcode, otherwise it is 'TaskName'.
+
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventParser.AddCallbackForProviderEvents(System.Func{System.String,System.String,Microsoft.Diagnostics.Tracing.EventFilterResponse},System.Action{Microsoft.Diagnostics.Tracing.TraceEvent})">
+ <summary>
+ Cause 'callback' to be called for any event that this parser recognizes for which the function 'eventsToObserve'
+ returns 'AcceptEvent'. The 'eventsToObserve is given both the provider name (first) and the event name and can return
+ 'AcceptEvent' 'RejectEvent' or 'RejectProvider' (in which case it may not be called again for that provider).
+ eventsToObserver can be null in which case all events that match the parser recognizes are selected.
+
+ eventNames passed to the filer are of the form 'TaskName/OpcodeName' if the event has a non-trivial opcode, otherwise it is 'TaskName'.
+
+ <para>
+ Thus this method works for parsers that parse more than one provider (e.g. DynamicTraceEventParser).
+ </para>
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventParser.AddCallbackForProviderEvents(System.Func{System.String,System.String,Microsoft.Diagnostics.Tracing.EventFilterResponse},System.Object,System.Action{Microsoft.Diagnostics.Tracing.TraceEvent})">
+ <summary>
+ Cause 'callback' to be called for any event that this parser recognizes for which the function 'eventsToObserve'
+ returns 'AcceptEvent'. The 'eventsToObserve is given both the provider name (first) and the event name and can return
+ 'AcceptEvent' 'RejectEvent' or 'RejectProvider' (in which case it may not be called again for that provider).
+ eventsToObserver can be null in which case all events that match the parser recognizes are selected.
+
+ eventNames passed to the filer are of the form 'TaskName/OpcodeName' if the event has a non-trivial opcode, otherwise it is 'TaskName'. ///
+ <para>
+ Thus this method works for parsers that parse more than one provider (e.g. DynamicTraceEventParser).
+ </para><para>
+ A subscriptionID can optionally be passed. This is used (along with the callback identity) to identify this to the 'RemoveCallback' If you
+ don't need to remove the callback or you will do it in bulk, you don't need this parameter.
+ </para>
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventParser.RemoveCallback``1(System.Action{``0},System.Object)">
+ <summary>
+ Remove all subscriptions added with 'AddCallback' (any overload), that is compatible with T, has a callback 'callback' and subscriptionId 'subscriptionId'
+ where 'subscriptionId' was the value that was optionally passed to 'AddCallback' to provide exactly this disambiguation.
+ <para>
+ 'callback' or 'subscriptionId' can be null, in which case it acts as a wild card. Thus RemoveCallback{TraceEvent}(null, null) will remove all callbacks
+ that were registered through this parser.
+ </para>
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEventParser.IsStatic">
+ <summary>
+ A static TraceEventParser is a parser where the set of events that can be subscribed to (and their payload fields) are known at
+ compile time. There are very few dynamic TraceEventParsers (DynamicTraceEventParser, RegisteredTraceEventParser and WPPTraceEventParser)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventParser.#ctor(Microsoft.Diagnostics.Tracing.TraceEventSource,System.Boolean)">
+ <summary>
+ All TraceEventParsers invoke this constructor. If 'dontRegister' is true it is not registered with the source.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventParser.GetProviderName">
+ <summary>
+ Normally a TraceEvent parser knows how to parse only one provider. If this is true
+ ProviderName returns the name of this provider. If the parser knows how to parse
+ more than one provider, this property returns null.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.TraceEventParser.StateObject">
+ <summary>
+ If the parser needs to persist data along with the events we put it in a separate object.
+ This object and then implement serialization functionality that allows it to be persisted (this is for ETLX support).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventParser.EnumerateTemplates(System.Func{System.String,System.String,Microsoft.Diagnostics.Tracing.EventFilterResponse},System.Action{Microsoft.Diagnostics.Tracing.TraceEvent})">
+ <summary>
+ Returns a list of all templates currently existing (new ones can come in, but OnNewEventDefintion must be called
+ whenever that happens. Note that the returned templates MUST be cloned and do not have their source or parser state
+ fields set. These must be set as part of subscription (after you know if you care about them or not).
+
+ eventsToObserver is given the provider name and event name and those events that return AcceptEvent will
+ have the 'callback' function called on that template. eventsToObserver can be null which mean all events.
+
+ The returned template IS READ ONLY! If you need a read-write copy (typical), clone it first.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventParser.OnNewEventDefintion(Microsoft.Diagnostics.Tracing.TraceEvent,System.Boolean)">
+ <summary>
+ If the parser can change over time (it can add new definitions), It needs to support this interface. See EnumerateDynamicTemplates for details.
+ This function should be called any time a new event is now parsable by the parser. If it is guaranteed that the particular event is
+ definitely being ADDED (it never existed in the past), then you can set 'mayHaveExistedBefore' to false and save some time.
+
+ It returns false if there are no definitions for that particular Provider (and thus you can skip callback if desired).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventParser.Subscribe(Microsoft.Diagnostics.Tracing.TraceEventParser.SubscriptionRequest,Microsoft.Diagnostics.Tracing.TraceEvent,System.Object,System.Boolean)">
+ <summary>
+ Given a subscription request, and a template that can now be parsed (and its state, which is just TraceEventParser.StateObj)
+ If subscription states that the template should be registered with the source, then do the registration.
+
+ if 'mayHaveExistedBefore' means that this template definition may have been seen before (DynamicTraceEventParsers do this as
+ you may get newer versions dynamically registering themselves). In that case this should be set. If you can guaranteed that
+ a particular template (provider-eventID pair) will only be subscribed at most once you can set this to false.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.TraceEventParser.SubscriptionRequest">
+ <summary>
+ Keeps track of a single 'AddCallback' request so it can be removed later. It also handles lazy addition of events.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventParser.SubscriptionRequest.#ctor(System.Func{System.String,System.String,Microsoft.Diagnostics.Tracing.EventFilterResponse},System.Delegate,System.Object)">
+ <summary>
+ Create a subscription request. 'eventsToObserve takes a provider name (first) and a event name and returns a three valued EventFilterResponse
+ value (accept, reject, reject provider)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.TraceEventParser.source">
+ <summary>
+ The source that this parser is connected to.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.EventFilterResponse">
+ <summary>
+ EventFilterResponse is the set of responses a user-defined filtering routine, might return. This is used in the TraceEventParser.AddCallbackForProviderEvents method.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.EventFilterResponse.RejectEvent">
+ <summary>
+ Not an interesting event, but other events in the same provider may be
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.EventFilterResponse.RejectProvider">
+ <summary>
+ No event in the provider will be accepted
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.EventFilterResponse.AcceptEvent">
+ <summary>
+ An interesting event
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.TraceEventDispatcher">
+ <summary>
+ A TraceEventDispatcher is a TraceEventSource that supports a callback model for dispatching events.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventDispatcher.GetDispatcherFromFileName(System.String)">
+ <summary>
+ Obtains the correct TraceEventDispatcher for the given trace file name.
+ </summary>
+ <param name="traceFileName">A path to a trace file.</param>
+ <returns>A TraceEventDispatcher for the given trace file.</returns>
+ </member>
+ <member name="E:Microsoft.Diagnostics.Tracing.TraceEventDispatcher.UnhandledEvents">
+ <summary>
+ Subscribers to UnhandledEvent are called if no other hander has processed the event. It is
+ generally used in DEBUG builds to validate that events are getting to the source at all.
+ </summary>
+ </member>
+ <member name="E:Microsoft.Diagnostics.Tracing.TraceEventDispatcher.AllEvents">
+ <summary>
+ Subscribers to EveryEvent are called on every event in the trace. Normally you don't want
+ to subscribe to this but rather use a TraceEvenParser (which knows how to decode the payloads)
+ and subscribe to particular events through that. For example Using TraceEventSource.Dynamic.All
+ or TraceEventSource.Dynamic.All is more likely to be what you are looking for. AllEvents is only
+ an event callback of last resort, that only gives you the 'raw' data (common fields but no
+ payload).
+ <para>
+ This is called AFTER any event-specific handlers.
+ </para>
+ </summary>
+ </member>
+ <member name="E:Microsoft.Diagnostics.Tracing.TraceEventDispatcher.UnhandledEvent">
+ <summary>
+ Subscribers to UnhandledEvent are called if no other hander has processed the event. It is
+ generally used in DEBUG builds to validate that events are getting to the source at all.
+ </summary>
+ </member>
+ <member name="E:Microsoft.Diagnostics.Tracing.TraceEventDispatcher.EveryEvent">
+ <summary>
+ Subscribers to EveryEvent are called on every event in the trace. Normally you don't want
+ to subscribe to this but rather use a TraceEvenParser and subscribe to particular events
+ through that.
+ <para>
+ This is called AFTER any event-specific handlers.
+ </para>
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventDispatcher.Process">
+ <summary>
+ Once a client has subscribed to the events of interest, calling Process actually causes
+ the callbacks to happen.
+ <para>
+ Subclasses implementing this method should call 'OnCompleted'
+ before returning.
+ </para>
+ </summary>
+ <returns>false If StopProcessing was called</returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventDispatcher.StopProcessing">
+ <summary>
+ Calling StopProcessing in a callback when 'Process()' is running will indicate that processing
+ should be stopped immediately and that the Process() method should return.
+
+ Note that this stop request will not be honored until the next event from the source. Thus
+ for real time sessions there is an indeterminate delay before the stop will complete.
+ If you need to force the stop you should instead call Dispose() on the session associated with
+ the real time session. This will cause the source to be shut down and thus also stop processing
+ (Process() will return) but is guaranteed to complete in a timely manner.
+ </summary>
+ </member>
+ <member name="E:Microsoft.Diagnostics.Tracing.TraceEventDispatcher.Completed">
+ <summary>
+ Subscribers of Completed will be called after processing is complete (right before TraceEventDispatcher.Process returns.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventDispatcher.AddDispatchHook(System.Action{Microsoft.Diagnostics.Tracing.TraceEvent,System.Action{Microsoft.Diagnostics.Tracing.TraceEvent}})">
+ <summary>
+ Wrap (or filter) the dispatch of every event from the TraceEventDispatcher stream.
+ Instead of calling the normal code it calls 'hook' with both the event to be dispatched
+ and the method the would normally do the processing. Thus the routine has
+ the option to call normal processing, surround it with things like a lock
+ or skip it entirely. This can be called more than once, in which case the last
+ hook method gets called first (which may end up calling the second ...)
+
+ For example,here is an example that uses AddDispatchHook to
+ take a lock is taken whenever dispatch work is being performed.
+
+ AddDispatchHook((anEvent, dispatcher) => { lock (this) { dispatcher(anEvent); } });
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventDispatcher.OnCompleted">
+ <summary>
+ Called when processing is complete. You can call this more than once if your not sure if it has already been called.
+ however we do guard against races.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventDispatcher.DistinctCallbackCount">
+ <summary>
+ Number of different events that have callbacks associated with them
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventDispatcher.CallbackCount">
+ <summary>
+ Total number of callbacks that are registered. Even if they are for the same event.
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventDispatcher.Dispatch(Microsoft.Diagnostics.Tracing.TraceEvent)">
+ <summary>
+ This is the routine that is called back when any event arrives. Basically it looks up the GUID
+ and the opcode associated with the event and finds right subclass of TraceEvent that
+ knows how to decode the packet, and calls its virtual TraceEvent.Dispatch method. Note
+ that TraceEvent does NOT have a copy of the data, but rather just a pointer to it.
+ This data is ONLY valid during the callback.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventDispatcher.Lookup(Microsoft.Diagnostics.Tracing.TraceEventNativeMethods.EVENT_RECORD*)">
+ <summary>
+ Lookup up the event based on its ProviderID (GUID) and EventId (Classic use the TaskId and the
+ Opcode field for lookup, but use these same fields (see ETWTraceEventSource.RawDispatchClassic)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventDispatcher.Dispose(System.Boolean)">
+ <summary>
+ Dispose pattern.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventDispatcher.Finalize">
+ <summary>
+ Dispose pattern
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventDispatcher.Insert(Microsoft.Diagnostics.Tracing.TraceEvent)">
+ <summary>
+ Inserts 'template' into the hash table, using 'providerGuid' and and 'eventID' as the key.
+ For Vista ETW events 'providerGuid' must match the provider GUID and the 'eventID' the ID filed.
+ For PreVist ETW events 'providerGuid must match the task GUID the 'eventID' is the Opcode
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceEventDispatcher.GenTaskGuidFromProviderGuid(System.Guid,System.UInt16)">
+ <summary>
+ A helper for creating a set of related guids (knowing the providerGuid can can deduce the
+ 'taskNumber' member of this group. All we do is add the taskNumber to GUID as a number.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.EmptyTraceData">
+ <summary>
+ TraceEventParsers can use this template to define the event for the trivial case where the event has no user-defined payload
+ <para>This is only useful to TraceEventParsers.</para>
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.EmptyTraceData.#ctor(System.Action{Microsoft.Diagnostics.Tracing.EmptyTraceData},System.Int32,System.Int32,System.String,System.Guid,System.Int32,System.String,System.Guid,System.String)">
+ <summary>
+ Construct a TraceEvent template which has no payload fields with the given metadata and action
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.EmptyTraceData.ToXml(System.Text.StringBuilder)">
+ <summary>
+ implementation of TraceEvent Interface.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.EmptyTraceData.PayloadNames">
+ <summary>
+ implementation of TraceEvent Interface.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.EmptyTraceData.PayloadValue(System.Int32)">
+ <summary>
+ implementation of TraceEvent Interface.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.EmptyTraceData.Dispatch">
+ <summary>
+ Dispatches the event to the action associated with the template.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.EmptyTraceData.Target">
+ <summary>
+ override
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.StringTraceData">
+ <summary>
+ When the event has just a single string value associated with it, you can use this shared event
+ template rather than making an event-specific class.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.StringTraceData.Value">
+ <summary>
+ The value of the one string payload property.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.StringTraceData.#ctor(System.Action{Microsoft.Diagnostics.Tracing.StringTraceData},System.Int32,System.Int32,System.String,System.Guid,System.Int32,System.String,System.Guid,System.String,System.Boolean)">
+ <summary>
+ Construct a TraceEvent template which has one string payload field with the given metadata and action
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.StringTraceData.ToXml(System.Text.StringBuilder)">
+ <summary>
+ implementation of TraceEvent Interface.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.StringTraceData.PayloadNames">
+ <summary>
+ implementation of TraceEvent Interface.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.StringTraceData.PayloadValue(System.Int32)">
+ <summary>
+ implementation of TraceEvent Interface.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.StringTraceData.Dispatch">
+ <summary>
+ implementation of TraceEvent Interface.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.StringTraceData.Target">
+ <summary>
+ override
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.UnhandledTraceEvent">
+ <summary>
+ UnhandledTraceEvent is a TraceEvent when is used when no manifest information is available for the event.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.UnhandledTraceEvent.ToXml(System.Text.StringBuilder)">
+ <summary>
+ implementation of TraceEvent Interface.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.UnhandledTraceEvent.PayloadNames">
+ <summary>
+ implementation of TraceEvent Interface.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.UnhandledTraceEvent.PayloadValue(System.Int32)">
+ <summary>
+ implementation of TraceEvent Interface.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.UnhandledTraceEvent.Dispatch">
+ <summary>
+ implementation of TraceEvent Interface.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.UnhandledTraceEvent.Target">
+ <summary>
+ override
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.UnhandledTraceEvent.ToString">
+ <summary>
+ implementation of TraceEvent Interface.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.UnhandledTraceEvent.PrepForCallback">
+ <summary>
+ There is some work needed to prepare the generic unhandledTraceEvent that we defer
+ late (since we often don't care about unhandled events)
+
+ TODO this is probably not worht the complexity...
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.ObservableExtensions">
+ <summary>
+ ObservableExtensions defines methods on TraceEventParser that implement the IObservable protocol for implementing callbacks.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ObservableExtensions.Observe``1(Microsoft.Diagnostics.Tracing.TraceEventParser,System.String)">
+ <summary>
+ Returns an IObjservable that observes all events that 'parser' knows about that return a T. If eventName is
+ non-null, the event's name must match 'eventName', but if eventName is null, any event that returns a T is observed.
+ <para>
+ This means that Observe{TraceEvent}(parser) will observe all events that the parser can parse.
+
+ Note that unlike the methods on TraceEventParser, the TraceEvent object returned is already Cloned() and thus can be
+ referenced for as long as you like.
+ </para>
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ObservableExtensions.Observe``1(Microsoft.Diagnostics.Tracing.TraceEventParser,System.Predicate{System.String})">
+ <summary>
+ Returns an IObjservable that observes all events that 'parser' knows about that return a T and whose event
+ name matches the 'eventNameFilter' predicate.
+
+ Note that unlike the methods on TraceEventParser, the TraceEvent object returned is already Cloned() and thus can be
+ referenced for as long as you like.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ObservableExtensions.Observe(Microsoft.Diagnostics.Tracing.TraceEventParser,System.String,System.String)">
+ <summary>
+ Observe a particular event from a particular provider. If eventName is null, it will return every event from the provider
+
+ Note that unlike the methods on TraceEventParser, the TraceEvent object returned is already Cloned() and thus can be
+ referenced for as long as you like.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ObservableExtensions.Observe(Microsoft.Diagnostics.Tracing.TraceEventParser,System.Func{System.String,System.String,Microsoft.Diagnostics.Tracing.EventFilterResponse})">
+ <summary>
+ Given a predicate 'eventToObserve' which takes the name of a provider (which may be of the form Provider(GUID)) (first) and
+ an event name (which may be of the form EventID(NUM)) and indicates which events to observe, return an IObservable
+ that observes those events.
+
+ Note that unlike the methods on TraceEventParser, the TraceEvent object returned is already Cloned() and thus can be
+ referenced for as long as you like. .
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ObservableExtensions.ObserveAll(Microsoft.Diagnostics.Tracing.TraceEventDispatcher)">
+ <summary>
+ Returns an observable that observes all events from the event source 'source'
+
+ Note that unlike the methods on TraceEventParser, the TraceEvent object returned is already Cloned() and thus can be
+ referenced for as long as you like.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ObservableExtensions.ObserveUnhandled(Microsoft.Diagnostics.Tracing.TraceEventDispatcher)">
+ <summary>
+ Returns an observable that observes all events from the event source 'source' which are not handled by a callback connected to 'source'
+
+ Note that unlike the methods on TraceEventParser, the TraceEvent object returned is already Cloned() and thus can be
+ referenced for as long as you like.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.ObservableExtensions.TraceEventObservable`1">
+ <summary>
+ A TraceEventObservable is a helper class that implements the IObservable pattern for TraceEventDispatcher
+ (like ETWTraceEventDispatcher). It is called from the TraceEventParser.Observe*{T} methods.
+ </summary>
+ <typeparam name="T"></typeparam>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.ObservableExtensions.TraceEventObservable`1.TraceEventSubscription">
+ <summary>
+ A TraceEventSubscription is helper class that hooks 'callback' and 'completedCallback' to the 'observable' and
+ unhooks them when 'Dispose' is called.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.TraceEventNativeMethods">
+ <summary>
+ TraceEventNativeMethods contains the PINVOKE declarations needed
+ to get at the Win32 TraceEvent infrastructure. It is effectively
+ a port of evntrace.h to C# declarations.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.TraceEventNativeMethods.TIME_ZONE_INFORMATION">
+ <summary>
+ Time zone info. Used as one field of TRACE_EVENT_LOGFILE, below.
+ Total struct size is 0xac.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.TraceEventNativeMethods.WNODE_HEADER">
+ <summary>
+ EventTraceHeader structure used by EVENT_TRACE_PROPERTIES
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.TraceEventNativeMethods.EVENT_TRACE_PROPERTIES">
+ <summary>
+ EVENT_TRACE_PROPERTIES is a structure used by StartTrace, ControlTrace
+ however it can not be used directly in the definition of these functions
+ because extra information has to be hung off the end of the structure
+ before being passed. (LofFileNameOffset, LoggerNameOffset)
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.TraceEventNativeMethods.EVENT_TRACE_HEADER">
+ <summary>
+ EventTraceHeader and structure used to defined EVENT_TRACE (the main packet)
+ I have simplified from the original struct definitions. I have
+ omitted alternate union-fields which we don't use.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.TraceEventNativeMethods.EVENT_TRACE">
+ <summary>
+ EVENT_TRACE is the structure that represents a single 'packet'
+ of data repesenting a single event.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.TraceEventNativeMethods.TRACE_LOGFILE_HEADER">
+ <summary>
+ TRACE_LOGFILE_HEADER is a header used to define EVENT_TRACE_LOGFILEW.
+ Total struct size is 0x110.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.TraceEventNativeMethods.EVENT_TRACE_LOGFILEW">
+ <summary>
+ EVENT_TRACE_LOGFILEW Main struct passed to OpenTrace() to be filled in.
+ It represents the collection of ETW events as a whole.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.TraceEventNativeMethods.EVENT_HEADER">
+ <summary>
+ EventTraceHeader and structure used to define EVENT_TRACE_LOGFILE (the main packet on Vista and above)
+ I have simplified from the original struct definitions. I have
+ omitted alternate union-fields which we don't use.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.TraceEventNativeMethods.ETW_BUFFER_CONTEXT">
+ <summary>
+ Provides context information about the event
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.TraceEventNativeMethods.EVENT_RECORD">
+ <summary>
+ Defines the layout of an event that ETW delivers
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.ControllerCommand">
+ <summary>
+ Possible control commands (borrowed from EventSource)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.ControllerCommand.Update">
+ <summary>
+ Standard 'update' command to send additional information to a provider
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.ControllerCommand.SendManifest">
+ <summary>
+ Instructs an EventSource-based provider to send its manifest
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Session.TraceEventSession">
+ <summary>
+ A TraceEventSession represents a single ETW Tracing Session. A session is and event sink that
+ can enable or disable event logging from event providers). TraceEventSessions can log their
+ events either to a file, or by issuing callbacks when events arrive (a so-called 'real time'
+ session).
+ <para>
+ Session are MACHINE wide and unlike most OS resources the operating system does NOT reclaim
+ them when the process that created it dies. By default TraceEventSession tries is best to
+ do this reclamation, but it is possible that for 'orphan' session to accidentally survive
+ if the process is ended abruptly (e.g. by the debugger or a user explicitly killing it). It is
+ possible to turn off TraceEventSession automatic reclamation by setting the StopOnDispose
+ property to false (its default is true).
+ </para>
+ <para>
+ Kernel events have additional restrictions. In particular there is a special API (EnableKernelProvider).
+ Before Windows 8, there was a restriction that kernel events could only be enabled from a session
+ with a special name (see KernelTraceEventParser.KernelSessionName) and thus there could only be a single
+ session that could log kernel events (and that session could not log non-kernel events). These
+ restrictions were dropped in windows 8.
+ </para>
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.#ctor(System.String,System.String,Microsoft.Diagnostics.Tracing.Session.TraceEventSessionOptions)">
+ <summary>
+ Create a new logging session sending the output to a given file.
+ </summary>
+ <param name="sessionName">
+ The name of the session. Since session can exist beyond the lifetime of the process this name is
+ used to refer to the session from other processes after it is created. By default TraceEventSessions
+ do their best to close down if the TraceEventSession dies (see StopOnDispose), however if StopOnDispose
+ is set to false, the session can live on after process death, and you use the name to refer to it later.
+ </param>
+ <param name="fileName">
+ The output moduleFile (by convention .ETL) to put the event data. If this is null, and CircularMB is set
+ to something non-zero, then it will do an in-memory circular buffer. You can get this buffer by
+ using the 'SetFileName()' method which dumps the data in the buffer.
+ </param>
+ <param name="options">Additional flags that influence behavior. Note that the 'Create' option is implied for file mode sessions. </param>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.#ctor(System.String,Microsoft.Diagnostics.Tracing.Session.TraceEventSessionOptions)">
+ <summary>
+ Open a logging session. By default (if options is not specified) a new 'real time' session is created if
+ the session already existed it is closed and reopened (thus orphans are cleaned up on next use). By default
+ sessions are closed on Dispose, but if the destructor does not run it can produce 'orphan' session that will
+ live beyond the lifetime of the process. You can use the StopOnDispose property to force sessions to live
+ beyond the TraceEventSession that created them and use the TraceEventSessionOptions.Attach option to reattach
+ to these sessions.
+ </summary>
+ <param name="sessionName"> The name of the session to open. Should be unique across the machine.</param>
+ <param name="options"> Construction options. TraceEventSessionOptions.Attach indicates a desire to attach
+ to an existing session. </param>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.GetActiveSession(System.String)">
+ <summary>
+ Looks for an existing active session named 'sessionName; and returns the TraceEventSession associated with it if it exists.
+ Returns null if the session does not exist. You can use the GetActiveSessionNames() to get a list of names to pass to this method.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.EnableProvider(System.String,Microsoft.Diagnostics.Tracing.TraceEventLevel,System.UInt64,Microsoft.Diagnostics.Tracing.Session.TraceEventProviderOptions)">
+ <summary>
+ Enable a NON-KERNEL provider (see also EnableKernelProvider) which has a given provider name.
+ This API first checks if a published provider exists by that name, otherwise it
+ assumes it is an EventSouce and determines the provider Guid by hashing the name according to a
+ well known algorithm. Thus it will never return a failure for a incorrect spelling of the name.
+ </summary>
+ <param name="providerName">
+ The name of the provider. It must either be registered with the operating system (logman query providers returns it)
+ or it must be an EventSource (see GetEventSourceGuidFromName)</param>
+ <param name="providerLevel">The verbosity to turn on</param>
+ <param name="matchAnyKeywords">A bitvector representing the areas to turn on. Only the
+ low 32 bits are used by classic providers and passed as the 'flags' value. Zero
+ is a special value which is a provider defined default, which is usually 'everything'</param>
+ <param name="options">Additional options for the provider (e.g. taking a stack trace), arguments ... </param>
+ <returns>true if the session already existed and needed to be restarted.</returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.EnableProvider(System.Guid,Microsoft.Diagnostics.Tracing.TraceEventLevel,System.UInt64,Microsoft.Diagnostics.Tracing.Session.TraceEventProviderOptions)">
+ <summary>
+ Enable a NON-KERNEL provider (see also EnableKernelProvider) which has a given provider Guid.
+ </summary>
+ <param name="providerGuid">
+ The Guid that represents the event provider enable. </param>
+ <param name="providerLevel">The verbosity to turn on</param>
+ <param name="matchAnyKeywords">A bitvector representing the areas to turn on. Only the
+ low 32 bits are used by classic providers and passed as the 'flags' value. Zero
+ is a special value which is a provider defined default, which is usually 'everything'</param>
+ <param name="options">Additional options for the provider (e.g. taking a stack trace), arguments ... </param>
+ <returns>true if the session already existed and needed to be restarted.</returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.EnableProvider(System.String,Microsoft.Diagnostics.Tracing.TraceEventLevel,System.UInt64,Microsoft.Diagnostics.Tracing.Session.TraceEventOptions,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}})">
+ <summary>
+ Enable a NON-KERNEL provider (see also EnableKernelProvider) which has a given provider name.
+ This API first checks if a published provider exists by that name, otherwise it
+ assumes it is an EventSouce and determines the provider Guid by hashing the name according to a
+ well known algorithm. Thus it will never return a failure for a incorrect spelling of the name.
+ </summary>
+ <param name="providerName">
+ The name of the provider. It must either be registered with the operating system (logman query providers returns it)
+ or it must be an EventSource (see GetEventSourceGuidFromName)</param>
+ <param name="providerLevel">The verbosity to turn on</param>
+ <param name="matchAnyKeywords">A bitvector representing the areas to turn on. Only the
+ low 32 bits are used by classic providers and passed as the 'flags' value. Zero
+ is a special value which is a provider defined default, which is usually 'everything'</param>
+ <param name="options">Additional options for the provider (e.g. taking a stack trace)</param>
+ <param name="values">This is set of key-value strings that are passed to the provider
+ for provider-specific interpretation. Can be null if no additional args are needed.
+ If the special key-value pair 'Command'='SendManifest' is provided, then the 'SendManifest'
+ command will be sent (which causes EventSources to re-dump their manifest to the ETW log. </param>
+ <returns>true if the session already existed and needed to be restarted.</returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.EnableProvider(System.Guid,Microsoft.Diagnostics.Tracing.TraceEventLevel,System.UInt64,Microsoft.Diagnostics.Tracing.Session.TraceEventOptions,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}})">
+ <summary>
+ Enable a NON-KERNEL provider (see also EnableKernelProvider) represented by 'providerGuid'.
+ </summary>
+ <param name="providerGuid">
+ The Guid that represents the event provider enable. </param>
+ <param name="providerLevel">The verbosity to turn on</param>
+ <param name="matchAnyKeywords">A bitvector representing the areas to turn on. Only the
+ low 32 bits are used by classic providers and passed as the 'flags' value. Zero
+ is a special value which is a provider defined default, which is usually 'everything'</param>
+ <param name="options">Additional options for the provider (e.g. taking a stack trace)</param>
+ <param name="values">This is set of key-value strings that are passed to the provider
+ for provider-specific interpretation. Can be null if no additional args are needed.
+ If the special key-value pair 'Command'='SendManifest' is provided, then the 'SendManifest'
+ command will be sent (which causes EventSources to re-dump their manifest to the ETW log. </param>
+ <returns>true if the session already existed and needed to be restarted.</returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.EnableProviderWithRawProviderData(System.Guid,Microsoft.Diagnostics.Tracing.TraceEventLevel,System.UInt64,Microsoft.Diagnostics.Tracing.Session.TraceEventOptions,System.Byte[],System.Int32)">
+ <summary>
+ Enable an ETW provider, passing a raw blob of data to the provider as a Filter specification.
+
+ Note that this routine is only provided to interact with old ETW providers that can interpret EVENT_FILTER_DESCRIPTOR data
+ but did not conform to the key-value string conventions. This allows this extra information to be passed to these old
+ providers. Ideally new providers follow the key-value convention and EnableProvider can be used.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.MakeDictionary(System.String[])">
+ <summary>
+ Helper function that is useful when using EnableProvider with key value pairs.
+ Given a list of key-value pairs, create a dictionary of the keys mapping to the values.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.EnableKernelProvider(Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords,Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords)">
+ <summary>
+ Enable the kernel provider for the session. Before windows 8 this session must be called 'NT Kernel Session'.
+ This API is OK to call from one thread while Process() is being run on another
+ <param name="flags">Specifies the particular kernel events of interest</param>
+ <param name="stackCapture">
+ Specifies which events should have their stack traces captured when an event is logged</param>
+ <returns>Returns true if the session existed before and was restarted (see TraceEventSession)</returns>
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.EnableWindowsHeapProvider(System.Int32)">
+ <summary>
+ Turn on windows heap logging (stack for allocation) for a particular existing process.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.EnableWindowsHeapProvider(System.String)">
+ <summary>
+ Turn on windows heap logging for a particular EXE file name (just the file name, no directory, but it DOES include the .exe extension)
+ This API is OK to call from one thread while Process() is being run on another
+ </summary>
+ <param name="exeFileName"></param>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.DisableProvider(System.Guid)">
+ <summary>
+ Disables a provider with the given provider ID completely
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.DisableProvider(System.String)">
+ <summary>
+ Disables a provider with the given name completely
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.Stop(System.Boolean)">
+ <summary>
+ Once started, event sessions will persist even after the process that created them dies. They will also be
+ implicitly stopped when the TraceEventSession is closed unless the StopOnDispose property is set to false.
+ This API is OK to call from one thread while Process() is being run on another
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.Dispose">
+ <summary>
+ Close the session and clean up any resources associated with the session. It is OK to call this more than once.
+ This API is OK to call from one thread while Process() is being run on another. Calling Dispose is on
+ a real time session is the way you can force a real time session to stop in a timely manner.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.Flush">
+ <summary>
+ Asks all providers to flush events to the session
+ This API is OK to call from one thread while Process() is being run on another
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.SetFileName(System.String)">
+ <summary>
+ For either session create with a file name this method can be used to redirect the data to a
+ new file (so the previous one can be uploaded or processed offline),
+
+ It can also be used for a in-memory circular buffer session (FileName == null and CircularMB != 0)
+ but its semantics is that simply writes the snapshot to the file (and closes it). It does not
+ actually make the FileName property become non-null because it only flushes the data, it does
+ not cause persistent redirection of the data stream. (it is like it auto-reverts).
+
+ It is an error to call this on a real time session. (FileName == null and CircularMB == 0)
+ </summary>
+ <param name="newName">The path to the file to write the data to.</param>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.CaptureStateOnSetFileName">
+ <summary>
+ If set, whenever a SetFileName is called (causing a new ETL file to be created), force
+ a capture state for every provider that is currently turned on. This way the file
+ will be self-contained (will contain all the capture state information needed to decode events)
+ This setting is true by default.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.CaptureState(System.Guid,System.UInt64,System.Int32,System.Object)">
+ <summary>
+ Sends the CAPTURE_STATE command to the provider. This instructs the provider to log any events that are needed to
+ reconstruct important state that was set up before the session started. What is actually done is provider specific.
+ EventSources will re-dump their manifest on this command.
+ This API is OK to call from one thread while Process() is being run on another
+ <para>
+ This routine only works Win7 and above, since previous versions don't have this concept. The providers also has
+ to support it.
+ </para>
+ </summary>
+ <param name="providerGuid">The GUID that identifies the provider to send the CaptureState command to</param>
+ <param name="matchAnyKeywords">The Keywords to send as part of the command (can influence what is sent back)</param>
+ <param name="filterType">if non-zero, this is passed along to the provider as type of the filter data.</param>
+ <param name="data">If non-null this is either an int, or a byte array and is passed along as filter data.</param>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.EnableProviderTimeoutMSec">
+ <summary>
+ When you issue a EnableProvider command, on windows 7 and above it can be done synchronously (that is you know that because
+ the EnableProvider returned that the provider actually got the command). However synchronous behavior means that
+ you may wait forever. This is the time EnableProvider waits until it gives up. Setting this
+ to 0 means asynchronous (fire and forget). The default is 10000 (wait 10 seconds)
+ Before windows 7 EnableProvider is always asynchronous.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.StopOnDispose">
+ <summary>
+ If set then Stop() will be called automatically when this object is Disposed or Finalized by the GC.
+ This is true BY DEFAULT, so if you want your session to survive past the end of the process
+ you must set this to false.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.CircularBufferMB">
+ <summary>
+ Cause the log to be a circular buffer. The buffer size (in MegaBytes) is the value of this property.
+ Setting this to 0 will cause it to revert to non-circular mode.
+ The setter can only be called BEFORE any provider is enabled.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.MultiFileMB">
+ <summary>
+ Cause the as a set of files with a given maximum size. The file name must end in .ETL and the
+ output is then a series of files of the form *NNN.ETL (That is it adds a number just before the
+ .etl suffix). If you make your file name *.user.etl then the output will be *.user1.etl, *.user2.etl ...
+ And the MergeInPlace command below will merge them all nicely.
+
+ You can have more control over this by using a normal sequential file but use the SetFileName()
+ method to redirect the data to new files as needed.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.BufferSizeMB">
+ <summary>
+ Sets the size of the buffer the operating system should reserve to avoid lost packets. Starts out
+ as a very generous 64MB for files. If events are lost, this can be increased, but keep in mind that
+ no value will help if the average incoming rate is faster than the processing rate.
+ The setter can only be called BEFORE any provider is enabled.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.BufferQuantumKB">
+ <summary>
+ This is the unit in which data is flushed in Kilobytes. By default it is 64 (KB).
+ By default a TraceEventSession will flush every second, and this amount of space will be transferred
+ to the file. Ideally it is smaller than the number data bytes you expect in a second from any
+ particular processor. It can't be less than 1K per processor on the machine. However if you make
+ it less than 64 (K) you will limit the size of the event that the process can send
+ (they will simply be discarded).
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.CpuSampleIntervalMSec">
+ <summary>
+ The rate at which CPU samples are collected. By default this is 1 (once a millisecond per CPU).
+ There is a lower bound on this (typically .125 Msec)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.StackCompression">
+ <summary>
+ Indicate that this session should use compress the stacks to save space.
+ Must be set before any providers are enabled. Currently only works for kernel events.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.SessionName">
+ <summary>
+ The name of the session that can be used by other threads to attach to the session.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.FileName">
+ <summary>
+ The name of the moduleFile that events are logged to. Null means the session is real time
+ or is a circular in-memory buffer. See also SetFileName() method.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.Source">
+ <summary>
+ If this is a real time session you can fetch the source associated with the session to start receiving events.
+ Currently does not work on file based sources (we expect you to wait until the file is complete).
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.IsActive">
+ <summary>
+ Creating a TraceEventSession does not actually interact with the operating system until a
+ provider is enabled. At that point the session is considered active (OS state that survives a
+ process exit has been modified). IsActive returns true if the session is active.
+
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.EventsLost">
+ <summary>
+ Returns the number of events that should have been delivered to this session but were lost
+ (typically because the incoming rate was too high). This value is up-to-date for real time
+ sessions.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.IsCircular">
+ <summary>
+ Returns true if the session is logging to a circular buffer. This may be in-memory (FileName == null)
+ or to a file (FileName != null)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.IsRealTime">
+ <summary>
+ Returns true if the session is Real Time. This means it is not to a file, and not circular.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.IsInMemoryCircular">
+ <summary>
+ Returns true if this is a in-memory circular buffer (it is circular without an output file).
+ Use SetFileName() to dump the in-memory buffer to a file.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.GetActiveSessionNames">
+ <summary>
+ ETW trace sessions survive process shutdown. Thus you can attach to existing active sessions.
+ GetActiveSessionNames() returns a list of currently existing session names. These can be passed
+ to the TraceEventSession constructor to open it.
+ </summary>
+ <returns>A enumeration of strings, each of which is a name of a session</returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.Merge(System.String[],System.String,Microsoft.Diagnostics.Tracing.Session.TraceEventMergeOptions)">
+ <summary>
+ It is sometimes useful to merge the contents of several ETL files into a single
+ output ETL file. This routine does that. It also will attach additional
+ information that will allow correct file name and symbolic lookup if the
+ ETL file is used on a machine other than the one that the data was collected on.
+ If you wish to transport the file to another machine you need to merge them, even
+ if you have only one file so that this extra information get incorporated.
+ </summary>
+ <param name="inputETLFileNames">The input ETL files to merge</param>
+ <param name="outputETLFileName">The output ETL file to produce.</param>
+ <param name="options">Optional Additional options for the Merge (seeTraceEventMergeOptions) </param>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.MergeInPlace(System.String,System.IO.TextWriter)">
+ <summary>
+ This variation of the Merge command takes the 'primary' etl file name (X.etl)
+ and will merge in any files that match .clr*.etl .user*.etl. and .kernel.etl.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.IsElevated">
+ <summary>
+ Is the current process Elevated (allowed to turn on a ETW provider). This is useful because
+ you need to be elevated to enable providers on a TraceEventSession.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.SetDebugPrivilege">
+ <summary>
+ Set the Windows Debug Privilege. Useful because some event providers require this privilege, and
+ and it must be enabled explicitly (even if the process is elevated).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.Finalize">
+ <summary>
+ The 'properties' field is only the header information. There is 'tail' that is
+ required. 'ToUnmangedBuffer' fills in this tail properly.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.ProviderNameToGuid">
+ <summary>
+ Returns a sorted dictionary of names and Guids for every provider registered on the system.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.ComputeEventIds(Microsoft.Diagnostics.Tracing.TraceEventNativeMethods.EVENT_FILTER_DESCRIPTOR*,System.Byte*,System.Int32,System.Collections.Generic.IList{System.Int32},System.Boolean,System.Int32)">
+ <summary>
+ sets up the EVENT_FILTER_DESCRIPTOR descr to represent the Event Ids in 'eventIds'. You are given the buffer
+ necessary for this (precomputed) for the EVENT_FILTER_EVENT_ID structure. 'enable' is true if this is to enable
+ (otherwise disable) the events, and descrType indicates the descriptor type (either EVENT_FILTER_TYPE_EVENT_ID or
+ EVENT_FILTER_TYPE_STACKWALK)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.ComputeEventIdsBufferSize(System.Collections.Generic.IList{System.Int32})">
+ <summary>
+ Computes the number of bytes needed for the EVENT_FILTER_EVENT_ID structure to represent 'eventIds'
+ return 0 if there is not need for the filter at all.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.CleanFilterDataForEtwSession">
+ <summary>
+ Cleans out all provider data associated with this session.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.SetFilterDataForEtwSession(System.String,System.Byte[],System.Boolean)">
+ <summary>
+ SetDataForSession sets the filter data for an ETW session by storing it in the registry.
+ This is basically a work-around for the fact that filter data does not get transmitted to
+ the provider if the provider is not alive at the time the controller issues the EnableProvider
+ call. We store in the registry and EventSource looks there for it if it is not present.
+
+ Note that we support up to 'maxSession' etw sessions simultaneously active (having different
+ filter data). The function return a sessionIndex that indicates which of the 'slots'
+ was used to store the data. This routine also 'garbage collects' data for sessions that
+ have died without cleaning up their filter data.
+
+ If 'data' is null, then it indicates that no data should be stored and the registry entry
+ is removed.
+
+ If 'allSesions' is true it means that you want 'old style' data filtering that affects all ETW sessions
+ This is present only used for compatibilty
+ </summary>
+ <returns>the session index that will be used for this session. Returns -1 if an entry could not be found </returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.SetStackTraceIds(Microsoft.Diagnostics.Tracing.Parsers.KernelTraceEventParser.Keywords,Microsoft.Diagnostics.Tracing.Extensions.STACK_TRACING_EVENT_ID*,System.Int32)">
+ <summary>
+ Given a mask of kernel flags, set the array stackTracingIds of size stackTracingIdsMax to match.
+ It returns the number of entries in stackTracingIds that were filled in.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventSession.GetProperties(System.Byte*)">
+ <summary>
+ Get a EVENT_TRACE_PROPERTIES structure suitable for passing the the ETW out of a 'buffer' which must be PropertiesSize bytes
+ in size.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Session.TraceEventMergeOptions">
+ <summary>
+ Used in the TraceEventSession.Merge method
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Session.TraceEventMergeOptions.None">
+ <summary>
+ No special options
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Session.TraceEventMergeOptions.Compress">
+ <summary>
+ Compress the resulting file.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Session.TraceEventProviderOptions">
+ <summary>
+ TraceEventProviderOptions represents all the optional arguments that can be passed to EnableProvider command.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventProviderOptions.#ctor">
+ <summary>
+ Create new options object with no options set
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventProviderOptions.#ctor(System.String[])">
+ <summary>
+ Create new options object with a set of given provider arguments key-value pairs. There must be a even number
+ of strings provided and each pair forms a key-value pair that is passed to the AddArgument() operator.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Session.TraceEventProviderOptions.Arguments">
+ <summary>
+ Arguments are a set of key-value strings that are passed uninterpreted to the EventSource. These can be accessed
+ from the EventSource's command callback.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventProviderOptions.AddArgument(System.String,System.String)">
+ <summary>
+ As a convenience, the 'Arguments' property can be modified by calling AddArgument that adds another Key-Value pair
+ to it. If 'Arguments' is not a IDictionary, it is replaced with an IDictionary with the same key-value pairs before
+ the new pair is added.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Session.TraceEventProviderOptions.RawArguments">
+ <summary>
+ For EventSources, you pass arguments to the EventSource by using key value pairs (this 'Arguments' property).
+ However other ETW providers may expect arguments using another convention. RawArguments give a way of passing
+ raw bytes to the provider as arguments. This is only meant for compatibility with old providers. Setting
+ this property will cause the 'Arguments' property to be ignored.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Session.TraceEventProviderOptions.StacksEnabled">
+ <summary>
+ Setting StackEnabled to true will cause all events in the provider to collect stacks when event are fired.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Session.TraceEventProviderOptions.ProcessIDFilter">
+ <summary>
+ Setting ProcessIDFilter will limit the providers that receive the EnableCommand to those that match on of
+ the given Process IDs.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Session.TraceEventProviderOptions.ProcessNameFilter">
+ <summary>
+ Setting ProcessNameFilter will limit the providers that receive the EnableCommand to those that match on of
+ the given Process names (a process name is the name of the EXE without the PATH but WITH the extension).
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Session.TraceEventProviderOptions.EventIDsToEnable">
+ <summary>
+ Setting EventIDs to Enable will enable a particular event of a provider by EventID (in addition to those
+ enabled by keywords).
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Session.TraceEventProviderOptions.EventIDStacksToEnable">
+ <summary>
+ Setting EventIDs to Enable will enable the collection of stacks for a event of a provider by EventID
+ (Has no effect if StacksEnabled is also set since that enable stacks for all events IDs)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Session.TraceEventProviderOptions.EventIDsToDisable">
+ <summary>
+ Setting EventIDsToDisable to Enable will disable the event of a provider by EventID
+ This happens after keywords have been processed, so disabling overrides enabling.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Session.TraceEventProviderOptions.EventIDStacksToDisable">
+ <summary>
+ Setting EventIDs to Enable will disable the collection of stacks for a event of a provider by EventID
+ Has no effect unless StacksEnabled is also set (since otherwise stack collection is off).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventProviderOptions.Clone">
+ <summary>
+ Make a deep copy of options and return it.
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Session.TraceEventProviderOptions.FilteringSupported">
+ <summary>
+ This return true on OS version beyond 8.1 (windows Version 6.3). It means most of the
+ per-event filtering is supported.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Session.TraceEventProviderOptions.s_IsEtwFilteringSupported">
+ <summary>
+ This is the backing field for the lazily-computed <see cref="P:Microsoft.Diagnostics.Tracing.Session.TraceEventProviderOptions.FilteringSupported"/> property.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Session.TraceEventSessionOptions">
+ <summary>
+ TraceEventSessionOptions indicates special handling when creating a TraceEventSession.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Session.TraceEventSessionOptions.Create">
+ <summary>
+ Create a new session, stop and recreated it if it already exists. This is the default.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Session.TraceEventSessionOptions.Attach">
+ <summary>
+ Attach to an existing session, fail if the session does NOT already exist.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Session.TraceEventSessionOptions.NoRestartOnCreate">
+ <summary>
+ Normally if you create a session it will stop and restart it if it exists already. Setting
+ this flat will disable the 'stop and restart' behavior. This is useful if only a single
+ monitoring process is intended.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Session.TraceEventProviders">
+ <summary>
+ TraceEventProviders returns information about providers on the system.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventProviders.GetProviderGuidByName(System.String)">
+ <summary>
+ Given the friendly name of a provider (e.g. Microsoft-Windows-DotNETRuntimeStress) return the
+ GUID for the provider. It does this by looking at all the PUBLISHED providers on the system
+ (that is those registered with wevtutuil). EventSources in particular do not register themselves
+ in this way (see GetEventSourceGuidFromName). Names are case insensitive.
+ It also checks to see if the name is an actual GUID and if so returns that.
+ Returns Guid.Empty on failure.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventProviders.GetEventSourceGuidFromName(System.String)">
+ <summary>
+ EventSources have a convention for converting its name to a GUID. Use this convention to
+ convert 'name' to a GUID. In this way you can get the provider GUID for a EventSource
+ however it can't check for misspellings. Names are case insensitive.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventProviders.GetProviderName(System.Guid)">
+ <summary>
+ Finds the friendly name for 'providerGuid' Returns the Guid as a string if can't be found.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventProviders.MaybeAnEventSource(System.Guid)">
+ <summary>
+ Returns true if 'providerGuid' can be an eventSource. If it says true, there is a 1/16 chance it is not.
+ However if it returns false, it is definitely not following EventSource Guid generation conventions.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventProviders.GetPublishedProviders">
+ <summary>
+ Returns the Guid of every event provider that published its manifest on the machine. This is the
+ same list that the 'logman query providers' command will generate. It is pretty long (&gt; 1000 entries)
+ <para>
+ A event provider publishes a manifest by compiling its manifest into a special binary form and calling
+ the wevtutil utility. Typically EventSource do NOT publish their manifest but most operating
+ system provider do publish their manifest.
+ </para>
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventProviders.GetRegisteredOrEnabledProviders">
+ <summary>
+ Returns the GUID of all event provider that either has registered itself in a running process (that is
+ it CAN be enabled) or that a session has enabled (even if no instances of the provider exist in any process).
+ <para>
+ This is a relatively small list (less than 1000), unlike GetPublishedProviders.
+ </para>
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventProviders.GetRegisteredProvidersInProcess(System.Int32)">
+ <summary>
+ Returns a list of provider GUIDs that are registered in a process with 'processID'. Useful for discovering
+ what providers are available for enabling for a particular process.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventProviders.GetProviderKeywords(System.Guid)">
+ <summary>
+ Returns a description of the keywords a particular provider provides. Only works if the provider has
+ published its manifest to the operating system.
+ Throws an exception if providerGuid is not found
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventProviders.SessionInfosForProvider(System.Guid,System.Int32)">
+ <summary>
+ Returns a list of TRACE_ENABLE_INFO structures that tell about each session (what keywords and level they are
+ set to, for the provider associated with 'providerGuid'. If 'processId != 0, then only providers in that process
+ are returned.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Session.ProviderDataItem">
+ <summary>
+ A list of these is returned by GetProviderKeywords
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Session.ProviderDataItem.Name">
+ <summary>
+ The name of the provider keyword.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Session.ProviderDataItem.Description">
+ <summary>
+ The description for the keyword for the provider
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Session.ProviderDataItem.Value">
+ <summary>
+ the value (bitvector) for the keyword.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.ProviderDataItem.ToString">
+ <summary>
+ and XML representation for the ProviderDataItem (for debugging)
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Session.TraceEventProfileSources">
+ <summary>
+ TraceEventProfileSources is the interface for the Windows processor CPU counter support
+ (e.g. causing a stack to be taken every N dcache misses, or branch mispredicts etc)
+ <para>
+ Note that the interface to these is machine global (That is when you set these you
+ cause any session with the kernel PMCProfile keyword active to start emitting
+ PMCCounterProf events for each ProfileSouce that is enabled.
+ </para>
+ /// </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventProfileSources.GetInfo">
+ <summary>
+ Returns a dictionary of keyed by name of ProfileSourceInfo structures for all the CPU counters available on the machine.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventProfileSources.Set(System.Int32,System.Int32)">
+ <summary>
+ Sets a single Profile Source (CPU machine counters) that will be used if PMC (Precise Machine Counters)
+ are turned on. The profileSourceID is the ID field from the ProfileSourceInfo returned from 'GetInfo()'.
+ and the profileSourceInterval is the interval between sampples (the number of events before a stack
+ is recoreded. If you need more that one (the OS allows up to 4 I think), use the variation of this
+ routine that takes two int[]. Calling this will clear all Profiler sources previously set (it is NOT
+ additive).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Session.TraceEventProfileSources.Set(System.Int32[],System.Int32[])">
+ <summary>
+ Sets the Profile Sources (CPU machine counters) that will be used if PMC (Precise Machine Counters)
+ are turned on. Each CPU counter is given a id (the profileSourceID) and has an interval
+ (the number of counts you skip for each event you log). You can get the human name for
+ all the supported CPU counters by calling GetProfileSourceInfo. Then choose the ones you want
+ and configure them here (the first array indicating the CPU counters to enable, and the second
+ array indicating the interval. The second array can be shorter then the first, in which case
+ the existing interval is used (it persists and has a default on boot).
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Session.ProfileSourceInfo">
+ <summary>
+ Returned by GetProfileSourceInfo, describing the CPU counter (ProfileSource) available on the machine.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Session.ProfileSourceInfo.Name">
+ <summary>
+ Human readable name of the CPU performance counter (eg BranchInstructions, TotalIssues ...)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Session.ProfileSourceInfo.ID">
+ <summary>
+ The ID that can be passed to SetProfileSources
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Session.ProfileSourceInfo.Interval">
+ <summary>
+ This many events are skipped for each sample that is actually recorded
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Session.ProfileSourceInfo.MinInterval">
+ <summary>
+ The smallest Interval can be (typically 4K)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Session.ProfileSourceInfo.MaxInterval">
+ <summary>
+ The largest Interval can be (typically maxInt).
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Session.TraceEventOptions">
+ <summary>
+ These are options to EnableProvider
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Session.TraceEventOptions.None">
+ <summary>
+ No options
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Session.TraceEventOptions.Stacks">
+ <summary>
+ Take a stack trace with the event
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.TraceLog">
+ <summary>
+ The data model for an Event trace log (ETL) file is simply a stream of events. More sophisticated
+ analysis typically needs a a richer data model then ETL files can provide, and this is the
+ motivation for the ETLX (Event Trace Log eXtended) file format. In particular any
+ analysis that needs non-sequential access to the events or manipulates stack traces associated
+ with events needs the additional support that the ETLX format provides. See the TraceEventProgrammers guide
+ for more on the capabilities of ETLX.
+ <para>
+ The TraceLog class is the programmatic representation of an ETLX file. It represents the ETLX file as a whole.
+ </para><para>
+ ETLX files are typically created from ETL files using the TraceLog.OpenOrCreate method or more explicitly
+ by the TraceLog.CreateFromEventTraceLogFile.
+ </para>
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.CreateFromEventTraceLogFile(System.String,System.String,Microsoft.Diagnostics.Tracing.Etlx.TraceLogOptions)">
+ <summary>
+ Given the path to an ETW trace log file (ETL) file, create an ETLX file for the data.
+ <para>If etlxFilePath is null the output name is derived from etlFilePath by changing its file extension to .ETLX.</para>
+ <returns>The name of the ETLX file that was generated.</returns>
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.OpenOrConvert(System.String,Microsoft.Diagnostics.Tracing.Etlx.TraceLogOptions)">
+ <summary>
+ Open an ETLX or ETL file as a ETLX file.
+ <para>
+ This routine assumes that you follow normal conventions of naming ETL files with the .ETL file extension
+ and ETLX files with the .ETLX file extension. It further assumes the ETLX file for a given ETL file
+ should be in a file named the same as the ETL file with the file extension changed.
+ </para><para>
+ etlOrEtlxFilePath can be either the name of the ETL or ETLX file. If the ETLX file does not
+ exist or if it older than the corresponding ETL file then the ETLX file is regenerated with
+ the given options. However if an up-to-date ETLX file exists the conversion step is skipped.
+ </para><para>
+ Ultimately the ETLX file is opened and the resulting TraceLog instance is returned.
+ </para>
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.CreateFromTraceEventSession(Microsoft.Diagnostics.Tracing.Session.TraceEventSession)">
+ <summary>
+ From a TraceEventSession, create a real time TraceLog Event Source. Like a ETWTraceEventSource a TraceLogEventSource
+ will deliver events in real time. However an TraceLogEventSource has an underlying Tracelog (which you can access with
+ the .Log Property) which lets you get at aggregated information (Processes, threads, images loaded, and perhaps most
+ importantly TraceEvent.CallStack() will work. Thus you can get real time stacks from events).
+
+ Note that in order for native stacks to resolve symbolically, you need to have some Kernel events turned on (Image, and Process)
+ and only windows 8 has a session that allows both kernel and user mode events simultaneously. Thus this is most useful
+ on Win 8 systems.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.CreateFromLttngTextDataFile(System.String,System.String,Microsoft.Diagnostics.Tracing.Etlx.TraceLogOptions)">
+ <summary>
+ Creates a ETLX file an Lttng Text file 'filePath'.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.CreateFromEventPipeDataFile(System.String,System.String,Microsoft.Diagnostics.Tracing.Etlx.TraceLogOptions)">
+ <summary>
+ Creates a ETLX file an EventPipe 'filePath'.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.#ctor(System.String)">
+ <summary>
+ Opens an existing Extended Trace Event log file (ETLX) file. See also TraceLog.OpenOrCreate.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.Events">
+ <summary>
+ All the events in the ETLX file. The returned TraceEvents instance supports IEnumerable so it can be used
+ in foreach statements, but it also supports other methods to further filter the evens before enumerating over them.
+
+ Note that the TraceEvent returned from this IEnumerable may only be used for one iteration of the foreach.
+ (it is reused for the next event). If you need more lifetime than that you must call Clone() (see 'Lifetime
+ Constraints' in the programmers guide for more).
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.Processes">
+ <summary>
+ All the Processes that logged an event in the ETLX file. The returned TraceProcesses instance supports IEnumerable so it can be used
+ in foreach statements, but it also supports other methods to select particular a particular process.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.Threads">
+ <summary>
+ All the Threads that logged an event in the ETLX file. The returned TraceThreads instance supports IEnumerable so it can be used
+ in foreach statements, but it also supports other methods to select particular thread.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.ModuleFiles">
+ <summary>
+ All the module files (DLLs) that were loaded by some process in the ETLX file. The returned TraceModuleFiles instance supports IEnumerable so it can be used
+ in foreach statements, but it also supports other methods to select particular module file.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.CallStacks">
+ <summary>
+ All the call stacks in the ETLX file. Normally you don't enumerate over these, but use you use other methods on TraceCallStacks
+ information about code addresses using CallStackIndexes.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.CodeAddresses">
+ <summary>
+ All the code addresses in the ETLX file. Normally you don't enumerate over these, but use you use other methods on TraceCodeAddresses
+ information about code addresses using CodeAddressIndexes.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.Stats">
+ <summary>
+ Summary statistics on the events in the ETX file.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.GetCallStackForEvent(Microsoft.Diagnostics.Tracing.TraceEvent)">
+ <summary>
+ If the event has a call stack associated with it, retrieve it. Returns null if there is not call stack associated with the event.
+ <para>If you are retrieving many call stacks consider using GetCallStackIndexForEvent, as it is more efficient.</para>
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.GetCallStackIndexForEvent(Microsoft.Diagnostics.Tracing.TraceEvent)">
+ <summary>
+ If the event has a call stack associated with it, retrieve CallStackIndex. Returns CallStackIndex.Invalid if there is not call stack associated with the event.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.MaxEventIndex">
+ <summary>
+ Events are given an Index (ID) that are unique across the whole TraceLog. They are not guaranteed
+ to be sequential, but they are guaranteed to be between 0 and MaxEventIndex. Ids can be used to
+ allow clients to associate additional information with event (with a side lookup table). See
+ TraceEvent.EventIndex and EventIndex for more
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.GetEvent(Microsoft.Diagnostics.Tracing.EventIndex)">
+ <summary>
+ Given an eventIndex, get the event. This is relatively expensive because we need to create a
+ copy of the event that will not be reused by the TraceLog. Ideally you would not use this API
+ but rather use iterate over event using TraceEvents
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.EventCount">
+ <summary>
+ The total number of events in the log.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.Size">
+ <summary>
+ The size of the log file in bytes.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.EventsLost">
+ <summary>
+ override
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.FilePath">
+ <summary>
+ The file path for the ETLX file associated with this TraceLog instance.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.MachineName">
+ <summary>
+ The machine on which the log was collected. Returns empty string if unknown.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.OSName">
+ <summary>
+ The name of the Operating system. Returns empty string if unknown.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.OSBuild">
+ <summary>
+ The build number information for the OS. Returns empty string if unknown.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.BootTime">
+ <summary>
+ The time the machine was booted. Returns DateTime.MinValue if it is unknown.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.UTCOffsetMinutes">
+ <summary>
+ This is the number of minutes between the local time where the data was collected and UTC time.
+ It is negative if your time zone is WEST of Greenwich. This DOES take Daylights savings time into account
+ but might be a daylight savings time transition happens inside the trace.
+ May be unknown, in which case it returns null.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.HasPdbInfo">
+ <summary>
+ When an ETL file is 'merged', for every DLL in the trace information is added that allows the symbol
+ information (PDBS) to be identified unambiguously on a symbol server. This property returns true
+ if the ETLX file was created from an ETL file with this added information.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.MemorySizeMeg">
+ <summary>
+ The size of the main memory (RAM) on the collection machine. Will return 0 if memory size is unknown
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.HasCallStacks">
+ <summary>
+ Are there any event in trace that has a call stack associated with it.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.SampleProfileInterval">
+ <summary>
+ If Kernel CPU sampling events are turned on, CPU samples are taken at regular intervals (by default every MSec).
+ <para>This property returns the time interval between samples.
+ </para><para>
+ If the sampling interval was changed over the course of the trace, this property does not reflect that. It
+ returns the first value it had in the trace.
+ </para>
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.CurrentMachineIsCollectionMachine">
+ <summary>
+ Returns true if the machine running this code is the same as the machine where the trace data was collected.
+ <para>
+ If this returns false, the path names references in the trace cannot be inspected (since they are on a different machine).
+ </para>
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.Truncated">
+ <summary>
+ There is a size limit for ETLX files. Thus it is possible that the data from the original ETL file was truncated.
+ This property returns true if this happened.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.FirstTimeInversion">
+ <summary>
+ Returns the EvnetIndex (order in the file) of the first event that has a
+ timestamp smaller than its predecessor. Returns Invalid if there are no time inversions.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.Parsers">
+ <summary>
+ Returns all the TraceEventParsers associated with this log.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.ToString">
+ <summary>
+ An XML fragment that gives useful summary information about the trace as a whole.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.#ctor(Microsoft.Diagnostics.Tracing.Session.TraceEventSession)">
+ <summary>
+ Create a new real time session called 'sessionName' and connect a TraceLog to it and return that TraceLog.
+ Functionality of TraceLog that does not depend on either remembering past EVENTS or require future
+ knowledge (e.g. stacks of kernel events), will 'just work'.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.RemoveAllButLastEntries``1(System.Collections.Generic.GrowableArray{``0}@,System.Int32)">
+ <summary>
+ Removes all but the last 'keepCount' entries in 'growableArray' by sliding them down.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.DispatchClonedEvent(Microsoft.Diagnostics.Tracing.TraceEvent)">
+ <summary>
+ Forwards an event that was saved (cloned) to the dispatcher associated with the real time source.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.FlushRealTimeEvents(System.Object)">
+ <summary>
+ Flushes any event that has waited around long enough
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.GetCodeAddressIndexAtEvent(System.UInt64,Microsoft.Diagnostics.Tracing.TraceEvent)">
+ <summary>
+ Given a process's virtual address 'address' and an event which acts as a
+ context (determines which process and what time in that process), return
+ a CodeAddressIndex (which represents a particular location in a particular
+ method in a particular DLL). It is possible that different addresses will
+ go to the same code address for the same address (in different contexts).
+ This is because DLLS where loaded in different places in different processes.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.GetCodeAddressAtEvent(System.UInt64,Microsoft.Diagnostics.Tracing.TraceEvent)">
+ <summary>
+ If an event has a field of type 'Address' the address can be converted to a symbolic value (a
+ TraceCodeAddress) by calling this function. C
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.GetCallStackIndexForEventIndex(Microsoft.Diagnostics.Tracing.EventIndex)">
+ <summary>
+ Given an EventIndex for an event, retrieve the call stack associated with it
+ (that can be given to TraceCallStacks). Many events may not have associated
+ call stack in which case CallSTackIndex.Invalid is returned.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.GetCallStackIndexForCSwitchBlockingEventIndex(Microsoft.Diagnostics.Tracing.EventIndex)">
+ <summary>
+ Given a eventIndex for a CSWTICH event, return the call stack index for the thread
+ that LOST the processor (the normal callStack is for the thread that GOT the CPU)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.CreateFromTraceEventSource(Microsoft.Diagnostics.Tracing.TraceEventDispatcher,System.String,Microsoft.Diagnostics.Tracing.Etlx.TraceLogOptions)">
+ <summary>
+ Given a source of events 'source' generated a ETLX file representing these events from them. This
+ file can then be opened with the TraceLog constructor. 'options' can be null.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.SetupCallbacks(Microsoft.Diagnostics.Tracing.TraceEventDispatcher)">
+ <summary>
+ SetupCallbacks installs all the needed callbacks for TraceLog Processing (stacks, process, thread, summaries etc)
+ on the TraceEventSource rawEvents.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.CopyRawEvents(Microsoft.Diagnostics.Tracing.TraceEventDispatcher,FastSerialization.IStreamWriter)">
+ <summary>
+ Copies the events from the 'rawEvents' dispatcher to the output stream 'IStreamWriter'. It
+ also creates auxiliary data structures associated with the raw events (eg, processes, threads,
+ modules, address lookup maps... Basically any information that needs to be determined by
+ scanning over the events during TraceLog creation should hook in here.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.AddAddressToCodeAddressMap(Microsoft.Diagnostics.Tracing.TraceEvent,System.UInt64)">
+ <summary>
+ This is a helper routine that adds the address 'address' in the event 'data' to the map from events
+ to this list of addresses.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.GenerateMemInfoRecordsPerProcess(Microsoft.Diagnostics.Tracing.Parsers.Kernel.MemoryProcessMemInfoTraceData,FastSerialization.IStreamWriter)">
+ <summary>
+ Special logic to form MemInfoWSTraceData. We take the single event (which has
+ The working sets for every process in the system, an split them out into N events
+ each of which has the processID for the event set properly, and only has the
+ information for that process. The first 3 processes in the list are -1, -2, and -3
+ that have special meaning.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.GetIncompleteStackForStackEvent(Microsoft.Diagnostics.Tracing.TraceEvent,System.Int64)">
+ <summary>
+ Given just the stack event and the timestamp for the event the stack event is to attach to, find
+ the IncompleteStack for the event. If the event to attach to cannot be this will return null
+ but otherwise it will make an IncompleteStack entry if one does not already exist or it.
+
+ As part of allocating an Incomplete stack, it will increment the stack counts for target event.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.EmitStackOnExitFromKernel(Microsoft.Diagnostics.Tracing.Etlx.TraceLog.IncompleteStack@,Microsoft.Diagnostics.Tracing.Etlx.CallStackIndex,Microsoft.Diagnostics.Tracing.Etlx.TraceLog.IncompleteStack)">
+ <summary>
+ Do the processing necessary to attach the user mode stack 'userModeStack' to any of the stacks in listOfIncompleteKernelStacks.
+ It then clears this list. While doing this processing it will check to see if the target stack 'target' is in that list and
+ it will return true if it was.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.EmitStackOnExitFromKernel(Microsoft.Diagnostics.Tracing.Etlx.TraceLog.IncompleteStack@,System.UInt64,Microsoft.Diagnostics.Tracing.Etlx.TraceLog.IncompleteStack)">
+ <summary>
+ Do the processing necessary to attach the user mode stack 'userModeStack' to any of the stacks in listOfIncompleteKernelStacks.
+ It then clears this list. While doing this processing it will check to see if the target stack 'target' is in that list and
+ it will return true if it was.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.LogStackDefinition(Microsoft.Diagnostics.Tracing.Parsers.Kernel.StackWalkDefTraceData)">
+ <summary>
+ Called when we get a definition event (for either a user mode or kernel mode stack fragment).
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.IncompleteStack">
+ <summary>
+ Holds information about stacks associated with an event. This is a transient structure. We only need it
+ until all the information is collected for a particular event, at which point we can create a
+ CallStackIndex for the stack and eventsToStacks table.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.IncompleteStack.Clear">
+ <summary>
+ Clear clears entires that typically don't get set when we only have 1 frame fragment
+ We can recycle the entries without setting these in that case.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.IncompleteStack.Initialize(Microsoft.Diagnostics.Tracing.EventIndex,Microsoft.Diagnostics.Tracing.Etlx.TraceThread,Microsoft.Diagnostics.Tracing.EventIndex)">
+ <summary>
+ Clear all entries that can potentially change every time.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.IncompleteStack.LogKernelStackFragment(System.Void*,System.Int32,System.Int32,System.Int64,Microsoft.Diagnostics.Tracing.Etlx.TraceLog)">
+ <summary>
+ Log the Kernel Stack fragment. We simply remember all the frames (converted to CodeAddressIndexes).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.IncompleteStack.LogKernelStackFragment(System.UInt64,Microsoft.Diagnostics.Tracing.Etlx.TraceLog)">
+ <summary>
+ Log the kernel stack fragment. Returns true if all the pieces of the stack fragment are collected
+ (we don't have to log something on the thread).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.IncompleteStack.LogUserStackFragment(Microsoft.Diagnostics.Tracing.Etlx.CallStackIndex,Microsoft.Diagnostics.Tracing.Etlx.TraceLog)">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.IncompleteStack.EmitStackForEventIfReady(Microsoft.Diagnostics.Tracing.Etlx.TraceLog)">
+ <summary>
+ Determine if 'stackInfo' is complete and if so emit it to the 'eventsToStacks' array. If 'force' is true
+ then force what information there is out even if it is not complete (there is nothing else coming).
+
+ Returns true if it was able to emit the stack
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.IncompleteStack.IsDead">
+ <summary>
+ returns true if the IncompleteStack is dead (just waiting to be reused).
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.IncompleteStack.BlockingEventIndex">
+ <summary>
+ We track the stacks for when CSwitches block, this is the CSWITCH event where that blocking happened.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.CategorizeThread(Microsoft.Diagnostics.Tracing.TraceEvent,System.String,System.Boolean)">
+ <summary>
+ Put the thread that owns 'data' in to the category 'category.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.ProcessExtendedData(Microsoft.Diagnostics.Tracing.TraceEvent,System.UInt16,Microsoft.Diagnostics.Tracing.Etlx.TraceEventCounts)">
+ <summary>
+ Process any extended data (like Win7 style stack traces) associated with 'data'
+ returns true if the event should be considered a bookkeeping event.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.Dispose(System.Boolean)">
+ <summary>
+ Dispose pattern
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.SeekToTimeOnPage(FastSerialization.PinnedStreamReader,System.Int64,System.Int32,System.Int32@,FastSerialization.StreamLabel[])">
+ <summary>
+ Advance 'reader' until it point at a event that occurs on or after 'timeQPC'. on page
+ 'pageIndex'. If 'positions' is non-null, fill in that array. Also return the index in
+ 'positions' for the entry that was found.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.AllocLookup">
+ <summary>
+ We need a TraceEventDispatcher in the Enumerators for TraceLog that know how to LOOKUP an event
+ We don't actually dispatch through it. We do mutate the templates (to point a particular data
+ record), but once we are done with it we can reuse this TraceEventDispatcher again an again
+ (it is only concurrent access that is a problem). Thus we have an Allocate and Free pattern
+ to reuse them in the common case of sequential access.
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.cswitchBlockingEventsToStacks">
+ <summary>
+ The context switch event gives the stack of the thread GETTING the CPU, but it is also very useful
+ to have this stack at the point of blocking. cswitchBlockingEventsToStacks gives this stack.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.PastEventInfo">
+ <summary>
+ We need to remember the the EventIndexes of the events that were 'just before' this event so we can
+ associate eventToStack traces with the event that actually caused them. PastEventInfo does this.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.PastEventInfo.GetPreviousEventIndex(Microsoft.Diagnostics.Tracing.Etlx.TraceLog.PastEventInfoIndex,System.Int32,System.Boolean,Microsoft.Diagnostics.Tracing.EventIndex)">
+ <summary>
+ Returns the previous Event on the 'threadID'. Events with -1 thread IDs are also always returned.
+ Returns PastEventInfoIndex.Invalid if there are not more events to consider.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.PastEventInfo.GetBestEventForQPC(System.Int64,System.Int32,System.Int32)">
+ <summary>
+ Find the event event on thread threadID to the given QPC timestamp. If there is more than
+ one event with the same QPC, we use thread and processor number to disambiguate.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLog.AddStackToEvent(Microsoft.Diagnostics.Tracing.EventIndex,Microsoft.Diagnostics.Tracing.Etlx.CallStackIndex)">
+ <summary>
+ Add a new entry that associates the stack 'stackIndex' with the event with index 'eventIndex'
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.TraceLogEventSource">
+ <summary>
+ Represents a source for a TraceLog file (or real time stream). It is basically a TraceEventDispatcher
+ (TraceEventSource) but you can also get at the TraceLog for it as well.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLogEventSource.TraceLog">
+ <summary>
+ Returns the TraceLog associated with this TraceLogEventSource.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLogEventSource.CurrentEventIndex">
+ <summary>
+ Returns the event Index of the 'current' event (we post increment it so it is always one less)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLogEventSource.Process">
+ <summary>
+ override
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLogEventSource.EventsLost">
+ <summary>
+ override
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLogEventSource.Dispose(System.Boolean)">
+ <summary>
+ override
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.TraceEventStats">
+ <summary>
+ TraceEventStats represents the summary statistics (counts) of all the events in the log.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceEventStats.Count">
+ <summary>
+ The total number of distinct event types (there will be a TraceEventCounts for each distinct event Type)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceEventStats.ToString">
+ <summary>
+ An XML representation of the TraceEventStats (for Debugging)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceEventStats.GetEventCounts(Microsoft.Diagnostics.Tracing.TraceEvent)">
+ <summary>
+ Given an event 'data' look up the statistics for events that type.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.TraceEventCounts">
+ <summary>
+ TraceEventCount holds number of events (Counts) and the number of events with call stacks associated with them (StackCounts) for a particular event type.
+ <para>It also has properties for looking up the event and provider names, but this information can only be complete if all the TraceEventParsers needed
+ were associated with the TraceLog instance.
+ </para>
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceEventCounts.ProviderName">
+ <summary>
+ Returns a provider name for events in this TraceEventCounts. It may return a string with a GUID or even
+ UnknownProvider for classic ETW if the event is unknown to the TraceLog.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceEventCounts.EventName">
+ <summary>
+ Returns a name for events in this TraceEventCounts. If the event is unknown to the Tracelog
+ it will return EventID(XXX) (for manifest based events) or Task(XXX)/Opcode(XXX) (for classic events)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceEventCounts.PayloadNames">
+ <summary>
+ Returns the payload names associated with this Event type. Returns null if the payload names are unknown.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceEventCounts.IsClassic">
+ <summary>
+ Returns true the provider associated with this TraceEventCouts is a classic (not manifest based) ETW provider.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceEventCounts.ProviderGuid">
+ <summary>
+ Returns the provider GUID of the events in this TraceEventCounts. Returns Guid.Empty if IsClassic
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceEventCounts.EventID">
+ <summary>
+ Returns the event ID of the events in this TraceEventCounts. Returns TraceEventID.Illegal if IsClassic
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceEventCounts.TaskGuid">
+ <summary>
+ Returns the Task GUID of the events in this TraceEventCounts. Returns Guid.Empty if not IsClassic
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceEventCounts.Opcode">
+ <summary>
+ Returns the Opcode of the events in the TraceEventCounts. Returns TraceEventOpcode.Info if not IsClassic
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceEventCounts.AveragePayloadSize">
+ <summary>
+ Returns the average size of the event specific payload data (not the whole event) for all events in the TraceEventsCounts.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceEventCounts.Count">
+ <summary>
+ Returns the number of events in the TraceEventCounts.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceEventCounts.StackCount">
+ <summary>
+ Returns the number of events in the TraceEventCounts that have stack traces associated with them.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceEventCounts.FullName">
+ <summary>
+ Returns the full name of the event (ProviderName/EventName)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceEventCounts.ToString">
+ <summary>
+ An XML representation of the top level statistics of the TraceEventCounts.
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceEventCounts.GetHashCode">
+ <summary>
+ GetHashCode
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.TraceEvents">
+ <summary>
+ A TraceEvents represents a list of TraceEvent instances. It is IEnumerable&lt;TraceEvent&gt; but
+ also has additional useful ways of filtering the list.
+
+ Note that the TraceEvent returned from this IEnumerable may only be used for one iteration of the foreach.
+ (it is reused for the next event). If you need more lifetime than that you must call Clone() (see 'Lifetime
+ Constraints' in the programmers guide for more).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceEvents.ByEventType``1">
+ <summary>
+ Returns a list of events in the TraceEvents that return a payload of type T. Thus
+ ByEventType &lt; TraceEvent &gt; returns all events.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceEvents.GetSource">
+ <summary>
+ Returns a TraceEventDispatcher (a push model object on which you can register
+ callbacks for particular events) that will push all the vents in the TraceEvents.
+
+ Note that the TraceEvent returned from this callback may only be used for the duration of the callback.
+ If you need more lifetime than that you must call Clone() (see 'Lifetime Constraints' in the programmers guide for more).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceEvents.Backwards">
+ <summary>
+ Returns a new list which is the same as the TraceEvents but the events are
+ delivered from last to first. This allows you to search backwards in the
+ event stream.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceEvents.FilterByTime(System.DateTime,System.DateTime)">
+ <summary>
+ Filter the events by time. Both starTime and endTime are inclusive.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceEvents.FilterByTime(System.Double,System.Double)">
+ <summary>
+ Filter the events by time. StartTimeRelativeMSec and endTimeRelativeMSec are relative to the SessionStartTime and are inclusive.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceEvents.Filter(System.Predicate{Microsoft.Diagnostics.Tracing.TraceEvent})">
+ <summary>
+ Create new list of Events that has all the events in the current TraceEvents
+ that pass the given predicate.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceEvents.Log">
+ <summary>
+ Returns the TraceLog associated with the events in the TraceEvents
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceEvents.StartTime">
+ <summary>
+ Returns a time that is guaranteed to be before the first event in the TraceEvents list.
+ It is returned as DateTime
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceEvents.StartTimeRelativeMSec">
+ <summary>
+ Returns a time that is guaranteed to be before the first event in the TraceEvents list.
+ It is returned as floating point number of MSec since the start of the TraceLog
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceEvents.EndTime">
+ <summary>
+ Returns a time that is guaranteed to be after the last event in the TraceEvents list.
+ It is returned as DateTime
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceEvents.EndTimeRelativeMSec">
+ <summary>
+ Returns a time that is guaranteed to be after the last event in the TraceEvents list.
+ It is returned as floating point number of MSec since the start of the TraceLog
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.ProcessIndex">
+ <summary>
+ Each process is given a unique index from 0 to TraceProcesses.Count-1 and unlike
+ the OS Process ID, is unambiguous (The OS process ID can be reused after a
+ process dies). ProcessIndex represents this index. By using an enum rather than an int
+ it allows stronger typing and reduces the potential for errors.
+ <para>
+ It is expected that users of this library might keep arrays of size TraceProcesses.Count to store
+ additional data associated with a process in the trace.
+ </para>
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.ProcessIndex.Invalid">
+ <summary>
+ Returned when no appropriate Process exists.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.TraceProcesses">
+ <summary>
+ A TraceProcesses instance represents the list of processes in the Event log.
+
+ TraceProcesses are IEnumerable, and will return the processes in order of creation time.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceProcesses.Log">
+ <summary>
+ The log associated with this collection of processes.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceProcesses.Count">
+ <summary>
+ The count of the number of TraceProcess instances in the TraceProcesses list.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceProcesses.Item(Microsoft.Diagnostics.Tracing.Etlx.ProcessIndex)">
+ <summary>
+ Each process that occurs in the log is given a unique index (which unlike the PID is unique), that
+ ranges from 0 to Count - 1. Return the TraceProcess for the given index.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceProcesses.GetProcess(System.Int32,System.Double)">
+ <summary>
+ Given an OS process ID and a time, return the last TraceProcess that has the same process ID,
+ and whose process start time is less than 'timeRelativeMSec'.
+ <para>
+ If 'timeRelativeMSec' is during the processes's lifetime this is guaranteed to be the correct process.
+ for the given process ID since process IDs are unique during the lifetime of the process.
+ </para><para>
+ If timeRelativeMSec == TraceLog.SessionDuration this method will return the last process with
+ the given process ID, even if it had died during the trace.
+ </para>
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceProcesses.LastProcessWithID(System.Int32)">
+ <summary>
+ Returns the last process in the log with the given process ID. Useful when the logging session
+ was stopped just after the processes completed (a common scenario).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceProcesses.FirstProcessWithName(System.String,System.Double)">
+ <summary>
+ Find the first process in the trace that has the process name 'processName' and whose process
+ start time is after the given point in time.
+ <para>A process's name is the file name of the EXE without the extension.</para>
+ <para>Processes that began before the trace started have a start time of 0, Thus
+ specifying 0 for the time will include processes that began before the trace started.
+ </para>
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceProcesses.LastProcessWithName(System.String,System.Double)">
+ <summary>
+ Find the last process in the trace that has the process name 'processName' and whose process
+ start time is after the given point in time.
+ <para>A process's name is the file name of the EXE without the extension.</para>
+ <para>Processes that began before the trace started have a start time of 0, Thus
+ specifying 0 for the time will include processes that began before the trace started.
+ </para>
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceProcesses.ToString">
+ <summary>
+ An XML representation of the TraceEventProcesses (for debugging)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceProcesses.System#Collections#Generic#IEnumerable{Microsoft#Diagnostics#Tracing#Etlx#TraceProcess}#GetEnumerator">
+ <summary>
+ Enumerate all the processes that occurred in the trace log, ordered by creation time.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceProcesses.GetProcess(System.Int32,System.Int64)">
+ <summary>
+ Given an OS process ID and a time, return the last TraceProcess that has the same process ID,
+ and whose offset start time is less than 'timeQPC'. If 'timeQPC' is during the thread's lifetime this
+ is guaranteed to be the correct process. Using timeQPC = TraceLog.sessionEndTimeQPC will return the
+ last process with the given PID, even if it had died.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceProcesses.#ctor(Microsoft.Diagnostics.Tracing.Etlx.TraceLog)">
+ <summary>
+ TraceProcesses represents the entire ETL moduleFile log. At the node level it is organized by threads.
+
+ The TraceProcesses also is where we put various caches that are independent of the process involved.
+ These include a cache for TraceModuleFile that represent native images that can be loaded into a
+ process, as well as the process lookup tables and a cache that remembers the last calls to
+ GetNameForAddress().
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.TraceProcess">
+ <summary>
+ A TraceProcess represents a process in the trace.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceProcess.ProcessID">
+ <summary>
+ The OS process ID associated with the process. It is NOT unique across the whole log. Use
+ ProcessIndex for that.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceProcess.ProcessIndex">
+ <summary>
+ The index into the logical array of TraceProcesses for this process. Unlike ProcessID (which
+ may be reused after the process dies, the process index is unique in the log.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceProcess.Name">
+ <summary>
+ This is a short name for the process. It is the image file name without the path or suffix.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceProcess.CommandLine">
+ <summary>
+ The command line that started the process (may be empty string if unknown)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceProcess.ImageFileName">
+ <summary>
+ The path name of the EXE that started the process (may be empty string if unknown)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceProcess.StartTime">
+ <summary>
+ The time when the process started. Returns the time the trace started if the process existed when the trace started.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceProcess.StartTimeRelativeMsec">
+ <summary>
+ The time when the process started. Returns the time the trace started if the process existed when the trace started.
+ Returned as the number of MSec from the beginning of the trace.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceProcess.EndTime">
+ <summary>
+ The time when the process ended. Returns the time the trace ended if the process existed when the trace ended.
+ Returned as a DateTime
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceProcess.EndTimeRelativeMsec">
+ <summary>
+ The time when the process ended. Returns the time the trace ended if the process existed when the trace ended.
+ Returned as the number of MSec from the beginning of the trace.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceProcess.ParentID">
+ <summary>
+ The process ID of the parent process
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceProcess.Parent">
+ <summary>
+ The process that started this process. Returns null if unknown Unlike ParentID
+ the chain of Parent's will never form a loop.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceProcess.ExitStatus">
+ <summary>
+ If the process exited, the exit status of the process. Otherwise null.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceProcess.CPUMSec">
+ <summary>
+ The amount of CPU time spent in this process based on the kernel CPU sampling events.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceProcess.Is64Bit">
+ <summary>
+ Returns true if the process is a 64 bit process
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceProcess.Log">
+ <summary>
+ The log file associated with the process.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceProcess.Threads">
+ <summary>
+ A list of all the threads that occurred in this process.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceProcess.LoadedModules">
+ <summary>
+ Returns the list of modules that were loaded by the process. The modules may be managed or
+ native, and include native modules that were loaded event before the trace started.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceProcess.EventsInProcess">
+ <summary>
+ Filters events to only those for a particular process.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceProcess.EventsDuringProcess">
+ <summary>
+ Filters events to only that occurred during the time the process was alive.
+ </summary>
+
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceProcess.ToString">
+ <summary>
+ An XML representation of the TraceEventProcess (for debugging)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceProcess.SetParentForProcess(Microsoft.Diagnostics.Tracing.Etlx.TraceProcess)">
+ <summary>
+ Sets the 'Parent' field for the process (based on the ParentID).
+
+ sentinel is internal to the implementation, external callers should always pass null.
+ TraceProcesses that have a parent==sentinel considered 'illegal' since it woudl form
+ a loop in the parent chain, which we definately don't want.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceProcess.#ctor(System.Int32,Microsoft.Diagnostics.Tracing.Etlx.TraceLog,Microsoft.Diagnostics.Tracing.Etlx.ProcessIndex)">
+ <summary>
+ Create a new TraceProcess. It should only be done by log.CreateTraceProcess because
+ only TraceLog is responsible for generating a new ProcessIndex which we need. 'processIndex'
+ is a index that is unique for the whole log file (where as processID can be reused).
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.TraceProcess.codeAddressesInProcess">
+ <summary>
+ This table allows us to intern codeAddress so we only at most one distinct address per process.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.TraceProcess.unresolvedCodeAddresses">
+ <summary>
+ We also keep track of those code addresses that are NOT yet resolved to at least a File (for JIT compiled
+ things this would be to a method
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.TraceProcess.MethodLookupInfo">
+ <summary>
+ This is all the information needed to remember about at JIT compiled method (used in the jitMethods variable)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.TraceProcess.jitMethods">
+ <summary>
+ This table has a entry for each JIT compiled method that remembers its range. It is actually only needed
+ for the real time case, as the non-real time case you resolve code addresses on method unload/rundown and thus
+ don't need to remember the information. This table is NOT persisted in the ETLX file since is only needed
+ to convert raw addresses into TraceMethods.
+
+ It is a array of arrays to make insertion efficient. Most of the time JIT methods will be added in
+ contiguous memory (thus will be in order), however from time to time things will 'jump around' to a new
+ segment. By having a list of lists, (which are in order in both lists) you can efficiently (log(N)) search
+ as well as insert.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.TraceProcess.scheduledActivityIdToActivityIndex">
+ <summary>
+ Maps a newly scheduled "user" activity ID to the ActivityIndex of the
+ Activity. This keeps track of currently created/scheduled activities
+ that have not started yet, and for multi-trigger events, created/scheduled
+ activities that have not conclusively "died" (e.g. by having their "user"
+ activity ID reused by another activity).
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.ThreadIndex">
+ <summary>
+ Each thread is given a unique index from 0 to TraceThreads.Count-1 and unlike
+ the OS Thread ID, is unambiguous (The OS thread ID can be reused after a
+ thread dies). ThreadIndex represents this index. By using an enum rather than an int
+ it allows stronger typing and reduces the potential for errors.
+ <para>
+ It is expected that users of this library might keep arrays of size TraceThreads.Count to store
+ additional data associated with a process in the trace.
+ </para>
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.ThreadIndex.Invalid">
+ <summary>
+ Returned when no appropriate Thread exists.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.TraceThreads">
+ <summary>
+ A TraceThreads represents the list of threads in a process.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceThreads.System#Collections#Generic#IEnumerable{Microsoft#Diagnostics#Tracing#Etlx#TraceThread}#GetEnumerator">
+ <summary>
+ Enumerate all the threads that occurred in the trace log. It does so in order of their thread
+ offset events in the log.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceThreads.Count">
+ <summary>
+ The count of the number of TraceThreads in the trace log.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceThreads.Item(Microsoft.Diagnostics.Tracing.Etlx.ThreadIndex)">
+ <summary>
+ Each thread that occurs in the log is given a unique index (which unlike the PID is unique), that
+ ranges from 0 to Count - 1. Return the TraceThread for the given index.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceThreads.GetThread(System.Int32,System.Double)">
+ <summary>
+ Given an OS thread ID and a time, return the last TraceThread that has the same thread ID,
+ and whose start time is less than 'timeRelativeMSec'. If 'timeRelativeMSec' is during the thread's lifetime this
+ is guaranteed to be the correct thread.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceThreads.ToString">
+ <summary>
+ An XML representation of the TraceThreads (for debugging)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceThreads.#ctor(Microsoft.Diagnostics.Tracing.Etlx.TraceLog)">
+ <summary>
+ TraceThreads represents the collection of threads in a process.
+
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceThreads.GetOrCreateThread(System.Int32,System.Int64,Microsoft.Diagnostics.Tracing.Etlx.TraceProcess,System.Boolean)">
+ <summary>
+ Get the thread for threadID and timeQPC. Create if necessary. If 'isThreadCreateEvent' is true,
+ then force the creation of a new thread EVEN if the thread exist since we KNOW it is a new thread
+ (and somehow we missed the threadEnd event). Process is the process associated with the thread.
+ It can be null if you really don't know the process ID. We will try to fill it in on another event
+ where we DO know the process id (ThreadEnd event).
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.TraceThread">
+ <summary>
+ A TraceThread represents a thread of execution in a process.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceThread.ThreadID">
+ <summary>
+ The OS process ID associated with the process.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceThread.ThreadIndex">
+ <summary>
+ The index into the logical array of TraceThreads for this process. Unlike ThreadId (which
+ may be reused after the thread dies) the T index is unique over the log.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceThread.Process">
+ <summary>
+ The process associated with the thread.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceThread.StartTime">
+ <summary>
+ The time when the thread started. Returns the time the trace started if the thread existed when the trace started.
+ Returned as a DateTime
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceThread.StartTimeRelativeMSec">
+ <summary>
+ The time when the thread started. Returns the time the trace started if the thread existed when the trace started.
+ Returned as the number of MSec from the beginning of the trace.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceThread.EndTime">
+ <summary>
+ The time when the thread ended. Returns the time the trace ended if the thread existed when the trace ended.
+ Returned as a DateTime
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceThread.EndTimeRelativeMSec">
+ <summary>
+ The time when the thread ended. Returns the time the trace ended if the thread existed when the trace ended.
+ Returned as the number of MSec from the beginning of the trace.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceThread.CPUMSec">
+ <summary>
+ The amount of CPU time spent on this thread based on the kernel CPU sampling events.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceThread.EventsInThread">
+ <summary>
+ Filters events to only those for a particular thread.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceThread.EventsDuringThread">
+ <summary>
+ Filters events to only those that occurred during the time a the thread was alive.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceThread.GetActivityIndex(System.Double)">
+ <summary>
+ REturns the activity this thread was working on at the time instant 'relativeMsec'
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceThread.DefaultActivityIndex">
+ <summary>
+ Represents the "default" activity for the thread, the activity that no one has set
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceThread.ThreadInfo">
+ <summary>
+ ThreadInfo is a string that identifies the thread symbolically. (e.g. .NET Threadpool, .NET GC) It may return null if there is no useful symbolic name.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceThread.VerboseThreadName">
+ <summary>
+ VerboseThreadName is a name for the thread including the ThreadInfo and the CPU time used.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceThread.UserStackBase">
+ <summary>
+ The base of the thread's stack. This is just past highest address in memory that is part of the stack
+ (we don't really know the lower bound (userStackLimit is this lower bound at the time the thread was created
+ which is not very useful).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceThread.ToString">
+ <summary>
+ An XML representation of the TraceThread (for debugging)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceThread.#ctor(System.Int32,Microsoft.Diagnostics.Tracing.Etlx.TraceProcess,Microsoft.Diagnostics.Tracing.Etlx.ThreadIndex)">
+ <summary>
+ Create a new TraceProcess. It should only be done by log.CreateTraceProcess because
+ only TraceLog is responsible for generating a new ProcessIndex which we need. 'processIndex'
+ is a index that is unique for the whole log file (where as processID can be reused).
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.TraceThread.activityIds">
+ <summary>
+ This is a list of the activities (snippet of threads) that have run on this
+ thread. They are ordered by time so you can binary search for your activity based
+ on timestamp.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.TraceThread.lastBlockingCSwitchEventIndex">
+ <summary>
+ We want to have the stack for when CSwtichs BLOCK as well as when they unblock.
+ this variable keeps track of the last blocking CSWITCH on this thread so that we can
+ compute this. It is only used during generation of a TraceLog file.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.TraceLoadedModules">
+ <summary>
+ TraceLoadedModules represents the collection of modules (loaded DLLs or EXEs) in a
+ particular process.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLoadedModules.Process">
+ <summary>
+ The process in which this Module is loaded.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLoadedModules.GetModuleContainingAddress(System.UInt64,System.Double)">
+ <summary>
+ Returns the module which was mapped into memory at at 'timeRelativeMSec' and includes the address 'address'
+ <para> Note that Jit compiled code is placed into memory that is not associated with the module and thus will not
+ be found by this method.
+ </para>
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLoadedModules.GetLoadedModule(System.String,System.Double)">
+ <summary>
+ Returns the module representing the unmanaged load of a particular fiele at a given time.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLoadedModules.ToString">
+ <summary>
+ An XML representation of the TraceLoadedModules (for debugging)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLoadedModules.GetEnumerator">
+ <summary>
+ Returns all modules in the process. Note that managed modules may appear twice
+ (once for the managed load and once for an unmanaged (LoadLibrary) load.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLoadedModules.GetLoadedModule(System.String,System.Int64)">
+ <summary>
+ This function will find the module associated with 'address' at 'timeQPC' however it will only
+ find modules that are mapped in memory (module associated with JIT compiled methods will not be found).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLoadedModules.FindManagedModuleAndIndex(System.Int64,System.Int64,System.Int32@)">
+ <summary>
+ Finds the index and module for an a given managed module ID. If not found, new module
+ should be inserted at index + 1;
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLoadedModules.FindModuleAndIndexContainingAddress(System.UInt64,System.Int64,System.Int32@)">
+ <summary>
+ Finds the index and module for an address that lives within the image. If the module
+ did not match the new entry should go at index+1.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.TraceLoadedModule">
+ <summary>
+ A TraceLoadedModule represents a module (DLL or EXE) that was loaded into a process. It represents
+ the time that this module was mapped into the processes address space.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLoadedModule.ImageBase">
+ <summary>
+ The address where the DLL or EXE was loaded. Will return 0 for managed modules without NGEN images.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLoadedModule.LoadTime">
+ <summary>
+ The load time is the time the LoadLibrary was done if it was loaded from a file, otherwise is the
+ time the CLR loaded the module. Expressed as a DateTime
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLoadedModule.LoadTimeRelativeMSec">
+ <summary>
+ The load time is the time the LoadLibrary was done if it was loaded from a file, otherwise is the
+ time the CLR loaded the module. Expressed as as MSec from the beginning of the trace.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLoadedModule.UnloadTime">
+ <summary>
+ The load time is the time the FreeLibrary was done if it was unmanaged, otherwise is the
+ time the CLR unloaded the module. Expressed as a DateTime
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLoadedModule.UnloadTimeRelativeMSec">
+ <summary>
+ The load time is the time the FreeLibrary was done if it was unmanaged, otherwise is the
+ time the CLR unloaded the module. Expressed as MSec from the beginning of the trace.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLoadedModule.Process">
+ <summary>
+ The process that loaded this module
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLoadedModule.ModuleID">
+ <summary>
+ An ID that uniquely identifies the module in within the process. Works for both the managed and unmanaged case.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLoadedModule.ModuleFile">
+ <summary>
+ If this managedModule was a file that was mapped into memory (eg LoadLibary), then ModuleFile points at
+ it. If a managed module does not have a file associated with it, this can be null.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLoadedModule.FilePath">
+ <summary>
+ Shortcut for ModuleFile.FilePath, but returns the empty string if ModuleFile is null
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLoadedModule.Name">
+ <summary>
+ Shortcut for ModuleFile.Name, but returns the empty string if ModuleFile is null
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLoadedModule.ManagedModule">
+ <summary>
+ Because .NET applications have AppDomains, a module that is loaded once from a process
+ perspective, might be loaded several times (once for each AppDomain) from a .NET perspective
+ <para> This property returns the loadedModule record for the first such managed module
+ load associated with this load.
+ </para>
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLoadedModule.ToString">
+ <summary>
+ An XML representation of the TraceLoadedModule (used for debugging)
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLoadedModule.FastSerialization#IFastSerializable#ToStream(FastSerialization.Serializer)">
+ <summary>
+ See IFastSerializable.ToStream.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLoadedModule.FastSerialization#IFastSerializable#FromStream(FastSerialization.Deserializer)">
+ <summary>
+ See IFastSerializable.FromStream.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.TraceManagedModule">
+ <summary>
+ A TraceManagedModule represents the loading of a .NET module into .NET AppDomain.
+ It represents the time that that module an be used in the AppDomain.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceManagedModule.ModuleID">
+ <summary>
+ The module ID that the .NET Runtime uses to identify the file (module) associated with this managed module
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceManagedModule.AssemblyID">
+ <summary>
+ The Assembly ID that the .NET Runtime uses to identify the assembly associated with this managed module.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceManagedModule.IsAppDomainNeutral">
+ <summary>
+ Returns true if the managed module was loaded AppDOmain Neutral (its code can be shared by all appdomains in the process.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceManagedModule.NativeModule">
+ <summary>
+ If the managed module is an IL module that has an NGEN image, return it.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceManagedModule.ToString">
+ <summary>
+ An XML representation of the TraceManagedModule (used for debugging)
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.CallStackIndex">
+ <summary>
+ CallStackIndex uniquely identifies a callstack within the log. Valid values are between 0 and
+ TraceCallStacks.Count-1. Thus, an array can be used to 'attach' data to a call stack.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.CallStackIndex.Invalid">
+ <summary>
+ Returned when no appropriate CallStack exists.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.TraceCallStacks">
+ <summary>
+ Call stacks are so common in most traces, that having a .NET object (a TraceEventCallStack) for
+ each one is often too expensive. As optimization, TraceLog also assigns a call stack index
+ to every call stack and this index uniquely identifies the call stack in a very light weight fashion.
+ <para>
+ To be useful, however you need to be able to ask questions about a call stack index without creating
+ a TraceEventCallStack. This is the primary purpose of a TraceCallStacks (accessible from TraceLog.CallStacks).
+ It has a set of
+ methods that take a CallStackIndex and return properties of the call stack (like its caller or
+ its code address).
+ </para>
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceCallStacks.Count">
+ <summary>
+ Returns the count of call stack indexes (all Call Stack indexes are strictly less than this).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCallStacks.CodeAddressIndex(Microsoft.Diagnostics.Tracing.Etlx.CallStackIndex)">
+ <summary>
+ Given a call stack index, return the code address index representing the top most frame associated with it
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCallStacks.Caller(Microsoft.Diagnostics.Tracing.Etlx.CallStackIndex)">
+ <summary>
+ Given a call stack index, look up the call stack index for caller. Returns CallStackIndex.Invalid at top of stack.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCallStacks.Depth(Microsoft.Diagnostics.Tracing.Etlx.CallStackIndex)">
+ <summary>
+ Given a call stack index, returns the number of callers for the call stack
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceCallStacks.Item(Microsoft.Diagnostics.Tracing.Etlx.CallStackIndex)">
+ <summary>
+ Given a call stack index, returns a TraceCallStack for it.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceCallStacks.CodeAddresses">
+ <summary>
+ Returns the TraceCodeAddresses instance that can resolve CodeAddressIndexes in the TraceLog
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCallStacks.ThreadIndex(Microsoft.Diagnostics.Tracing.Etlx.CallStackIndex)">
+ <summary>
+ Given a call stack index, returns the ThreadIndex which represents the thread for the call stack
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCallStacks.Thread(Microsoft.Diagnostics.Tracing.Etlx.CallStackIndex)">
+ <summary>
+ Given a call stack index, returns the TraceThread which represents the thread for the call stack
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCallStacks.ToString">
+ <summary>
+ An XML representation of the TraceCallStacks (used for debugging)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCallStacks.GetEnumerator">
+ <summary>
+ IEnumerable Support
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCallStacks.SetSize(System.Int32)">
+ <summary>
+ Used to 'undo' the effects of adding a eventToStack that you no longer want. This happens when we find
+ out that a eventToStack is actually got more callers in it (when a eventToStack is split).
+ </summary>
+ <param name="origSize"></param>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCallStacks.GetRootForThread(Microsoft.Diagnostics.Tracing.Etlx.ThreadIndex)">
+ <summary>
+ Returns an index that represents the 'threads' of the stack. It encodes the thread which owns this stack into this.
+ We encode this as -ThreadIndex - 2 (since -1 is the Invalid node)
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.TraceCallStack">
+ <summary>
+ A TraceCallStack is a structure that represents a call stack as a linked list. Each TraceCallStack
+ contains two properties, the CodeAddress for the current frame, and the TraceCallStack of the
+ caller of this frame. The Caller property will return null at the thread start frame.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceCallStack.CallStackIndex">
+ <summary>
+ Return the CallStackIndex that uniquely identifies this call stack in the TraceLog.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceCallStack.CodeAddress">
+ <summary>
+ Returns the TraceCodeAddress for the current method frame in the linked list of frames.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceCallStack.Caller">
+ <summary>
+ The TraceCallStack for the caller of of the method represented by this call stack. Returns null at the end of the list.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceCallStack.Depth">
+ <summary>
+ The depth (count of callers) of this call stack.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCallStack.ToString">
+ <summary>
+ An XML representation of the TraceCallStack (used for debugging)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCallStack.ToString(System.Text.StringBuilder)">
+ <summary>
+ Writes an XML representation of the TraceCallStack to the stringbuilder 'sb'
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.CodeAddressIndex">
+ <summary>
+ CodeAddressIndex uniquely identifies a symbolic codeAddress within the log .
+ Valid values are between 0 and TraceCodeAddresses.Count. Thus, an array
+ can be used to 'attach' data to a code address.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.CodeAddressIndex.Invalid">
+ <summary>
+ Returned when no appropriate Method exists.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses">
+ <summary>
+ Code addresses are so common in most traces, that having a .NET object (a TraceCodeAddress) for
+ each one is often too expensive. As optimization, TraceLog also assigns a code address index
+ to every code address and this index uniquely identifies the code address in a very light weight fashion.
+ <para>
+ To be useful, however you need to be able to ask questions about a code address index without creating
+ a TraceCodeAddress. This is the primary purpose of a TraceCodeAddresses (accessible from TraceLog.CodeAddresses).
+ It has a set of
+ methods that take a CodeAddressIndex and return properties of the code address (like its method, address, and module file)
+ </para>
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.Count">
+ <summary>
+ Returns the count of code address indexes (all code address indexes are strictly less than this).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.Name(Microsoft.Diagnostics.Tracing.Etlx.CodeAddressIndex)">
+ <summary>
+ Given a code address index, return the name associated with it (the method name). It will
+ have the form MODULE!METHODNAME. If the module name is unknown a ? is used, and if the
+ method name is unknown a hexadecimal number is used as the method name.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.Address(Microsoft.Diagnostics.Tracing.Etlx.CodeAddressIndex)">
+ <summary>
+ Given a code address index, returns the virtual address of the code in the process.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.ModuleFileIndex(Microsoft.Diagnostics.Tracing.Etlx.CodeAddressIndex)">
+ <summary>
+ Given a code address index, returns the index for the module file (representing the file's path)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.MethodIndex(Microsoft.Diagnostics.Tracing.Etlx.CodeAddressIndex)">
+ <summary>
+ Given a code address index, returns the index for the method associated with the code address (it may return MethodIndex.Invalid
+ if no method can be found).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.ModuleFile(Microsoft.Diagnostics.Tracing.Etlx.CodeAddressIndex)">
+ <summary>
+ Given a code address index, returns the module file (the DLL paths) associated with it
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.ILOffset(Microsoft.Diagnostics.Tracing.Etlx.CodeAddressIndex)">
+ <summary>
+ If the code address is associated with managed code, return the IL offset within the method. If the method
+ is unmanaged -1 is returned. To determine the IL offset the PDB for the NGEN image (for NGENed code) or the
+ correct .NET events (for JIT compiled code) must be present. If this information is not present -1 is returned.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.Item(Microsoft.Diagnostics.Tracing.Etlx.CodeAddressIndex)">
+ <summary>
+ Given a code address index, returns a TraceCodeAddress for it.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.Methods">
+ <summary>
+ Returns the TraceMethods object that can look up information from MethodIndexes
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.ModuleFiles">
+ <summary>
+ Returns the TraceModuleFiles that can look up information about ModuleFileIndexes
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.ManagedMethodRecordCount">
+ <summary>
+ Indicates the number of managed method records that were encountered. This is useful to understand if symbolic information 'mostly works'.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.LookupSymbolsForModule(Microsoft.Diagnostics.Symbols.SymbolReader,Microsoft.Diagnostics.Tracing.Etlx.TraceModuleFile)">
+ <summary>
+ Initially CodeAddresses for unmanaged code will have no useful name. Calling LookupSymbolsForModule
+ lets you resolve the symbols for a particular file so that the TraceCodeAddresses for that DLL
+ will have Methods (useful names) associated with them.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.GetSourceLine(Microsoft.Diagnostics.Symbols.SymbolReader,Microsoft.Diagnostics.Tracing.Etlx.CodeAddressIndex)">
+ <summary>
+ A TraceCodeAddress can contain a method name, but does not contain number information. To
+ find line number information you must read the PDB again and fetch it. This is what
+ GetSoruceLine does.
+ <para>
+ Given a SymbolReader (which knows how to look up PDBs) and a code address index (which
+ represent a particular point in execution), find a SourceLocation (which represents a
+ particular line number in a particular source file associated with the code address.
+ Returns null if anything goes wrong (and diagnostic information will be written to the
+ log file associated with the SymbolReader.
+ </para>
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.TotalCodeAddresses">
+ <summary>
+ The number of times a particular code address appears in the log. Unlike TraceCodeAddresses.Count, which tries
+ to share a code address as much as possible, TotalCodeAddresses counts the same code address in different
+ call stacks (and even if in the same stack) as distinct. This makes TotalCodeAddresses a better measure of
+ the 'popularity' of a particular address (which can factor into decisions about whether to call LookupSymbolsForModule)
+ <para>
+ The sum of ModuleFile.CodeAddressesInModule for all modules should sum to this number.
+ </para>
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.UnsafePDBMatching">
+ <summary>
+ If set to true, will only use the name of the module and not the PDB GUID to confirm that a PDB is correct
+ for a given DLL. Setting this value is dangerous because it is easy for the PDB to be for a different
+ version of the DLL and thus give inaccurate method names. Nevertheless, if a log file has no PDB GUID
+ information associated with it, unsafe PDB matching is the only way to get at least some symbolic information.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.ToString">
+ <summary>
+ Returns an XML representation of the TraceCodeAddresses (for debugging)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.NativeMap(Microsoft.Diagnostics.Tracing.Etlx.CodeAddressIndex)">
+ <summary>
+ We expose ILToNativeMap internally so we can do diagnostics.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.GetEnumerator">
+ <summary>
+ IEnumerable support.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.AddMethod(Microsoft.Diagnostics.Tracing.Parsers.Clr.MethodLoadUnloadVerboseTraceData)">
+ <summary>
+ Called when JIT CLR Rundown events are processed. It will look if there is any
+ address that falls into the range of the JIT compiled method and if so log the
+ symbolic information (otherwise we simply ignore it)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.AddMethod(Microsoft.Diagnostics.Tracing.Parsers.JScript.MethodLoadUnloadJSTraceData,System.Collections.Generic.Dictionary{Microsoft.Diagnostics.Tracing.Etlx.JavaScriptSourceKey,System.String})">
+ <summary>
+ Adds a JScript method
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.ForAllUnresolvedCodeAddressesInRange(Microsoft.Diagnostics.Tracing.Etlx.TraceProcess,System.UInt64,System.Int32,System.Boolean,Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.ForAllCodeAddrAction)">
+ <summary>
+ Allows you to get a callback for each code address that is in the range from start to
+ start+length within the process 'process'. If 'considerResolved' is true' then the address range
+ is considered resolved and future calls to this routine will not find the addresses (since they are resolved).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.GetOrCreateCodeAddressIndex(Microsoft.Diagnostics.Tracing.Etlx.TraceProcess,System.UInt64)">
+ <summary>
+ Gets the symbolic information entry for 'address' which can be any address. If it falls in the
+ range of a symbol, then that symbolic information is returned. Regardless of whether symbolic
+ information is found, however, an entry is created for it, so every unique address has an entry
+ in this table.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.ProcessForAddress(Microsoft.Diagnostics.Tracing.Etlx.TraceProcess,System.UInt64)">
+ <summary>
+ All processes might have kernel addresses in them, this returns the kernel process (process ID == 0) if 'address' is a kernel address.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.GetSortedCodeAddressIndexes">
+ <summary>
+ Sort from lowest address to highest address.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.LookupSymbols(Microsoft.Diagnostics.Tracing.Etlx.TraceLogOptions)">
+ <summary>
+ Do symbol resolution for all addresses in the log file.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.OpenPdbForModuleFile(Microsoft.Diagnostics.Symbols.SymbolReader,Microsoft.Diagnostics.Tracing.Etlx.TraceModuleFile)">
+ <summary>
+ Look up the SymbolModule (open PDB) for a given moduleFile. Will generate NGEN pdbs as needed.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.TraceModuleUnchanged(Microsoft.Diagnostics.Tracing.Etlx.TraceModuleFile,System.IO.TextWriter)">
+ <summary>
+ Returns true if 'moduleFile' seems to be unchanged from the time the information about it
+ was generated. Logs messages to 'log' if it fails.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.CodeAddressInfo">
+ <summary>
+ A CodeAddressInfo is the actual data stored in the ETLX file that represents a
+ TraceCodeAddress. It knows its Address in the process and it knows the
+ TraceModuleFile (which knows its base address), so it also knows its relative
+ address in the TraceModuleFile (which is what is needed to look up the value
+ in the PDB.
+
+ Note that by the time that the CodeAddressInfo is persisted in the ETLX file
+ it no longer knows the process it originated from (thus separate processes
+ with the same address and same DLL file loaded at the same address can share
+ the same CodeAddressInfo. This is actually reasonably common, since OS tend
+ to load at their preferred base address.
+
+ We also have to handle the managed case, in which case the CodeAddressInfo may
+ also know about the TraceMethod or the ILMapIndex (which remembers both the
+ method and the line numbers for managed code.
+
+ However when the CodeAddressInfo is first created, we don't know the TraceModuleFile
+ so we also need to remember the Process
+
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.CodeAddressInfo.GetProcessIndex(Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses)">
+ <summary>
+ This is only valid until MethodIndex or ModuleFileIndex is set.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.CodeAddressInfo.GetMethodIndex(Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses)">
+ <summary>
+ Only for managed code.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.CodeAddressInfo.GetModuleFileIndex(Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses)">
+ <summary>
+ Only for unmanaged code. TODO, this can be folded into methodOrProcessIlMap index and save a DWORD.
+ since if the method or IlMap is present then you can get the ModuelFile index from there.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.CodeAddressInfo.InclusiveCount">
+ <summary>
+ This is a count of how many times this code address appears in any stack in the trace.
+ It is a measure of what popular the code address is (whether we should look up its symbols).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.FindAndRemove(System.Int64,Microsoft.Diagnostics.Tracing.Etlx.ProcessIndex,Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddresses.ILMapIndex@)">
+ <summary>
+ Find the ILToNativeMap for 'methodId' in process associated with 'processIndex'
+ and then remove it from the table (this is what you want to do when the method is unloaded)
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddress">
+ <summary>
+ Conceptually a TraceCodeAddress represents a particular point of execution within a particular
+ line of code in some source code. As a practical matter, they are represented two ways
+ depending on whether the code is managed or not.
+ <para>* For native code (or NGened code), it is represented as a virtual address along with the loaded native
+ module that includes that address along with its load address. A code address does NOT
+ know its process because they can be shared among all processes that load a particular module
+ at a particular location. These code addresses will not have methods associated with them
+ unless symbols information (PDBS) are loaded for the module using the LookupSymbolsForModule.
+ </para>
+ <para> * For JIT compiled managed code, the address in a process is eagerly resolved into a method, module
+ and an IL offset and that is stored in the TraceCodeAddress.
+ </para>
+ <para> Sometimes it is impossible to even determine the module associated with a virtual
+ address in a process. These are represented as simply the virtual address.
+ </para>
+ <para>
+ Because code addresses are so numerous, consider using CodeAddressIndex instead of TraceCodeAddress
+ to represent a code address. Methods on TraceLog.CodeAddresses can access all the information
+ that would be in a TraceCodeAddress from a CodeAddressIndex without the overhead of creating
+ a TraceCodeAddress object.
+ </para>
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddress.CodeAddressIndex">
+ <summary>
+ The CodeAddressIndex that uniquely identifies the same code address as this TraceCodeAddress
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddress.Address">
+ <summary>
+ The Virtual address of the code address in the process. (Note that the process is unknown by the code address to allow for sharing)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddress.FullMethodName">
+ <summary>
+ The full name (Namespace name.class name.method name) of the method associated with this code address.
+ Returns the empty string if no method is associated with the code address.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddress.Method">
+ <summary>
+ Returns the TraceMethod associated with this code address or null if there is none.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddress.ILOffset">
+ <summary>
+ If the TraceCodeAddress is associated with managed code, return the IL offset within the method. If the method
+ is unmanaged -1 is returned. To determine the IL offset the PDB for the NGEN image (for NGENed code) or the
+ correct .NET events (for JIT compiled code) must be present. If this information is not present -1 is returned.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddress.GetSourceLine(Microsoft.Diagnostics.Symbols.SymbolReader)">
+ <summary>
+ A TraceCodeAddress can contain a method name, but does not contain number information. To
+ find line number information you must read the PDB again and fetch it. This is what
+ GetSoruceLine does.
+ <para>
+ Given a SymbolReader (which knows how to look up PDBs) find a SourceLocation (which represents a
+ particular line number in a particular source file associated with the current TraceCodeAddress.
+ Returns null if anything goes wrong (and diagnostic information will be written to the
+ log file associated with the SymbolReader.
+ </para>
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddress.ModuleFile">
+ <summary>
+ Returns the TraceModuleFile representing the DLL path associated with this code address (or null if not known)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddress.ModuleName">
+ <summary>
+ ModuleName is the name of the file without path or extension.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddress.ModuleFilePath">
+ <summary>
+ The full path name of the DLL associated with this code address. Returns empty string if not known.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddress.CodeAddresses">
+ <summary>
+ The CodeAddresses container that this Code Address lives within
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddress.ToString">
+ <summary>
+ An XML representation for the CodeAddress (for debugging)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceCodeAddress.ToString(System.Text.StringBuilder)">
+ <summary>
+ Writes an XML representation for the CodeAddress to the stringbuilder sb
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.MethodIndex">
+ <summary>
+ MethodIndex uniquely identifies a method within the log. Valid values are between 0 and
+ TraceMethods.Count-1. Thus, an array can be used to 'attach' data to a method.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.MethodIndex.Invalid">
+ <summary>
+ Returned when no appropriate Method exists.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.TraceMethods">
+ <summary>
+ Methods are so common in most traces, that having a .NET object (a TraceMethod) for
+ each one is often too expensive. As optimization, TraceLog also assigns a method index
+ to every method and this index uniquely identifies the method in a very light weight fashion.
+ <para>
+ To be useful, however you need to be able to ask questions about a method index without creating
+ a TraceMethod. This is the primary purpose of a TraceMethods (accessible from TraceLog.CodeAddresses.Methods).
+ It has a set of
+ methods that take a MethodIndex and return properties of the method (like its name, and module file)
+ </para>
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceMethods.Count">
+ <summary>
+ Returns the count of method indexes. All MethodIndexes are strictly less than this.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceMethods.MethodToken(Microsoft.Diagnostics.Tracing.Etlx.MethodIndex)">
+ <summary>
+ Given a method index, if the method is managed return the IL meta data MethodToken (returns 0 for native code)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceMethods.MethodRva(Microsoft.Diagnostics.Tracing.Etlx.MethodIndex)">
+ <summary>
+ Given a method index, return the Method's RVA (offset from the base of the DLL in memory) (returns 0 for managed code)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceMethods.MethodModuleFileIndex(Microsoft.Diagnostics.Tracing.Etlx.MethodIndex)">
+ <summary>
+ Given a method index, return the index for the ModuleFile associated with the Method Index.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceMethods.FullMethodName(Microsoft.Diagnostics.Tracing.Etlx.MethodIndex)">
+ <summary>
+ Given a method index, return the Full method name (Namespace.ClassName.MethodName) associated with the Method Index.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceMethods.Item(Microsoft.Diagnostics.Tracing.Etlx.MethodIndex)">
+ <summary>
+ Given a method index, return a TraceMethod that also represents the method.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceMethods.ToString">
+ <summary>
+ Returns an XML representation of the TraceMethods.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceMethods.GetEnumerator">
+ <summary>
+ IEnumerable support
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.TraceMethod">
+ <summary>
+ A TraceMethod represents the symbolic information for a particular method. To maximizes haring a TraceMethod
+ has very little state, just the module and full method name.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceMethod.MethodIndex">
+ <summary>
+ Each Method in the TraceLog is given an index that uniquely identifies it. This return this index for this TraceMethod
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceMethod.FullMethodName">
+ <summary>
+ The full name of the method (Namespace.ClassName.MethodName).
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceMethod.MethodToken">
+ <summary>
+ .Net runtime methods have a token (32 bit number) that uniquely identifies it in the meta data of the managed DLL.
+ This property returns this token. Returns 0 for unmanaged code or method not found.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceMethod.MethodRva">
+ <summary>
+ For native code the RVA (relative virtual address, which is the offset from the base of the file in memory)
+ for the method in the file. Returns 0 for managed code or method not found;
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceMethod.MethodModuleFileIndex">
+ <summary>
+ Returns the index for the DLL ModuleFile (which represents its file path) associated with this method
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceMethod.MethodModuleFile">
+ <summary>
+ Returns the ModuleFile (which represents its file path) associated with this method
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceMethod.ToString">
+ <summary>
+ A XML representation of the TraceMethod. (Used for debugging)
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceMethod.ToString(System.Text.StringBuilder)">
+ <summary>
+ Writes an XML representation of the TraceMethod to the stringbuilder 'sb'
+ </summary>
+ <param name="sb"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.ModuleFileIndex">
+ <summary>
+ A ModuleFileIndex represents a particular file path on the disk. It is a number
+ from 0 to MaxModuleFileIndex, which means that you can create a side array to hold
+ information about module files.
+
+ You can look up information about the ModuleFile from the ModuleFiles type.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.ModuleFileIndex.Invalid">
+ <summary>
+ Returned when no appropriate ModuleFile exists.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.TraceModuleFiles">
+ <summary>
+ TraceModuleFiles is the list of all the ModuleFiles in the trace. It is an IEnumerable.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceModuleFiles.Count">
+ <summary>
+ Each file is given an index for quick lookup. Count is the
+ maximum such index (thus you can create an array that is 1-1 with the
+ files easily).
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceModuleFiles.Item(Microsoft.Diagnostics.Tracing.Etlx.ModuleFileIndex)">
+ <summary>
+ Given a ModuleFileIndex, find the TraceModuleFile which also represents it
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceModuleFiles.Log">
+ <summary>
+ Returns the TraceLog associated with this TraceModuleFiles
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceModuleFiles.ToString">
+ <summary>
+ Returns an XML representation of the TraceModuleFiles
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceModuleFiles.System#Collections#Generic#IEnumerable{Microsoft#Diagnostics#Tracing#Etlx#TraceModuleFile}#GetEnumerator">
+ <summary>
+ Enumerate all the files that occurred in the trace log.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceModuleFiles.GetOrCreateModuleFile(System.String,System.UInt64)">
+ <summary>
+ We cache information about a native image load in a TraceModuleFile. Retrieve or create a new
+ cache entry associated with 'nativePath' and 'moduleImageBase'. 'moduleImageBase' can be 0 for managed assemblies
+ that were not loaded with LoadLibrary.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceModuleFiles.GetModuleFile(System.String,System.UInt64)">
+ <summary>
+ For a given file name, get the TraceModuleFile associated with it.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.TraceModuleFile">
+ <summary>
+ The TraceModuleFile represents a executable file that can be loaded into memory (either an EXE or a
+ DLL). It represents the path on disk as well as the location in memory where it loads (or
+ its ModuleID if it is a managed module), but not the load or unload time or the process in which
+ it was loaded (this allows them to be shared within the trace).
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceModuleFile.ModuleFileIndex">
+ <summary>
+ The ModuleFileIndex ID that uniquely identifies this module file.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceModuleFile.FilePath">
+ <summary>
+ The moduleFile name associated with the moduleFile. May be the empty string if the moduleFile has no moduleFile
+ (dynamically generated). For managed code, this is the IL moduleFile name.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceModuleFile.Name">
+ <summary>
+ This is the short name of the moduleFile (moduleFile name without extension).
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceModuleFile.ImageBase">
+ <summary>
+ Returns the address in memory where the dll was loaded.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceModuleFile.ImageSize">
+ <summary>
+ Returns the size of the DLL when loaded in memory
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceModuleFile.ImageEnd">
+ <summary>
+ Returns the address just past the memory the module uses.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceModuleFile.PdbName">
+ <summary>
+ The name of the symbol file (PDB file) associated with the DLL
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceModuleFile.PdbSignature">
+ <summary>
+ Returns the GUID that uniquely identifies the symbol file (PDB file) for this DLL
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceModuleFile.PdbAge">
+ <summary>
+ Returns the age (which is a small integer), that is also needed to look up the symbol file (PDB file) on a symbol server.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceModuleFile.FileVersion">
+ <summary>
+ Returns the file version string that is optionally embedded in the DLL's resources. Returns the empty string if not present.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceModuleFile.ProductName">
+ <summary>
+ Returns the product name recorded in the file version information. Returns empty string if not present
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceModuleFile.ProductVersion">
+ <summary>
+ Returns a version string for the product as a whole (could include GIT source code hash). Returns empty string if not present
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceModuleFile.ImageChecksum">
+ <summary>
+ This is the checksum value in the PE header. Can be used to validate
+ that the file on disk is the same as the file from the trace.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceModuleFile.ImageId">
+ <summary>
+ This used to be called TimeDateStamp, but linkers may not use it as a
+ timestamp anymore because they want deterministic builds. It still is
+ useful as a unique ID for the image.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceModuleFile.GitCommitHash">
+ <summary>
+ If the Product Version fields has a GIT Commit Hash component, this returns it, Otherwise it is empty.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceModuleFile.BuildTime">
+ <summary>
+ Returns the time the DLL was built as a DateTime. Note that this may not
+ work if the build system uses deterministic builds (in which case timestamps
+ are not allowed. We may not be able to tell if this is a bad timestamp
+ but we include it because when it is timestamp it is useful.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceModuleFile.CodeAddressesInModule">
+ <summary>
+ The number of code addresses included in this module. This is useful for determining if
+ this module is worth having its symbolic information looked up or not. It is not
+ otherwise a particularly interesting metric.
+ <para>
+ This number is defined as the number of appearances this module has in any stack
+ or any event with a code address (If the modules appears 5 times in a stack that
+ counts as 5 even though it is just one event's stack).
+ </para>
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceModuleFile.ManagedModule">
+ <summary>
+ If the module file was a managed native image, this is the IL file associated with it.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceModuleFile.ToString">
+ <summary>
+ Returns an XML representation of the TraceModuleFile (for debugging)
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.ActivityIndex">
+ <summary>
+ A ActivityIndex uniquely identifies an Activity in the log. Valid values are between
+ 0 and Activities.Count-1.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.ActivityIndex.Invalid">
+ <summary>
+ valid activity indexes are non-negative integers
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.TraceActivity">
+ <summary>
+ Representation of an Activity. An activity can be thought of as a unit of execution associated with
+ a task or workitem; it executes on one thread, and has a start and end time. An activity keeps track
+ of its "creator" or "caller" -- which is the activity that scheduled it. Using the "creator" link a
+ user can determine the chain of activities that led up to the current one.
+
+ Given an event you can get the Activity for the event using the Activity() extension method.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.TraceActivity.ActivityKind">
+ <summary>
+ Describes the kinds of known Activities (used for descriptive purposes alone)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.TraceActivity.ActivityKind.Invalid">
+ <summary>Invalid</summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.TraceActivity.ActivityKind.Initial">
+ <summary>
+ Default activity on a thread (when the thread does not execute any code on
+ behalf of anyone else)
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.TraceActivity.ActivityKind.TaskScheduled">
+ <summary>
+ An activity that was initiated by a Task.Run
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.TraceActivity.ActivityKind.TaskStarted">
+ <summary>
+ An activity that's a task, but for which we didn't see a "Scheduled" event
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.TraceActivity.ActivityKind.AwaitTaskScheduled">
+ <summary>
+ An activity that allows correlation between the antecedent and continuation
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.TraceActivity.ActivityKind.ClrThreadStart">
+ <summary>A thread started with Thread.Start</summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.TraceActivity.ActivityKind.ClrThreadPool">
+ <summary>Native CLR threadpool workitem</summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.TraceActivity.ActivityKind.ClrIOThreadPool">
+ <summary>Native CLR IO threadpool workitem</summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.TraceActivity.ActivityKind.FxThreadPool">
+ <summary>Managed threadpool workitem</summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.TraceActivity.ActivityKind.FxTransfer">
+ <summary>Generic managed thread transfer</summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.TraceActivity.ActivityKind.FxAsyncIO">
+ <summary>Managed async IO workitem</summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.TraceActivity.ActivityKind.FxWinRTDispatch">
+ <summary>WinRT Dispatched workitem</summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.TraceActivity.ActivityKind.Implied">
+ <summary>
+ Used when we make up ones because we know that have to be there but we don't know enough to do more than that.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.TraceActivity.ActivityKind.TaskWait">
+ <summary>
+ An activity that allows correlation between the antecedent and continuation
+ if have bit 5 set it means you auto-compete
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.TraceActivity.ActivityKind.TaskWaitSynchronous">
+ <summary>
+ Same as TaskWait, hwoever it auto-completes
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.TraceActivity.ActivityKind.FxTimer">
+ <summary>
+ Managed timer workitem
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceActivity.Index">
+ <summary>A trace-wide unique id identifying an activity</summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceActivity.Creator">
+ <summary>The activity that initiated or caused the current one</summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceActivity.ID">
+ <summary>
+ This return an unique string 'name' for the activity. It is a the Index followed by
+ a - followed by the TPL index (if available). It is a bit nicer since it gives
+ more information for debugging.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceActivity.Path">
+ <summary>
+ Computes the creator path back to root.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceActivity.Thread">
+ <summary>The thread on which the activity is running</summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceActivity.MultiTrigger">
+ <summary>True if there may be multiple activities that were initiated by caller (e.g. managed Timers)</summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceActivity.Name">
+ <summary>A descriptive label for the activity
+ TODO: eliminate and use ToString()?
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceActivity.IsThreadActivity">
+ <summary>
+ A thread activity is the activity associate with an OS thread. It is special because it may
+ have a region that is disjoint.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceActivity.StartTimeRelativeMSec">
+ <summary>Time from beginning of trace (in msec) when activity started executing</summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceActivity.EndTimeRelativeMSec">
+ <summary>Time from beginning of trace (in msec) when activity completed execution. Does not include children.</summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceActivity.CreationEventIndex">
+ <summary>The event index of the TraceEvent instance that created/scheduled this activity</summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceActivity.CreationCallStackIndex">
+ <summary>The call stack index of the TraceEvent instance that scheduled (caused the creation of) the activity</summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceActivity.CreationTimeRelativeMSec">
+ <summary>Time from beginning of trace (in msec) when activity was scheduled</summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceActivity.ToString">
+ <summary>
+ To use mainly for debugging
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.TraceLogOptions">
+ <summary>
+ TraceLogOptions control the generation of a TraceLog (ETLX file) from an ETL file.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLogOptions.#ctor">
+ <summary>
+ Creates a new object containing options for constructing a TraceLog file.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.TraceLogOptions.ShouldResolveSymbols">
+ <summary>
+ If non-null, this is a predicate that, given a file path to a dll, answers the question
+ whether the PDB associated with that DLL be looked up and its symbolic information added
+ to the TraceLog file as part of conversion. Symbols can be looked up afterward when
+ the file is later opened, so the default (which is to look up no symbols during
+ conversion) is typically OK.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.TraceLogOptions.LocalSymbolsOnly">
+ <summary>
+ Resolving symbols from a symbol server can take a long time. If
+ there is a DLL that always fails, it can be quite annoying because
+ it will always cause delays, By specifying only local symbols it
+ will only resolve the symbols if it can do so without the delay of network traffic.
+ Symbols that have been previously cached locally from a symbol
+ server count as local symbols.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.TraceLogOptions.AlwaysResolveSymbols">
+ <summary>
+ By default symbols are only resolved if there are stacks associated with the trace.
+ Setting this option forces resolution even if there are no stacks.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.Etlx.TraceLogOptions.ConversionLog">
+ <summary>
+ Writes status to this log. Useful for debugging symbol issues.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.TraceLogOptions.ConversionLogName">
+ <summary>
+ If ConversionLogName is set, it indicates that any messages associated with creating the TraceLog should be written here.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.TraceLogOptions.KeepAllEvents">
+ <summary>
+ ETL files typically contain a large number of 'bookkeeping' event for resolving names of files, or methods or to indicate information
+ about processes that existed when the trace was started (DCStart and DCStop events). By default these events are stripped from
+ the ETLX file because their information has already been used to do the bookkeeping as part of the conversion
+ <para>
+ However sometimes it is useful to keep these events (typically for debugging TraceEvent itself) and setting this
+ property to true will cause every event in the ETL file to be copied as an event to the ETLX file.
+ </para>
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.TraceLogOptions.MaxEventCount">
+ <summary>
+ Sometimes ETL files are too big , and you just want to look at a fraction of it to speed things up
+ (or to keep file size under control). The MaxEventCount property allows that. 10M will produce a 3-4GB ETLX file.
+ 1M is a good value to keep ETLX file size under control. Note that that the conversion still scan the entire
+ original ETL file too look for bookkeeping events, however MaxEventCount events will be transfered to the ETLX
+ file as events.
+ <para>
+ The default is 10M because ETLX has a restriction of 4GB in size.
+ </para>
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.TraceLogOptions.SkipMSec">
+ <summary>
+ If an ETL file has too many events for efficient processing the first part of the trace can be skipped by setting this
+ property. Any event which happens before 'SkipMSec' into the session will be filtered out. This property is
+ intended to be used along with the MaxEventCount property to carve out a arbitrary chunk of time from an ETL
+ file as it is converted to an ETLX file.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.TraceLogOptions.OnLostEvents">
+ <summary>
+ If this delegate is non-null, it is called if there are any lost events or if the file was truncated.
+ It is passed a bool whether the ETLX file was truncated, as well as the number of lost events and the
+ total number of events in the ETLX file. You can throw if you want to abort.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.TraceLogOptions.ExplicitManifestDir">
+ <summary>
+ If you have the manifests for particular providers, you can read them in explicitly by setting this directory.
+ All files of the form *.manifest.xml will be read into the DynamicTraceEventParser's database before conversion
+ starts.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Tracing.Etlx.TraceLogOptions.ContinueOnError">
+ <summary>
+ If errors occur during conversion, just assume the traced ended at that point and continue.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Etlx.TraceLogExtensions">
+ <summary>
+ The TraceEvent instances returned during the processing of a TraceLog have additional capabilities that these extension methods can access.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLogExtensions.Process(Microsoft.Diagnostics.Tracing.TraceEvent)">
+ <summary>
+ Finds the TraceProcess associated with a TraceEvent.
+ Guaranteed to be non-null for non-real-time sessions if the process ID is != -1
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLogExtensions.Thread(Microsoft.Diagnostics.Tracing.TraceEvent)">
+ <summary>
+ Finds the TraceThread associated with a TraceEvent.
+ Guaranteed to be non-null for non-real-time sessions if the process ID is != -1
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLogExtensions.Log(Microsoft.Diagnostics.Tracing.TraceEvent)">
+ <summary>
+ Finds the TraceLog associated with a TraceEvent.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLogExtensions.CallStack(Microsoft.Diagnostics.Tracing.TraceEvent)">
+ <summary>
+ Finds the TraceCallStack associated with a TraceEvent. Returns null if the event does not have callstack.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLogExtensions.CallStackIndex(Microsoft.Diagnostics.Tracing.TraceEvent)">
+ <summary>
+ Finds the CallStack index associated with a TraceEvent. Returns Invalid if the event does not have callstack.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLogExtensions.BlockingStack(Microsoft.Diagnostics.Tracing.Parsers.Kernel.CSwitchTraceData)">
+ <summary>
+ Finds the CallStack index associated the blocking thread for CSwitch event
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLogExtensions.CallStacks(Microsoft.Diagnostics.Tracing.TraceEvent)">
+ <summary>
+ Finds the TraceCallStacks associated with a TraceEvent.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLogExtensions.Activity(Microsoft.Diagnostics.Tracing.TraceEvent)">
+ <summary>
+ Finds the Activity associated with a TraceEvent
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLogExtensions.ActivityIndex(Microsoft.Diagnostics.Tracing.TraceEvent)">
+ <summary>
+ Finds the ActivityIndex associated with a TraceEvent
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLogExtensions.ProgramCounterAddress(Microsoft.Diagnostics.Tracing.Parsers.Kernel.MemoryPageFaultTraceData)">
+ <summary>
+ For a PageFaultTraceData event, gets the TraceCodeAddress associated with the ProgramCounter address.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLogExtensions.ProgramCounterAddressIndex(Microsoft.Diagnostics.Tracing.Parsers.Kernel.MemoryPageFaultTraceData)">
+ <summary>
+ For a PageFaultTraceData event, gets the CodeAddressIndex associated with the ProgramCounter address.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLogExtensions.IntructionPointerCodeAddress(Microsoft.Diagnostics.Tracing.Parsers.Kernel.SampledProfileTraceData)">
+ <summary>
+ For a SampledProfileTraceData event, gets the TraceCodeAddress associated with the InstructionPointer address.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLogExtensions.IntructionPointerCodeAddressIndex(Microsoft.Diagnostics.Tracing.Parsers.Kernel.SampledProfileTraceData)">
+ <summary>
+ For a SampledProfileTraceData event, gets the CodeAddressIndex associated with the InstructionPointer address.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLogExtensions.SysCallAddress(Microsoft.Diagnostics.Tracing.Parsers.Kernel.SysCallEnterTraceData)">
+ <summary>
+ For a SysCallEnterTraceData event, gets the CodeAddressIndex associated with the SysCallAddress address.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLogExtensions.IntructionPointerCodeAddress(Microsoft.Diagnostics.Tracing.Parsers.Kernel.PMCCounterProfTraceData)">
+ <summary>
+ For a PMCCounterProfTraceData event, gets the TraceCodeAddress associated with the InstructionPointer address.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLogExtensions.IntructionPointerCodeAddressIndex(Microsoft.Diagnostics.Tracing.Parsers.Kernel.PMCCounterProfTraceData)">
+ <summary>
+ For a PMCCounterProfTraceData event, gets the CodeAddressIndex associated with the InstructionPointer address.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLogExtensions.RoutineCodeAddressIndex(Microsoft.Diagnostics.Tracing.Parsers.Kernel.ISRTraceData)">
+ <summary>
+ For a ISRTraceData event, gets the CodeAddressIndex associated with the Routine address.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Etlx.TraceLogExtensions.RoutineCodeAddressIndex(Microsoft.Diagnostics.Tracing.Parsers.Kernel.DPCTraceData)">
+ <summary>
+ For a DPCTraceData event, gets the CodeAddressIndex associated with the Routine address.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.TraceLoggingEventId">
+ <summary>
+ TraceLoggingEvnetId is a class that manages assigning event IDs (small 64k numbers)
+ to TraceLogging Style events (which don't have them). Because TraceEvent uses EventIDs
+ so fundamentally this deficiency is very problematic.
+
+ Arguably this should have been done by the ETW system itself.
+
+ You use it by calling TestForTraceLoggingEventAndFixupIfNeeded on eventRecords.
+ You also have to explicitly call 'Dispose' when you are done with this class.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceLoggingEventId.TestForTraceLoggingEventAndFixupIfNeeded(Microsoft.Diagnostics.Tracing.TraceEventNativeMethods.EVENT_RECORD*)">
+ <summary>
+ Checks to see if eventRecord has TraceLogging meta data associated with it (EVENT_HEADER_EXT_TYPE_EVENT_SCHEMA_TL)
+ and if so updates EventHeader.Id to be an event ID unique to that provider/opcode/meta-data blob.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceLoggingEventId.Dispose">
+ <summary>
+ cleans up native memory allocated by this routine.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceLoggingEventId.TestForTraceLoggingEventAndFixupIfNeededHelper(Microsoft.Diagnostics.Tracing.TraceEventNativeMethods.EVENT_RECORD*)">
+ <summary>
+ Checks to see if this event has TraceLogging meta data associated with it (EVENT_HEADER_EXT_TYPE_EVENT_SCHEMA_TL)
+ and if so updates EventHeader.Id to be an event ID unique to that provider/opcode/meta-data blob.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.TraceLoggingEventId.GetEventIDForTraceLoggingEvent(Microsoft.Diagnostics.Tracing.TraceEventNativeMethods.EVENT_RECORD*,Microsoft.Diagnostics.Tracing.TraceEventNativeMethods.EVENT_HEADER_EXTENDED_DATA_ITEM*)">
+ <summary>
+ given that 'eventRecord' is a TraceLogging event (with meta-data 'metaData'), return a eventID that is unique
+ to that provider/opcode/meta-data blob.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.TraceLoggingEventId.ProviderMetaDataKey">
+ <summary>
+ ProviderMetaDataKey is what we use to look up TraceLogging meta-data. It is
+ basically just GUID (representing the provider) an opcode (start/stop) and
+ a blob (representing the TraceLogging meta-data for an event) that knows how to
+ compare itself so it can be a key to a hash table.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.Utilities.HistoryDictionary`1">
+ <summary>
+ A HistoryDictionary is designed to look up 'handles' (pointer sized quantities), that might get reused
+ over time (eg Process IDs, thread IDs). Thus it takes a handle AND A TIME, and finds the value
+ associated with that handle at that time.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Utilities.HistoryDictionary`1.Add(System.UInt64,System.Int64,`0,System.Boolean)">
+ <summary>
+ Adds the association that 'id' has the value 'value' from 'startTime100ns' ONWARD until
+ it is supersede by the same id being added with a time that is after this. Thus if
+ I did Add(58, 1000, MyValue1), and add(58, 500, MyValue2) 'TryGetValue(58, 750, out val) will return
+ MyValue2 (since that value is 'in force' between time 500 and 1000.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.Utilities.HistoryDictionary`1.Remove(System.UInt64)">
+ <summary>
+ Remove all entries associated with a given key (over all time).
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.ZippedETLWriter">
+ <summary>
+ ZippedETLWriter is a helper class used to compress ETW data (ETL files)
+ along with symbolic information (e.g. NGEN pdbs), as well as other optional
+ metadata (e.g. collection log files), into a single archive ready for
+ transfer to another machine.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ZippedETLWriter.#ctor(System.String,System.IO.TextWriter)">
+ <summary>
+ Declares the intent to write a new ZIP archive that will
+ contain ETW file 'etlFilePath' in it as well as symbolic information (NGEN
+ pdbs) and possibly other information. log is a Text stream to send detailed
+ information to.
+ <para>
+ This routine assumes by default (unless Merge is set to false) that the ETL
+ file needs to be merged before it is archived. It will also generate all
+ the NGEN pdbs needed for the archive.
+ </para>
+ <para>
+ You must call the WriteArchive method before any operations actually happen.
+ Up to that point is is just remembering instructions for WriteArchive to
+ follow.
+ </para>
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.ZippedETLWriter.ZipArchivePath">
+ <summary>
+ This is the name of the output archive. By default is the same as the ETL file name
+ with a .zip' suffix added (thus it will typically be .etl.zip).
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.ZippedETLWriter.Log">
+ <summary>
+ If set this is where messages about progress and detailed error information goes.
+ While you dont; have to set this, it is a good idea to do so.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ZippedETLWriter.AddFile(System.String,System.String)">
+ <summary>
+ By default ZippedETL file will zip the ETL file itself and the NGEN pdbs associated with it.
+ You can add additional files to the archive by calling AddFile. In specififed 'archivePath'
+ is the path in the archive and defaults to just the file name of the original file path.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ZippedETLWriter.WriteArchive(System.IO.Compression.CompressionLevel)">
+ <summary>
+ Actually do the work specified by the ZippedETLWriter constructors and other methods.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.ZippedETLWriter.SymbolReader">
+ <summary>
+ This is the symbol reader that is used to generate the NGEN Pdbs as needed
+ If it is not specififed one is created on the fly.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.ZippedETLWriter.Merge">
+ <summary>
+ By default the ETL file is merged before being added to the archive. If
+ this is not necessary, you can set this to false.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.ZippedETLWriter.CompressETL">
+ <summary>
+ Uses a compressed format for the ETL file. Normally off.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.ZippedETLWriter.NGenSymbolFiles">
+ <summary>
+ By default the symbol files (PDBs) are included in the ZIP file. If this
+ is not desired for whatever reason, this property can be set to false.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.ZippedETLWriter.LowPriority">
+ <summary>
+ Do the work at low priority so as to avoid impacting the system.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.ZippedETLWriter.Zip">
+ <summary>
+ Normally WriteArchive creates a ZIP archive. However it is possible that you only wish
+ to do the merging and NGEN symbol generation. Setting this property to false
+ will supress the final ZIP operation.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.ZippedETLWriter.DeleteInputFile">
+ <summary>
+ Normally if you ZIP you will delete the original ETL file. Setting this to false overrides this.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ZippedETLWriter.GetNGenPdbs(System.String,Microsoft.Diagnostics.Symbols.SymbolReader,System.IO.TextWriter)">
+ <summary>
+ Returns the list of path names to the NGEN pdbs for any NGEN image in 'etlFile' that has
+ any samples in it.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Tracing.ZippedETLReader">
+ <summary>
+ ZippedETLReader is a helper class that unpacks the ZIP files generated
+ by the ZippedETLWriter class. It can be smart about placing the
+ symbolic information in these files on the SymbolReader's path so that
+ symbolic lookup 'just works'.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ZippedETLReader.#ctor(System.String,System.IO.TextWriter)">
+ <summary>
+ Declares the intent to unzip an .ETL.ZIP file that contain an compressed ETL file
+ (and NGEN pdbs) from the archive at 'zipFilePath'. If present, messages about
+ the unpacking go to 'log'. Note that this unpacking only happens when the
+ UnpackArchive() method is called.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.ZippedETLReader.Log">
+ <summary>
+ If set messages about unpacking go here.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.ZippedETLReader.EtlFileName">
+ <summary>
+ The name of the ETL file to extract (it is an error if there is not exactly 1).
+ If not present it is derived by changing the extension of the zip archive.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Tracing.ZippedETLReader.SymbolDirectory">
+ <summary>
+ Where to put the symbols.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Tracing.ZippedETLReader.UnpackArchive">
+ <summary>
+ After setting any properties to override default behavior, calling this method
+ will actually do the unpacking.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Symbols.NativeSymbolModule">
+ <summary>
+ A NativeSymbolModule represents symbol information for a native code module.
+ NativeSymbolModules can potentially represent Managed modules (which is why it is a subclass of that interface).
+
+ NativeSymbolModule should just be the CONTRACT for Native Symbols (some subclass implements
+ it for a particular format like Windows PDBs), however today because we have only one file format we
+ simply implement Windows PDBS here. This can be factored out of this class when we
+ support other formats (e.g. Dwarf).
+
+ To implmente support for Windows PDBs we use the Debug Interface Access (DIA). See
+ http://msdn.microsoft.com/library/x93ctkx8.aspx for more. I have only exposed what
+ I need, and the interface is quite large (and not super pretty).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.NativeSymbolModule.GetTypeForHeapAllocationSite(System.UInt32)">
+ <summary>
+ Returns the name of the type allocated for a given relative virtual address.
+ Returns null if the given rva does not match a known heap allocation site.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.NativeSymbolModule.FindNameForRva(System.UInt32)">
+ <summary>
+ Finds a (method) symbolic name for a given relative virtual address of some code.
+ Returns an empty string if a name could not be found.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.NativeSymbolModule.FindNameForRva(System.UInt32,System.UInt32@)">
+ <summary>
+ Finds a (method) symbolic name for a given relative virtual address of some code.
+ Returns an empty string if a name could not be found.
+ symbolStartRva is set to the start of the symbol start
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.NativeSymbolModule.SourceLocationForRva(System.UInt32)">
+ <summary>
+ Fetches the source location (line number and file), given the relative virtual address (RVA)
+ of the location in the executable.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.NativeSymbolModule.SourceLocationForRva(System.UInt32,System.String@,System.UInt32@,System.Int32@)">
+ <summary>
+ This overload of SourceLocationForRva like the one that takes only an RVA will return a source location
+ if it can. However this version has additional support for NGEN images. In the case of NGEN images
+ for .NET V4.6.1 or later), the NGEN images can't convert all the way back to a source location, but they
+ can convert the RVA back to IL artifacts (ilAssemblyName, methodMetadataToken, iloffset). THese can then
+ be used to look up the source line using the IL PDB.
+
+ Thus if the return value from this is null, check to see if the ilAssemblyName is non-null, and if not
+ you can look up the source location using that information.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.NativeSymbolModule.SourceLocationForManagedCode(System.UInt32,System.Int32)">
+ <summary>
+ Managed code is shipped as IL, so RVA to NATIVE mapping can't be placed in the PDB. Instead
+ what is placed in the PDB is a mapping from a method's meta-data token and IL offset to source
+ line number. Thus if you have a metadata token and IL offset, you can again get a source location
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Symbols.NativeSymbolModule.GlobalSymbol">
+ <summary>
+ The symbol representing the module as a whole. All global symbols are children of this symbol
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Symbols.NativeSymbolModule.PdbGuid">
+ <summary>
+ The a unique identifier that is used to relate the DLL and its PDB.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Symbols.NativeSymbolModule.PdbAge">
+ <summary>
+ Along with the PdbGuid, there is a small integer
+ call the age is also used to find the PDB (it represents the different
+ post link transformations the DLL has undergone).
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Symbols.NativeSymbolModule.MicrosoftPdbSourceFile">
+ <summary>
+ A source file represents a source file from a PDB. This is not just a string
+ because the file has a build time path, a checksum, and it needs to be 'smart'
+ to copy down the file if requested.
+
+ TODO We don't need this subclass. We can have SourceFile simply a container
+ that holds the BuildTimePath, hashType and hashValue. The lookup of the
+ source can then be put on NativeSymbolModule and called from SourceFile generically.
+ This makes the different symbol files more simmilar and is a nice simplification.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Symbols.NativeSymbolModule.MicrosoftPdbSourceFile.Url">
+ <summary>
+ If the source file is directly available on the web (that is there is a Url that
+ can be used to fetch it with HTTP Get), then return that Url. If no such publishing
+ point exists this property will return null.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.NativeSymbolModule.MicrosoftPdbSourceFile.GetSourceFromSrcServer">
+ <summary>
+ Try to fetch the source file associated with 'buildTimeFilePath' from the symbol server
+ information from the PDB from 'pdbPath'. Will return a path to the returned file (uses
+ SourceCacheDirectory associated symbol reader for context where to put the file),
+ or null if unsuccessful.
+
+ There is a tool called pdbstr associated with srcsrv that basically does this.
+ pdbstr -r -s:srcsrv -p:PDBPATH
+ will dump it.
+
+ The basic flow is
+
+ There is a variables section and a files section
+
+ The file section is a list of items separated by *. The first is the path, the rest are up to you
+
+ You form a command by using the SRCSRVTRG variable and substituting variables %var1 where var1 is the first item in the * separated list
+ There are special operators %fnfile%(XXX), etc that manipulate the string XXX (get file name, translate \ to / ...
+
+ If what is at the end is a valid URL it is looked up.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.NativeSymbolModule.MicrosoftPdbSourceFile.GetSourceServerTargetAndCommand(System.String@,System.String@,System.String)">
+ <summary>
+ Parse the 'srcsrv' stream in a PDB file and return the target for SourceFile
+ represented by the 'this' pointer. This target is iether a ULR or a local file
+ path.
+
+ You can dump the srcsrv stream using a tool called pdbstr
+ pdbstr -r -s:srcsrv -p:PDBPATH
+
+ The target in this stream is called SRCSRVTRG and there is another variable SRCSRVCMD
+ which represents the command to run to fetch the soruce into SRCSRVTRG
+
+ To form the target, the stream expect you to private a %targ% variable which is a directory
+ prefix to tell where to put the source file being fetched. If the source file is
+ available via a URL this variable is not needed.
+
+ ********* This is a typical example of what is in a PDB with source server information.
+ SRCSRV: ini ------------------------------------------------
+ VERSION=3
+ INDEXVERSION=2
+ VERCTRL=Team Foundation Server
+ DATETIME=Thu Mar 10 16:15:55 2016
+ SRCSRV: variables ------------------------------------------
+ TFS_EXTRACT_CMD=tf.exe view /version:%var4% /noprompt "$%var3%" /server:%fnvar%(%var2%) /output:%srcsrvtrg%
+ TFS_EXTRACT_TARGET=%targ%\%var2%%fnbksl%(%var3%)\%var4%\%fnfile%(%var1%)
+ VSTFDEVDIV_DEVDIV2=http://vstfdevdiv.redmond.corp.microsoft.com:8080/DevDiv2
+ SRCSRVVERCTRL=tfs
+ SRCSRVERRDESC=access
+ SRCSRVERRVAR=var2
+ SRCSRVTRG=%TFS_extract_target%
+ SRCSRVCMD=%TFS_extract_cmd%
+ SRCSRV: source files --------------------------------- ------
+ f:\dd\externalapis\legacy\vctools\vc12\inc\cvconst.h*VSTFDEVDIV_DEVDIV2*/DevDiv/Fx/Rel/NetFxRel3Stage/externalapis/legacy/vctools/vc12/inc/cvconst.h*1363200
+ f:\dd\externalapis\legacy\vctools\vc12\inc\cvinfo.h*VSTFDEVDIV_DEVDIV2*/DevDiv/Fx/Rel/NetFxRel3Stage/externalapis/legacy/vctools/vc12/inc/cvinfo.h*1363200
+ f:\dd\externalapis\legacy\vctools\vc12\inc\vc\ammintrin.h*VSTFDEVDIV_DEVDIV2*/DevDiv/Fx/Rel/NetFxRel3Stage/externalapis/legacy/vctools/vc12/inc/vc/ammintrin.h*1363200
+ SRCSRV: end ------------------------------------------------
+
+ ********* And here is a more modern one where the source code is available via a URL.
+ SRCSRV: ini ------------------------------------------------
+ VERSION=2
+ INDEXVERSION=2
+ VERCTRL=http
+ SRCSRV: variables ------------------------------------------
+ SRCSRVTRG=https://nuget.smbsrc.net/src/%fnfile%(%var1%)/%var2%/%fnfile%(%var1%)
+ SRCSRVCMD=
+ SRCSRVVERCTRL=http
+ SRCSRV: source files ---------------------------------------
+ c:\Users\rafalkrynski\Documents\Visual Studio 2012\Projects\DavidSymbolSourceTest\DavidSymbolSourceTest\Demo.cs*SQPvxWBMtvANyCp8Pd3OjoZEUgpKvjDVIY1WbaiFPMw=
+ SRCSRV: end ------------------------------------------------
+
+ </summary>
+ <param name="target">returns the target source file path</param>
+ <param name="command">returns the command to fetch the target source file</param>
+ <param name="localDirectoryToPlaceSourceFiles">Specify the value for %targ% variable. This is the
+ directory where source files can be fetched to. Typically the returned file is under this directory
+ If the value is null, %targ% variable be emtpy. This assumes that the resulting file is something
+ that does not need to be copied to the machine (either a URL or a file that already exists)</param>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.NativeSymbolModule.MicrosoftPdbSourceFile.FindTfExe">
+ <summary>
+ Returns the location of the tf.exe executable or
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.NativeSymbolModule.GetSrcSrvStream">
+ <summary>
+ Gets the 'srcsvc' data stream from the PDB and return it in as a string. Returns null if it is not present.
+
+ There is a tool called pdbstr associated with srcsrv that basically does this.
+ pdbstr -r -s:srcsrv -p:PDBPATH
+ will dump it.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.NativeSymbolModule.GetMergedAssembliesMap">
+ <summary>
+ For Project N modules it returns the list of pre merged IL assemblies and the corresponding mapping.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.NativeSymbolModule.GetEmbeddedILImage">
+ <summary>
+ For ProjectN modules, gets the merged IL image embedded in the .PDB (only valid for single-file compilation)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.NativeSymbolModule.GetPseudoAssembly">
+ <summary>
+ For ProjectN modules, gets the pseudo-assembly embedded in the .PDB, if there is one.
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.NativeSymbolModule.GetFuncMDTokenMap">
+ <summary>
+ For ProjectN modules, gets the binary blob that describes the mapping from RVAs to methods.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.NativeSymbolModule.GetTypeMDTokenMap">
+ <summary>
+ For ProjectN modules, gets the binary blob that describes the mapping from RVAs to types.
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Symbols.NativeSymbolModule.HeapAllocationTypeInfo">
+ <summary>
+ This static class contains the GetTypeName method for retrieving the type name of
+ a heap allocation site.
+
+ See https://github.com/KirillOsenkov/Dia2Dump/blob/master/PrintSymbol.cpp for more details
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Symbols.Symbol">
+ <summary>
+ Represents a single symbol in a PDB file.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Symbols.Symbol.Name">
+ <summary>
+ The name for the symbol
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Symbols.Symbol.RVA">
+ <summary>
+ The relative virtual address (offset from the image base when loaded in memory) of the symbol
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Symbols.Symbol.Length">
+ <summary>
+ The length of the memory that the symbol represents.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Symbols.Symbol.Id">
+ <summary>
+ A small integer identifier tat is unique for that symbol in the DLL.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Symbols.Symbol.UndecoratedName">
+ <summary>
+ Decorated names are names that most closely resemble the source code (have overloading).
+ However when the linker does not directly support all the expressiveness of the
+ source language names are encoded to represent this. This return this encoded name.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.Symbol.InSameSection(Microsoft.Diagnostics.Symbols.Symbol,Microsoft.Diagnostics.Symbols.Symbol)">
+ <summary>
+ Returns true if the two symbols live in the same linker section (e.g. text, data ...)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.Symbol.GetChildren">
+ <summary>
+ Returns the children of the symbol. Will return null if there are no children.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.Symbol.GetChildren(Dia2Lib.SymTagEnum)">
+ <summary>
+ Returns the children of the symbol, with the given tag. Will return null if there are no children.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.Symbol.CompareTo(Microsoft.Diagnostics.Symbols.Symbol)">
+ <summary>
+ Compares the symbol by their relative virtual address (RVA)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.Symbol.ToString">
+ <summary>
+ override
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Symbols.SymbolPath">
+ <summary>
+ SymPath is a class that knows how to parse _NT_SYMBOL_PATH syntax.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Symbols.SymbolPath.SymbolPathFromEnvironment">
+ <summary>
+ This allows you to set the _NT_SYMBOL_PATH as a from the windows environment.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SymbolPath.CleanSymbolPath">
+ <summary>
+ This 'cleans up' a symbol path. In particular
+ Empty ones are replaced with good defaults (symweb or msdl)
+ All symbol server specs have local caches (%Temp%\SymbolCache if nothing else is specified).
+
+ Note that this routine does NOT update _NT_SYMBOL_PATH.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Symbols.SymbolPath.MicrosoftSymbolServerPath">
+ <summary>
+ Returns the string representing a symbol path for the 'standard' Microsoft symbol servers.
+ This returns the public msdl.microsoft.com server if outside Microsoft.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SymbolPath.#ctor">
+ <summary>
+ Create an empty symbol path
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SymbolPath.#ctor(System.String)">
+ <summary>
+ Create a symbol that represents 'path' (the standard semicolon separated list of locations)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Symbols.SymbolPath.Elements">
+ <summary>
+ Returns the List of elements in the symbol path.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SymbolPath.Add(System.String)">
+ <summary>
+ Append all the elements in the semicolon separated list, 'path', to the symbol path represented by 'this'.
+ returns the 'this' pointer
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SymbolPath.Add(Microsoft.Diagnostics.Symbols.SymbolPathElement)">
+ <summary>
+ append a new symbol path element to the beginning of the symbol path represented by 'this'.
+ returns the 'this' pointer
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SymbolPath.Insert(System.String)">
+ <summary>
+ insert all the elements in the semicolon separated list, 'path' to the beginning of the symbol path represented by 'this'.
+ returns the 'this' pointer
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SymbolPath.Insert(Microsoft.Diagnostics.Symbols.SymbolPathElement)">
+ <summary>
+ insert a new symbol path element to the beginning of the symbol path represented by 'this'.
+ returns the 'this' pointer
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SymbolPath.DefaultSymbolCache(System.Boolean)">
+ <summary>
+ If you need to cache files locally, put them here. It is defined
+ to be the first local path of a SRV* qualification or %TEMP%\SymbolCache
+ if not is present.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SymbolPath.InsureHasCache(System.String)">
+ <summary>
+ People can use symbol servers without a local cache. This is bad, add one if necessary.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SymbolPath.LocalOnly">
+ <summary>
+ Removes all references to remote paths. This insures that network issues don't cause grief.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SymbolPath.CacheFirst">
+ <summary>
+ Create a new symbol path which first search all machine local locations (either explicit location or symbol server cache locations)
+ followed by all non-local symbol server. This produces better behavior (If you can find it locally it will be fast)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SymbolPath.ToString">
+ <summary>
+ Returns the string representation (semicolon separated) for the symbol path.
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SymbolPath.ToXml(System.IO.TextWriter,System.String)">
+ <summary>
+ Writes an XML representation of the symbol path to 'writer'
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SymbolPath.ComputerNameExists(System.String,System.Int32)">
+ <summary>
+ Checks to see 'computerName' exists (there is a Domain Names Service (DNS) reply to it)
+ This routine times out relative quickly (after 700 msec) if there is a problem reaching
+ the computer, and returns false.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Symbols.SymbolPath.s_MicrosoftSymbolServerPath">
+ <summary>
+ This is the backing field for the lazily-computed <see cref="P:Microsoft.Diagnostics.Symbols.SymbolPath.MicrosoftSymbolServerPath"/> property.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Symbols.SymbolPathElement">
+ <summary>
+ SymPathElement represents the text between the semicolons in a symbol path. It can be a symbol server specification or a simple directory path.
+
+ SymPathElement follows functional conventions. After construction everything is read-only.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Symbols.SymbolPathElement.IsSymServer">
+ <summary>
+ Returns true if this element of the symbol server path a symbol server specification
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Symbols.SymbolPathElement.Cache">
+ <summary>
+ Returns the local cache for a symbol server specification. returns null if not specified
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Symbols.SymbolPathElement.Target">
+ <summary>
+ Returns location to look for symbols. This is either a directory specification or an URL (for symbol servers)
+ This can be null if it is not specified (for cache-only paths).
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Symbols.SymbolPathElement.IsRemote">
+ <summary>
+ IsRemote returns true if it looks like the target is not on the local machine.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SymbolPathElement.ToString">
+ <summary>
+ Returns the string repsentation for the symbol server path element (e.g. SRV*c:\temp*\\symbols\symbols)
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SymbolPathElement.Equals(System.Object)">
+ <summary>
+ Implements object interface
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SymbolPathElement.GetHashCode">
+ <summary>
+ Implements object interface
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Symbols.SymbolReader">
+ <summary>
+ A symbol reader represents something that can FIND pdbs (either on a symbol server or via a symbol path)
+ Its job is to find a full path a PDB. Then you can use OpenSymbolFile to get a SymbolReaderModule and do more.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SymbolReader.#ctor(System.IO.TextWriter,System.String)">
+ <summary>
+ Opens a new SymbolReader. All diagnostics messages about symbol lookup go to 'log'.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SymbolReader.FindSymbolFilePathForModule(System.String,System.Boolean)">
+ <summary>
+ Finds the symbol file for 'exeFilePath' that exists on the current machine (we open
+ it to find the needed info). Uses the SymbolReader.SymbolPath (including Symbol servers) to
+ look up the PDB, and will download the PDB to the local cache if necessary. It will also
+ generate NGEN pdbs into the local symbol cache unless SymbolReaderFlags.NoNGenPDB is set.
+
+ By default for NGEN images it returns the NGEN pdb. However if 'ilPDB' is true it returns
+ the IL PDB.
+
+ Returns null if the pdb can't be found.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SymbolReader.FindSymbolFilePath(System.String,System.Guid,System.Int32,System.String,System.String)">
+ <summary>
+ Find the complete PDB path, given just the simple name (filename + pdb extension) as well as its 'signature',
+ which uniquely identifies it (on symbol servers). Uses the SymbolReader.SymbolPath (including Symbol servers) to
+ look up the PDB, and will download the PDB to the local cache if necessary.
+
+ A Guid of Empty, means 'unknown' and will match the first PDB that matches simple name. Thus it is unsafe.
+
+ Returns null if the PDB could not be found
+ </summary>
+ <param name="pdbFileName">The name of the PDB file (we only use the file name part)</param>
+ <param name="pdbIndexGuid">The GUID that is embedded in the DLL in the debug information that allows matching the DLL and the PDB</param>
+ <param name="pdbIndexAge">Tools like BBT transform a DLL into another DLL (with the same GUID) the 'pdbAge' is a small integers
+ that indicates how many transformations were done</param>
+ <param name="dllFilePath">If you know the path to the DLL for this pdb add it here. That way we can probe next to the DLL
+ for the PDB file.</param>
+ <param name="fileVersion">This is an optional string that identifies the file version (the 'Version' resource information.
+ It is used only to provided better error messages for the log.</param>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SymbolReader.FindExecutableFilePath(System.String,System.Int32,System.Int32,System.Boolean)">
+ <summary>
+ This API looks up an executable file, by its build-timestamp and size (on a symbol server), 'fileName' should be
+ a simple name (no directory), and you need the buildTimeStamp and sizeOfImage that are found in the PE header.
+
+ Returns null if it cannot find anything.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SymbolReader.OpenSymbolFile(System.String)">
+ <summary>
+ Given the path name to a particular PDB file, load it so that you can resolve symbols in it.
+ </summary>
+ <param name="pdbFilePath">The name of the PDB file to open.</param>
+ <returns>The SymbolReaderModule that represents the information in the symbol file (PDB)</returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SymbolReader.OpenNativeSymbolFile(System.String)">
+ <summary>
+ Like OpenSymbolFile, which opens a PDB, but this version will fail (return null)
+ if it is not WindowsSymbolModule. It is a shortcut for OpenSymbolFile as NativeSymbolModule
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Symbols.SymbolReader.SymbolPath">
+ <summary>
+ The symbol path used to look up PDB symbol files. Set when the reader is initialized.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Symbols.SymbolReader.SourcePath">
+ <summary>
+ The paths used to look up source files. defaults to _NT_SOURCE_PATH.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Symbols.SymbolReader.SymbolCacheDirectory">
+ <summary>
+ Where symbols are downloaded if needed. Derived from symbol path. It is the first
+ directory on the local machine in a SRV*DIR*LOC spec, and %TEMP%\SymbolCache otherwise.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Symbols.SymbolReader.SourceCacheDirectory">
+ <summary>
+ The place where source is downloaded from a source server.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Symbols.SymbolReader.Options">
+ <summary>
+ Is this symbol reader limited to just the local machine cache or not?
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Symbols.SymbolReader.SecurityCheck">
+ <summary>
+ We call back on this when we find a PDB by probing in 'unsafe' locations (like next to the EXE or in the Built location)
+ If this function returns true, we assume that it is OK to use the PDB.
+ </summary>
+ </member>
+ <member name="E:Microsoft.Diagnostics.Symbols.SymbolReader.OnSymbolFileFound">
+ <summary>
+ If set OnSymbolFileFound will be called when a PDB file is found.
+ It is passed the complete local file path, the PDB Guid (may be Guid.Empty) and PDB age.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Symbols.SymbolReader.Log">
+ <summary>
+ A place to log additional messages
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SymbolReader.GenerateNGenSymbolsForModule(System.String,System.String)">
+ <summary>
+ Given a full filename path to an NGEN image, insure that there is an NGEN image for it
+ in the symbol cache. If one already exists, this method simply returns that. If not
+ it is generated and placed in the symbol cache. When generating the PDB this routine
+ attempt to resolve line numbers, which DOES require looking up the PDB for the IL image.
+ Thus routine may do network accesses (to download IL PDBs).
+
+ Note that FindSymbolFilePathForModule calls this, so normally you don't need to call
+ this method directly.
+
+ By default it places the PDB in the SymbolCacheDirectory using normal symbol server
+ cache conventions (PDBNAME\Guid-AGE\Name). You can override this by specifying
+ the outputDirectory parameter.
+
+ <returns>The full path name of the PDB generated for the NGEN image.</returns>
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SymbolReader.HandleNetCorePdbs(System.String,System.String)">
+ <summary>
+ Given a NGEN (or ReadyToRun) imge 'ngenImageFullPath' and the PDB path
+ that we WANT it to generate generate the PDB. Returns either pdbPath
+ on success or null on failure.
+
+ TODO can be removed when we properly publish the NGEN pdbs as part of build.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SymbolReader.Dispose">
+ <summary>
+ Called when you are done with the symbol reader. Currently does nothing.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SymbolReader.PdbMatches(System.String,System.Guid,System.Int32,System.Boolean)">
+ <summary>
+ Returns true if 'filePath' exists and is a PDB that has pdbGuid and pdbAge.
+ if pdbGuid == Guid.Empty, then the pdbGuid and pdbAge checks are skipped.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SymbolReader.GetPhysicalFileFromServer(System.String,System.String,System.String,System.Predicate{System.String})">
+ <summary>
+ Fetches a file from the server 'serverPath' with pdb signature path 'pdbSigPath' (concatinate them with a / or \ separator
+ to form a complete URL or path name). It will place the file in 'fullDestPath' It will return true if successful
+ If 'contentTypeFilter is present, this predicate is called with the URL content type (e.g. application/octet-stream)
+ and if it returns false, it fails. This insures that things that are the wrong content type (e.g. redirects to
+ some sort of login) fail cleanly.
+
+ You should probably be using GetFileFromServer
+ </summary>
+ <param name="serverPath">path to server (e.g. \\symbols\symbols or http://symweb) </param>
+ <param name="pdbIndexPath">pdb path with signature (e.g clr.pdb/1E18F3E494DC464B943EA90F23E256432/clr.pdb)</param>
+ <param name="fullDestPath">the full path of where to put the file locally </param>
+ <param name="contentTypeFilter">if present this allows you to filter out urls that dont match this ContentType.</param>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SymbolReader.BuildFullUri(System.String,System.String)">
+ <summary>
+ Build the full uri from server path and pdb index path
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SymbolReader.CopyStreamToFile(System.IO.Stream,System.String,System.String,System.Boolean@)">
+ <summary>
+ This just copies a stream to a file path with logging.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SymbolReader.GetFileFromServer(System.String,System.String,System.String)">
+ <summary>
+ Looks up 'fileIndexPath' on the server 'urlForServer' (concatenate to form complete URL) copying the file to
+ 'targetPath' and returning targetPath name there (thus it is always a local file). Unlike GetPhysicalFileFromServer,
+ GetFileFromServer understands how to deal with compressed files and file.ptr (redirection).
+ </summary>
+ <returns>targetPath or null if the file cannot be found.</returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SymbolReader.GetClrDirectoryForNGenImage(System.String,System.IO.TextWriter,System.String@)">
+ <summary>
+ Deduce the path to where CLR.dll (and in particular NGEN.exe live for the NGEN image 'ngenImagepath')
+ Returns null if it can't be found. If the NGEN image is associated with a private runtime return
+ that value in 'privateVerStr'
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SymbolReader.BypassSystem32FileRedirection(System.String)">
+ <summary>
+ We may be a 32 bit app which has File system redirection turned on
+ Morph System32 to SysNative in that case to bypass file system redirection
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Symbols.ManagedSymbolModule">
+ <summary>
+ A SymbolModule represents a file that contains symbolic information
+ (a Windows PDB or Portable PDB). This is the interface that is independent
+ of what kind of symbolic file format you use. Becase portable PDBs only
+ support managed code, this shared interface is by necessity the interface
+ for managed code only (currently only Windows PDBs support native code).
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Symbols.ManagedSymbolModule.ExePath">
+ <summary>
+ This is the EXE associated with the Pdb. It may be null or an invalid path. It is used
+ to help look up source code (it is implicitly part of the Source Path search)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Symbols.ManagedSymbolModule.SymbolFilePath">
+ <summary>
+ The path name to the PDB itself. Might be empty if the symbol information is in memory.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Symbols.ManagedSymbolModule.PdbGuid">
+ <summary>
+ The Guid that is used to uniquely identify the DLL-PDB pair (used for symbol servers)
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Symbols.ManagedSymbolModule.SymbolReader">
+ <summary>
+ Fetches the SymbolReader assoicated with this SymbolModule. This is where shared
+ attributes (like SourcePath, SymbolPath etc) are found.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.ManagedSymbolModule.SourceLocationForManagedCode(System.UInt32,System.Int32)">
+ <summary>
+ Given a method and an IL offset, return a source location (line number and file).
+ Returns null if it could not find it.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.ManagedSymbolModule.GetSourceLinkJson">
+ <summary>
+ If the symbol file format supports SourceLink JSON this routine should be overriden
+ to return it.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.ManagedSymbolModule.GetUrlForFilePathUsingSourceLink(System.String)">
+ <summary>
+ Return a URL for 'buildTimeFilePath' using the source link mapping (that 'GetSourceLinkJson' fetched)
+ Returns null if there is URL using the SourceLink
+ </summary>
+ <param name="buildTimeFilePath"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.ManagedSymbolModule.ParseSourceLinkJson(System.String)">
+ <summary>
+ Parses SourceLink information and returns a list of filepath -> url Prefix tuples.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Symbols.SourceLocation">
+ <summary>
+ A SourceLocation represents a point in the source code. That is the file and the line number.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Symbols.SourceLocation.SourceFile">
+ <summary>
+ The source file for the code
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Symbols.SourceLocation.LineNumber">
+ <summary>
+ The line number for the code.
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Symbols.SymbolReaderOptions">
+ <summary>
+ SymbolReaderFlags indicates preferences on how aggressively symbols should be looked up.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Symbols.SymbolReaderOptions.None">
+ <summary>
+ No options this is the common case, where you want to look up everything you can.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Symbols.SymbolReaderOptions.CacheOnly">
+ <summary>
+ Only fetch the PDB if it lives in the symbolCacheDirectory (is local an is generated).
+ This will generate NGEN pdbs unless the NoNGenPDBs flag is set.
+ </summary>
+ </member>
+ <member name="F:Microsoft.Diagnostics.Symbols.SymbolReaderOptions.NoNGenSymbolCreation">
+ <summary>
+ No NGEN PDB generation.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Symbols.SourceFile.BuildTimeFilePath">
+ <summary>
+ The path of the file at the time the source file was built. We also look here when looking for the source.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Symbols.SourceFile.Url">
+ <summary>
+ If the source file is directly available on the web (that is there is a Url that
+ can be used to fetch it with HTTP Get), then return that Url. If no such publishing
+ point exists this property will return null.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SourceFile.GetSourceFile(System.Boolean)">
+ <summary>
+ This may fetch things from the source server, and thus can be very slow, which is why it is not a property.
+ returns a path to the file on the local machine (often in some machine local cache).
+ If requireChecksumMatch == false then you can see if you have an exact match by calling ChecksumMatches
+ (and if there is a checksum with HasChecksum).
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Symbols.SourceFile.HasChecksum">
+ <summary>
+ true if the PDB has a checksum for the data in the source file.
+ </summary>
+ </member>
+ <member name="P:Microsoft.Diagnostics.Symbols.SourceFile.ChecksumMatches">
+ <summary>
+ If GetSourceFile is called and 'requireChecksumMatch' == false then you can call this property to
+ determine if the checksum actually matched or not. This will return true if the original
+ PDB does not have a checksum (HasChecksum == false)
+ </summary>;
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SourceFile.GetSourceFromSrcServer">
+ <summary>
+ Look up the source from the source server. Returns null if it can't find the source
+ By default this simply uses the Url to look it up on the web. If 'Url' returns null
+ so does this.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SourceFile.ProbeForBestMatch(System.String)">
+ <summary>
+ Given 'fileName' which is a path to a file (which may not exist), set
+ _filePath and _checksumMatches appropriately. Namely _filePath should
+ always be the 'best' candidate for the source file path (matching checksum
+ wins, otherwise first existing file wins).
+
+ Returns true if we have a perfect match (no additional probing needed).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Symbols.SourceFile.ComputeChecksumMatch(System.String)">
+ <summary>
+ Returns true if 'filePath' matches the checksum OR we don't have a checkdum
+ (thus if we pass what validity check we have).
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Utilities.DirectoryUtilities">
+ <summary>
+ General purpose utilities dealing with archiveFile system directories.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Utilities.DirectoryUtilities.Copy(System.String,System.String)">
+ <summary>
+ SafeCopy sourceDirectory to directoryToVersion recursively. The target directory does
+ no need to exist
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Utilities.DirectoryUtilities.Copy(System.String,System.String,System.IO.SearchOption)">
+ <summary>
+ SafeCopy all files from sourceDirectory to directoryToVersion. If searchOptions == AllDirectories
+ then the copy is recursive, otherwise it is just one level. The target directory does not
+ need to exist.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Utilities.DirectoryUtilities.Clean(System.String)">
+ <summary>
+ Clean is sort of a 'safe' recursive delete of a directory. It either deletes the
+ files or moves them to '*.deleting' names. It deletes directories that are completely
+ empty. Thus it will do a recursive delete when that is possible. There will only
+ be *.deleting files after this returns. It returns the number of files and directories
+ that could not be deleted.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Utilities.DirectoryUtilities.DeleteOldest(System.String,System.Int32)">
+ <summary>
+ Removes the oldest directories directly under 'directoryPath' so that
+ only 'numberToKeep' are left.
+ </summary>
+ <param variable="directoryPath">Directory to removed old files from.</param>
+ <param variable="numberToKeep">The number of files to keep.</param>
+ <returns> true if there were no errors deleting files</returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Utilities.DirectoryUtilities.GetFiles(System.String,System.String,System.IO.SearchOption)">
+ <summary>
+ DirectoryUtilities.GetFiles is basicaly the same as Directory.GetFiles
+ however it returns IEnumerator, which means that it lazy. This is very important
+ for large directory trees. A searchPattern can be specified (Windows wildcard conventions)
+ that can be used to filter the set of archiveFile names returned.
+
+ Suggested Usage
+
+ foreach(string fileName in DirectoryUtilities.GetFiles("c:\", "*.txt")){
+ Console.WriteLine(fileName);
+ }
+
+ </summary>
+ <param variable="directoryPath">The base directory to enumerate</param>
+ <param variable="searchPattern">A pattern to filter the names (windows filename wildcards * ?)</param>
+ <param variable="searchOptions">Indicate if the search is recursive or not. </param>
+ <returns>The enumerator for all archiveFile names in the directory (recursively). </returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Utilities.DirectoryUtilities.GetFiles(System.String,System.String)">
+ <summary>
+ Returns a lazy enumerable for every path in 'directoryName' that matchs 'searchPattern' (default is *)MO
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Utilities.FileUtilities">
+ <summary>
+ General purpose utilities dealing with archiveFile system files.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Utilities.FileUtilities.ReadAllLines(System.String)">
+ <summary>
+ GetLines works much like File.ReadAllLines, however instead of returning a
+ array of lines, it returns a IEnumerable so that the archiveFile is not read all
+ at once. This allows 'foreach' syntax to be used on very large files.
+
+ Suggested Usage
+
+ foreach(string lineNumber in FileUtilities.GetLines("largeFile.txt")){
+ Console.WriteLine(lineNumber);
+ }
+ </summary>
+ <param variable="fileName">The base directory to enumerate.</param>
+ <returns>The enumerator for all lines in the archiveFile.</returns>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Utilities.FileUtilities.ExpandWildcards(System.String[],System.IO.SearchOption)">
+ <summary>
+ Given archiveFile specifications possibly with wildcards in them
+ Returns an enumerator that returns each expanded archiveFile name in turn.
+
+ If searchOpt is AllDirectories it does a recursive match.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Utilities.FileUtilities.ForceDelete(System.String)">
+ <summary>
+ Delete works much like File.Delete, except that it will succeed if the
+ archiveFile does not exist, and will rename the archiveFile so that even if the archiveFile
+ is locked the original archiveFile variable will be made available.
+
+ It renames the archiveFile with a '[num].deleting'. These files might be left
+ behind.
+
+ It returns true if it was completely successful. If there is a *.deleting
+ archiveFile left behind, it returns false.
+ </summary>
+ <param variable="fileName">The variable of the archiveFile to delete</param>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Utilities.FileUtilities.TryDelete(System.String)">
+ <summary>
+ Try to delete 'fileName' catching any exception. Returns true if successful. It will delete read-only files.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Utilities.FileUtilities.ForceCopy(System.String,System.String)">
+ <summary>
+ SafeCopy sourceFile to destinationFile. If the destination exists
+ used ForceDelete to get rid of it first.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Utilities.FileUtilities.ForceMove(System.String,System.String)">
+ <summary>
+ Moves sourceFile to destinationFile. If the destination exists
+ used ForceDelete to get rid of it first.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Utilities.FileUtilities.Equals(System.String,System.String)">
+ <summary>
+ Returns true if the two file have exactly the same content (as a stream of bytes).
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Utilities.PathUtil">
+ <summary>
+ Utilities associated with file name paths.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Utilities.PathUtil.PathRelativeTo(System.String,System.String)">
+ <summary>
+ Given a path and a superdirectory path relativeToDirectory compute the relative path (the path from) relativeToDirectory
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Utilities.StreamUtilities">
+ <summary>
+ General utilities associated with streams.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Utilities.StreamUtilities.CopyFromFile(System.String,System.IO.Stream)">
+ <summary>
+ Open the 'fromFilePath' and write its contents to 'toStream'
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Utilities.StreamUtilities.CopyToFile(System.IO.Stream,System.String)">
+ <summary>
+ Open the 'toFilePath' for writing and write the contents of 'fromStream' to it
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Utilities.StreamUtilities.CopyStream(System.IO.Stream,System.IO.Stream)">
+ <summary>
+ CopyStream simply copies 'fromStream' to 'toStream'
+ </summary>
+ </member>
+ <member name="T:Microsoft.Diagnostics.Utilities.XmlUtilities">
+ <summary>
+ The important thing about these general utilities is that they have only dependencies on mscorlib and
+ System (they can be used from anywhere).
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Utilities.XmlUtilities.OpenXmlElement(System.String)">
+ <summary>
+ Given an XML element, remove the closing operator for it, so you can add new child elements to it by concatination.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Utilities.XmlUtilities.XmlEscape(System.Object,System.Boolean)">
+ <summary>
+ Given an object 'obj' do ToString() on it, and then transform it so that all speical XML characters are escaped and return the result.
+ If 'quote' is true also surround the resulting object with double quotes.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Utilities.XmlUtilities.XmlQuote(System.Object)">
+ <summary>
+ A shortcut for XmlEscape(obj, true) (that is ToString the object, escape XML chars, and then surround with double quotes.
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Utilities.XmlUtilities.XmlQuote(System.Int32)">
+ <summary>
+ Create a doubly quoted string for the decimal integer value
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Utilities.XmlUtilities.XmlQuoteHex(System.UInt32)">
+ <summary>
+ Create a double quoted string for the hexidecimal value of 'value'
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Utilities.XmlUtilities.XmlQuoteHex(System.UInt64)">
+ <summary>
+ Create a double quoted string for the hexidecimal value of 'value'
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Utilities.XmlUtilities.XmlQuoteHex(System.Int32)">
+ <summary>
+ Create a double quoted string for the hexidecimal value of 'value'
+ </summary>
+ </member>
+ <member name="M:Microsoft.Diagnostics.Utilities.XmlUtilities.XmlQuoteHex(System.Int64)">
+ <summary>
+ Create a double quoted string for the hexidecimal value of 'value'
+ </summary>
+ </member>
+ <member name="T:System.Diagnostics.Tracing.ManifestEnvelope">
+ <summary>
+ Used to send the rawManifest into the event stream as a series of events.
+ </summary>
+ </member>
+ <member name="T:NativeDlls">
+ <summary>
+ Finds native DLLS next to the managed DLL that uses them.
+ </summary>
+ </member>
+ <member name="F:NativeDlls.UnknownLocation">
+ <summary>
+ ManifestModule.FullyQualifiedName returns this as file path if the assembly is loaded as byte array
+ </summary>
+ </member>
+ <member name="M:NativeDlls.LoadNative(System.String)">
+ <summary>
+ Loads a native DLL with a filename-extension of 'simpleName' by adding the path of the currently executing assembly
+
+ </summary>
+ <param name="simpleName"></param>
+ </member>
+ <member name="P:NativeDlls.ProcessArchitectureDirectory">
+ <summary>
+ Gets the name of the directory containing compiled binaries (DLLs) which have the same architecture as the
+ currently executing process.
+ </summary>
+ </member>
+ <member name="F:NativeDlls.s_ProcessArchDirectory">
+ <summary>
+ This is the backing field for the lazily-computed <see cref="P:NativeDlls.ProcessArchitectureDirectory"/> property.
+ </summary>
+ </member>
+ <member name="T:Diagnostics.Tracing.StackSources.AggregateStackSource">
+ <summary>
+ A StackSource that aggregates information from other StackSources into a single unified view.
+ </summary>
+ <remarks>
+ Each StackSource has a name associated with it. The stacks for each StackSource will be grouped under
+ a pseudo-frame named the same as the source name. Source names are specified on initialization.
+ </remarks>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.AggregateStackSource.#ctor(System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,Microsoft.Diagnostics.Tracing.Stacks.StackSource}})">
+ <summary>
+ Initialize a new AggregateStackSource.
+ </summary>
+ <param name="sources">An IEnumerable of KeyValuePairs mapping source names to StackSources.</param>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.AggregateStackSource.ForEach(System.Action{Microsoft.Diagnostics.Tracing.Stacks.StackSourceSample})">
+ <summary>
+ Enumerate samples with a callback function.
+ </summary>
+ <param name="callback">The function to call on each sample.</param>
+ </member>
+ <member name="P:Diagnostics.Tracing.StackSources.AggregateStackSource.SamplesImmutable">
+ <summary>
+ override
+ </summary>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.AggregateStackSource.ForEach(System.Action{Microsoft.Diagnostics.Tracing.Stacks.StackSourceSample},System.Boolean[])">
+ <summary>
+ Enumerate samples for a given set of scenarios with a callback function.
+ </summary>
+ <param name="callback">The function to call on each sample.</param>
+ <param name="scenariosIncluded">An array of length ScenarioCount. If scenariosIncluded[i] == true, include scenario i.</param>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.AggregateStackSource.ParallelForEach(System.Action{Microsoft.Diagnostics.Tracing.Stacks.StackSourceSample},System.Boolean[],System.Int32)">
+ <summary>
+ Override
+ </summary>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.AggregateStackSource.GetSampleByIndex(Microsoft.Diagnostics.Tracing.Stacks.StackSourceSampleIndex)">
+ <summary>
+ Look up a sample by index.
+ </summary>
+ <param name="sampleIndex">The index of the sample to look up.</param>
+ <returns>
+ The sample, if it can be found and all sub-sources support indexing; null otherwise.
+ </returns>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.AggregateStackSource.GetCallerIndex(Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex)">
+ <summary>
+ Gets the index of the caller of a given call stack.
+ </summary>
+ <param name="callStackIndex">The call stack to look up.</param>
+ <returns>The caller, if it exists, <see cref="F:Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex.Invalid"/> otherwise.</returns>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.AggregateStackSource.GetFrameIndex(Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex)">
+ <summary>
+ Get the frame index of a given call stack.
+ </summary>
+ <param name="callStackIndex">The call stack to look up.</param>
+ <returns>The frame index of the call stack, if it exists, <see cref="F:Microsoft.Diagnostics.Tracing.Stacks.StackSourceFrameIndex.Invalid"/> otherwise.</returns>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.AggregateStackSource.GetFrameName(Microsoft.Diagnostics.Tracing.Stacks.StackSourceFrameIndex,System.Boolean)">
+ <summary>
+ Gets the name of a frame.
+ </summary>
+ <param name="frameIndex">The frame to look up.</param>
+ <param name="verboseName">Whether to include full module paths.</param>
+ <returns>The name of the frame.</returns>
+ </member>
+ <member name="P:Diagnostics.Tracing.StackSources.AggregateStackSource.CallStackIndexLimit">
+ <summary>
+ The total number of call stacks in this source.
+ </summary>
+ </member>
+ <member name="P:Diagnostics.Tracing.StackSources.AggregateStackSource.CallFrameIndexLimit">
+ <summary>
+ The total number of frames in this source.
+ </summary>
+ </member>
+ <member name="P:Diagnostics.Tracing.StackSources.AggregateStackSource.SampleIndexLimit">
+ <summary>
+ The total number of samples in this source.
+ </summary>
+ </member>
+ <member name="P:Diagnostics.Tracing.StackSources.AggregateStackSource.ScenarioNames">
+ <summary>
+ The names for the scenarios.
+ </summary>
+ </member>
+ <member name="P:Diagnostics.Tracing.StackSources.AggregateStackSource.SampleTimeRelativeMSecLimit">
+ <summary>
+ override
+ </summary>
+ </member>
+ <member name="P:Diagnostics.Tracing.StackSources.AggregateStackSource.ScenarioCount">
+ <summary>
+ override
+ </summary>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.AggregateStackSource.ConvertSample(Microsoft.Diagnostics.Tracing.Stacks.StackSourceSample,Microsoft.Diagnostics.Tracing.Stacks.StackSourceSample,System.Int32)">
+ <summary>
+ Convert a StackSourceSample produced by a sub-source into one suitable for the aggregate source.
+ </summary>
+ <param name="input">The StackSourceSample to convert.</param>
+ <param name="storage">A place to but the returned sampled (will become the return value).</param>
+ <param name="sourceIdx">The index of the source from which the sample came.</param>
+ <returns>The converted sample.</returns>
+ <remarks>
+ If ConvertSample is called again, all previous samples produced by ConvertSample may no longer be used.
+ </remarks>
+ </member>
+ <member name="F:Diagnostics.Tracing.StackSources.AggregateStackSource.m_sourceNames">
+ <summary>
+ Friendly names of sources.
+ </summary>
+ <remarks>
+ Name 0 is the name of the pseudo-source, which should not be used.
+ </remarks>
+ </member>
+ <member name="F:Diagnostics.Tracing.StackSources.AggregateStackSource.m_sources">
+ <summary>
+ The list of sources.
+ </summary>
+ <remarks>
+ Source 0 is the pseudo-source (identical to m_pseudo).
+ </remarks>
+ </member>
+ <member name="F:Diagnostics.Tracing.StackSources.AggregateStackSource.m_firstSampleTime">
+ <summary>
+ THis is the time of the first sample. It lets us normalize the time in the sample to be relative to this.
+ </summary>
+ </member>
+ <member name="T:Diagnostics.Tracing.StackSources.AggregateStackSource.PseudoStackSource">
+ <summary>
+ A StackSource to generate the pseudo-frames needed to group scenarios.
+ </summary>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.AggregateStackSource.PseudoStackSource.#ctor(System.String[])">
+ <summary>
+ Initialize a new PseudoStackSource.
+ </summary>
+ <param name="names">The names of the frames.</param>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.AggregateStackSource.PseudoStackSource.GetStackForSource(System.Int32)">
+ <summary>
+ Gets the CallStackIndex of the call stack corresponding to a given source.
+ </summary>
+ <param name="sourceIdx">The index of the source to look up.</param>
+ <returns>The StackSourceCallStackIndex of a stack under which to group all call stacks for that source.</returns>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.AggregateStackSource.PseudoStackSource.GetCallerIndex(Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex)">
+ <summary>
+ Gets the index of the caller of a given call stack.
+ </summary>
+ <param name="callStackIndex">The call stack to look up.</param>
+ <returns>The caller, if it exists, <see cref="F:Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex.Invalid"/> otherwise.</returns>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.AggregateStackSource.PseudoStackSource.GetFrameIndex(Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex)">
+ <summary>
+ Get the frame index of a given call stack.
+ </summary>
+ <param name="callStackIndex">The call stack to look up.</param>
+ <returns>The frame index of the call stack, if it exists, <see cref="F:Microsoft.Diagnostics.Tracing.Stacks.StackSourceFrameIndex.Invalid"/> otherwise.</returns>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.AggregateStackSource.PseudoStackSource.GetFrameName(Microsoft.Diagnostics.Tracing.Stacks.StackSourceFrameIndex,System.Boolean)">
+ <summary>
+ Gets the name of a frame.
+ </summary>
+ <param name="frameIndex">The frame to look up.</param>
+ <param name="verboseName">Whether to include full module paths.</param>
+ <returns>The name of the frame.</returns>
+ </member>
+ <member name="P:Diagnostics.Tracing.StackSources.AggregateStackSource.PseudoStackSource.CallStackIndexLimit">
+ <summary>
+ The total number of call stacks in this source.
+ </summary>
+ </member>
+ <member name="P:Diagnostics.Tracing.StackSources.AggregateStackSource.PseudoStackSource.CallFrameIndexLimit">
+ <summary>
+ The total number of frames in this source.
+ </summary>
+ </member>
+ <member name="F:Diagnostics.Tracing.StackSources.AggregateStackSource.PseudoStackSource.names">
+ <summary>
+ The names of the frames that this source generates.
+ </summary>
+ </member>
+ <member name="T:Diagnostics.Tracing.StackSources.IndexMapExtensions">
+ <summary>
+ Extension methods for type-safe IndexMap operations on StackSource*Index enums.
+ </summary>
+ </member>
+ <member name="T:Diagnostics.Tracing.StackSources.FilterParams">
+ <summary>
+ This is just a class that holds data. It does nothing except support an 'update' events
+ </summary>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.FilterParams.#ctor">
+ <summary>
+ Constructs a Filter parameter class with all empty properties.
+ </summary>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.FilterParams.#ctor(Diagnostics.Tracing.StackSources.FilterParams)">
+ <summary>
+ Create a Filter Parameters Structure form another one
+ </summary>
+ <param name="other"></param>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.FilterParams.Set(Diagnostics.Tracing.StackSources.FilterParams)">
+ <summary>
+ Set a Filter Parameters Structure form another one
+ </summary>
+ </member>
+ <member name="P:Diagnostics.Tracing.StackSources.FilterParams.Name">
+ <summary>
+ Fetch Name
+ </summary>
+ </member>
+ <member name="P:Diagnostics.Tracing.StackSources.FilterParams.StartTimeRelativeMSec">
+ <summary>
+ Fetch StartTimeRelativeMSec
+ </summary>
+ </member>
+ <member name="P:Diagnostics.Tracing.StackSources.FilterParams.EndTimeRelativeMSec">
+ <summary>
+ Fetch EndTimeRelativeMSec
+ </summary>
+ </member>
+ <member name="P:Diagnostics.Tracing.StackSources.FilterParams.MinInclusiveTimePercent">
+ <summary>
+ Fetch MinInclusiveTimePercent
+ </summary>
+ </member>
+ <member name="P:Diagnostics.Tracing.StackSources.FilterParams.FoldRegExs">
+ <summary>
+ Fetch FoldRegExs
+ </summary>
+ </member>
+ <member name="P:Diagnostics.Tracing.StackSources.FilterParams.IncludeRegExs">
+ <summary>
+ Fetch IncludeRegExs
+ </summary>
+ </member>
+ <member name="P:Diagnostics.Tracing.StackSources.FilterParams.ExcludeRegExs">
+ <summary>
+ Fetch ExcludeRegExs
+ </summary>
+ </member>
+ <member name="P:Diagnostics.Tracing.StackSources.FilterParams.GroupRegExs">
+ <summary>
+ Fetch GroupRegExs
+ </summary>
+ </member>
+ <member name="P:Diagnostics.Tracing.StackSources.FilterParams.TypePriority">
+ <summary>
+ Fetch TypePriority
+ </summary>
+ </member>
+ <member name="P:Diagnostics.Tracing.StackSources.FilterParams.ScenarioList">
+ <summary>
+ Fetch ScenarioList
+ </summary>
+ </member>
+ <member name="P:Diagnostics.Tracing.StackSources.FilterParams.Scenarios">
+ <summary>
+ Fetch Scenarios
+ </summary>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.FilterParams.Equals(System.Object)">
+ <summary>
+ override
+ </summary>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.FilterParams.GetHashCode">
+ <summary>
+ override
+ </summary>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.FilterParams.EscapeRegEx(System.String)">
+ <summary>
+ TODO Document
+ </summary>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.FilterParams.WriteToXml(System.Xml.XmlWriter)">
+ <summary>
+ Write out the FilterParameters to XML 'writer'
+ </summary>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.FilterParams.ToXml">
+ <summary>
+ Create an XML representation of FilterParams as a string
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="T:Diagnostics.Tracing.StackSources.FilterStackSource">
+ <summary>
+ A FilterStackSouce morphs one stack filters or groups the stacks of one stack source to form a new
+ stack source. It is very powerful mechanism.
+ </summary>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.FilterStackSource.#ctor(Diagnostics.Tracing.StackSources.FilterParams,Microsoft.Diagnostics.Tracing.Stacks.StackSource,Microsoft.Diagnostics.Tracing.Stacks.ScalingPolicyKind)">
+ <summary>
+ Create a new FilterStackSource.
+ </summary>
+ <param name="filterParams">Specifies how to filter or group the stacks</param>
+ <param name="stackSource">The input source to morph</param>
+ <param name="scalingPolicy">How to scale the data (as time or simply by size of data)</param>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.FilterStackSource.ForEach(System.Action{Microsoft.Diagnostics.Tracing.Stacks.StackSourceSample})">
+ <summary>
+ Override
+ </summary>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.FilterStackSource.GetCallerIndex(Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex)">
+ <summary>
+ Override
+ </summary>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.FilterStackSource.GetNumberOfFoldedFrames(Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex)">
+ <summary>
+ override
+ </summary>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.FilterStackSource.GetFrameIndex(Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex)">
+ <summary>
+ Override
+ </summary>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.FilterStackSource.GetFrameName(Microsoft.Diagnostics.Tracing.Stacks.StackSourceFrameIndex,System.Boolean)">
+ <summary>
+ Override
+ </summary>
+ </member>
+ <member name="P:Diagnostics.Tracing.StackSources.FilterStackSource.SampleTimeRelativeMSecLimit">
+ <summary>
+ Override
+ </summary>
+ </member>
+ <member name="P:Diagnostics.Tracing.StackSources.FilterStackSource.ScenarioCount">
+ <summary>
+ Override
+ </summary>
+ </member>
+ <member name="P:Diagnostics.Tracing.StackSources.FilterStackSource.CallStackIndexLimit">
+ <summary>
+ Override
+ </summary>
+ </member>
+ <member name="P:Diagnostics.Tracing.StackSources.FilterStackSource.CallFrameIndexLimit">
+ <summary>
+ Override
+ </summary>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.FilterStackSource.GetSampleByIndex(Microsoft.Diagnostics.Tracing.Stacks.StackSourceSampleIndex)">
+ <summary>
+ Override
+ </summary>
+ </member>
+ <member name="P:Diagnostics.Tracing.StackSources.FilterStackSource.BaseStackSource">
+ <summary>
+ Override
+ </summary>
+ </member>
+ <member name="P:Diagnostics.Tracing.StackSources.FilterStackSource.IsGraphSource">
+ <summary>
+ Override
+ </summary>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.FilterStackSource.GetReferences(Microsoft.Diagnostics.Tracing.Stacks.StackSourceSampleIndex,Microsoft.Diagnostics.Tracing.Stacks.RefDirection,System.Action{Microsoft.Diagnostics.Tracing.Stacks.StackSourceSampleIndex})">
+ <summary>
+ Override
+ </summary>
+ </member>
+ <member name="P:Diagnostics.Tracing.StackSources.FilterStackSource.SampleIndexLimit">
+ <summary>
+ Override
+ </summary>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.FilterStackSource.GetStackInfo(Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex,Microsoft.Diagnostics.Tracing.Stacks.RecursionGuard)">
+ <summary>
+ Associated with every frame is a FrameInfo which is the computed answers associated with that frame name.
+ We cache these and so most of the time looking up frame information is just an array lookup.
+
+ FrameInfo contains information that is ONLY dependent on the frame name (not the stack it came from), so
+ entry point groups and include patterns can not be completely processed at this point. Never returns null.
+ </summary>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.FilterStackSource.GenerateStackInfo(Microsoft.Diagnostics.Tracing.Stacks.StackSourceCallStackIndex,Diagnostics.Tracing.StackSources.FilterStackSource.StackInfo,Microsoft.Diagnostics.Tracing.Stacks.RecursionGuard)">
+ <summary>
+ Generate the stack information for 'stack' and place it in stackInfoRet. Only called by GetStackInfo.
+ </summary>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.FilterStackSource.GetFrameInfo(Microsoft.Diagnostics.Tracing.Stacks.StackSourceFrameIndex)">
+ <summary>
+ Returns the frame information for frameIndex. Never returns null.
+ </summary>
+ </member>
+ <member name="T:Diagnostics.Tracing.StackSources.FilterStackSource.GroupPattern">
+ <summary>
+ This is just the parsed form of a grouping specification Pat->GroupNameTemplate (it has a pattern regular
+ expression and a group name that can have replacements) It is a trivial class
+ </summary>
+ </member>
+ <member name="F:Diagnostics.Tracing.StackSources.FilterStackSource.GroupPattern.IsModuleEntry">
+ <summary>
+ Experimentally we are going to special case the module entry pattern.
+ </summary>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.FilterStackSource.ParseGroups(System.String)">
+ <summary>
+ Parses a string into the GroupPattern structure that allows it to executed (matched).
+ </summary>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.FilterStackSource.FindGroupNameFromFrameName(System.String,System.Boolean@)">
+ <summary>
+ Given the name of a frame, look it up in the group patterns and morph it to its group name.
+ If the group that matches is a entryGroup then set 'isEntryGroup'. Will return null if
+ no group matches 'frameName'
+ </summary>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.FilterStackSource.ParseRegExList(System.String)">
+ <summary>
+ Holds parsed information about patterns for groups includes, excludes or folds.
+ </summary>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.FilterStackSource.IsMatch(System.Text.RegularExpressions.Regex[],System.String)">
+ <summary>
+ Returns the index in the 'pats' array of the first pattern that matches 'str'. Returns -1 if no match.
+ </summary>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.FilterStackSource.SameSet(System.Int32[],System.Int32[])">
+ <summary>
+ returns true if set1 and set1 (as returned from MatchSet) are identical
+ </summary>
+ </member>
+ <member name="M:Diagnostics.Tracing.StackSources.FilterStackSource.ToDotNetRegEx(System.String)">
+ <summary>
+ Convert a string from my regular expression format (where you only have * and { } as grouping operators
+ and convert them to .NET regular expressions string
+ </summary>
+ </member>
+ <member name="T:Diagnostics.Tracing.StackSources.FilterStackSource.FrameInfo">
+ <summary>
+ FrameInfo is all the information we need to associate with an Frame ID (to figure out what group/pattern it belongs to)
+ This includes what group it belongs to, the include patterns it matches whether to discard or fold it. It is
+ all the processing we can do with JUST the frame ID.
+
+ Note that FrameInfo is reused by multiple stacks, which means that you should NOT update fields in it after initial creation.
+ </summary>
+ </member>
+ <member name="F:Diagnostics.Tracing.StackSources.FilterStackSource.FrameInfo.GroupID">
+ <summary>
+ This is what we return to the Stack crawler, it encodes either that we should filter the sample,
+ fold the frame, form a group, or the frameID that we have chosen to represent the group as a whole.
+ </summary>
+ </member>
+ <member name="T:Diagnostics.Tracing.StackSources.FilterStackSource.StackInfo">
+ <summary>
+ Represents all accumulated information about grouping for a particular stack. Effectively this is the
+ 'result' of applying the grouping and filtering to a particular stack. We cache the last 100 or so
+ of these because stacks tend to reuse the parts of the stack close the root.
+ </summary>
+ </member>
+ <member name="F:Diagnostics.Tracing.StackSources.FilterStackSource.StackInfo.IncPathsMatchedSoFar">
+ <summary>
+ The include patterns that have been matched by some frame in this stack. (ultimately we need all bits set).
+ Can be null, which means the empty set.
+ </summary>
+ </member>
+ <member name="F:Diagnostics.Tracing.StackSources.FilterStackSource.MatchesNothing">
+ <summary>
+ Represents a frame that does not match any pattern. Thus the default of simply returning the frame ID is appropriate
+ </summary>
+ </member>
+ <member name="F:Diagnostics.Tracing.StackSources.FilterStackSource.Discard">
+ <summary>
+ Represents a frame that should be discarded.
+ </summary>
+ </member>
+ <member name="F:Diagnostics.Tracing.StackSources.FilterStackSource.Fold">
+ <summary>
+ Represents a frame that should be folded into its caller.
+ </summary>
+ </member>
+ <member name="F:Diagnostics.Tracing.StackSources.FilterStackSource.StackInfoCacheSize">
+ <summary>
+ We cache information about stacks we have previously seen so we can short-circuit work.
+ TODO make dynamic.
+
+ Note when this value is 4096 some memory profiles are VERY sluggish. Don't make it too
+ small unless it is adaptive.
+ </summary>
+ </member>
+ <member name="T:Utilities.IndexMap">
+ <summary>
+ A class that maps contiguous indices from various sources from and to a single range of contiguous indices.
+ </summary>
+ <remarks>
+ This is useful for aggregating indices used, for instance, in the interface for StackSource (StackSourceCallStackIndex /
+ StackSourceFrameIndex) in AggregateStackSource. This is an easy way, given the incoming StackSource*Index, to find the
+ aggregated source to query, and the corresponding StackSource*Index to send to the source.
+ </remarks>
+ <example>
+ With counts [3, 7, 5]:
+ 1 1 1 1 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 = Incoming index
+ __0__ ______1______ ____2____ = Source number
+ 0 1 2|0 1 2 3 4 5 6|0 1 2 3 4 = Offset
+ </example>
+ </member>
+ <member name="M:Utilities.IndexMap.#ctor(System.Collections.Generic.IEnumerable{System.Int32})">
+ <summary>
+ Initialize a new IndexMap with the specified counts.
+ </summary>
+ <param name="counts">A list mapping an index to its corresponding count.</param>
+ </member>
+ <member name="M:Utilities.IndexMap.SourceOf(System.Int32)">
+ <summary>
+ Find the source for an index.
+ </summary>
+ <param name="aggregate">The aggregate index to look up.</param>
+ <returns>The source that <paramref name="aggregate"/> belongs to.</returns>
+ </member>
+ <member name="M:Utilities.IndexMap.OffsetOf(System.Int32,System.Int32)">
+ <summary>
+ Find the offset into a given source of a given aggregate index.
+ </summary>
+ <param name="aggregate">The aggregate index to look up.</param>
+ <param name="source">The source to find the offset into.</param>
+ <returns>The offset of <paramref name="aggregate"/> into <paramref name="source"/>.</returns>
+ </member>
+ <member name="M:Utilities.IndexMap.IndexOf(System.Int32,System.Int32)">
+ <summary>
+ Finds the index for a given source/offset pair.
+ </summary>
+ <param name="source">The source number of the item.</param>
+ <param name="offset">The offset into the corresponding source for the item.</param>
+ <returns>The index corresponding to the pair of <paramref name="source"/> and <paramref name="offset"/>.</returns>
+ </member>
+ <member name="P:Utilities.IndexMap.Count">
+ <summary>
+ The total number of indices in the map.
+ </summary>
+ </member>
+ <member name="F:Utilities.IndexMap.m_lookup">
+ <summary>
+ The lookup table to convert indices to source/offset pairs.
+ </summary>
+ <remarks>
+ This contains the cumulative count of indices that occurred before each source.
+ The last element is the total number of indices (equal to m_range).
+ </remarks>
+ </member>
+ <member name="F:Utilities.IndexMap.m_range">
+ <summary>
+ The total number of indices in the map.
+ </summary>
+ </member>
+ <member name="F:Utilities.IndexMap.m_lastSourceLookedUp">
+ <summary>
+ We remember the last source we looked up and check there first very likely they are next to one another.
+ </summary>
+ </member>
+ <member name="T:Utilities.Cache`2">
+ <summary>
+ A finite cache based with a least recently used algorithm for replacement.
+ It is meant to be fast (fast as a hashtable), and space efficient (not much
+ over the MaxEntry key-value pairs are stored. (only 8 bytes per entry additional).
+
+ After reaching MaxEntry entries. It uses a roughly least-recently used
+ algorithm to pick a entry to recycle. To stay efficient it only searches
+ a finite time (up to 5 entries) for a entry that is older than 1/2 of the
+ entries in the table.
+
+ It has the property that if you are in the maxEntries/2 most commonly fetched
+ things, you very unlikely to be evicted once you are in the cache.
+ </summary>
+ </member>
+ <member name="M:Utilities.Cache`2.#ctor(System.Int32)">
+ <summary>
+ maxEntries currently is only set in the constructor. Thus this is a finite sized cache
+ but is otherwise very efficient. Currently it uses ushorts internally so the number
+ of entries is limited to 64K (it silently limits it if you give maxEntries > 64K).
+ </summary>
+ <param name="maxEntries"></param>
+ </member>
+ <member name="M:Utilities.Cache`2.Get(`0)">
+ <summary>
+ Fetches the value from the cache with key 'key'. Returns default(T) if not present
+ </summary>
+ </member>
+ <member name="M:Utilities.Cache`2.TryGet(`0,`1@)">
+ <summary>
+ Fetches the value from the cache with key 'key'. Returns false if not present.
+ </summary>
+ </member>
+ <member name="M:Utilities.Cache`2.Add(`0,`1)">
+ <summary>
+ Adds 'key' with value 'value' to the cache.
+ </summary>
+ </member>
+ <member name="M:Utilities.Cache`2.Clear">
+ <summary>
+ Removes all entries in the cache.
+ </summary>
+ </member>
+ <member name="P:Utilities.Cache`2.MaxEntries">
+ <summary>
+ Sets the maxiumum number of key-value pairs the cache will keep. (after that old ones are remvoed).
+ </summary>
+ </member>
+ <member name="F:Utilities.Cache`2.End">
+ <summary>
+ Represents a null pointer (end of a linked list)
+ </summary>
+ </member>
+ <member name="T:Utilities.CommandOptions">
+ <summary>
+ CommandOptions is a helper class for the Command class. It stores options
+ that affect the behavior of the execution of ETWCommands and is passes as a
+ parameter to the constructor of a Command.
+
+ It is useful for these options be be on a separate class (rather than
+ on Command itself), because it is reasonably common to want to have a set
+ of options passed to several commands, which is not easily possible otherwise.
+ </summary>
+ </member>
+ <member name="F:Utilities.CommandOptions.Infinite">
+ <summary>
+ Can be assigned to the Timeout Property to indicate infinite timeout.
+ </summary>
+ </member>
+ <member name="M:Utilities.CommandOptions.#ctor">
+ <summary>
+ CommanOptions holds a set of options that can be passed to the constructor
+ to the Command Class as well as Command.Run*
+ </summary>
+ </member>
+ <member name="M:Utilities.CommandOptions.Clone">
+ <summary>
+ Return a copy an existing set of command options
+ </summary>
+ <returns>The copy of the command options</returns>
+ </member>
+ <member name="P:Utilities.CommandOptions.NoThrow">
+ <summary>
+ Normally commands will throw if the subprocess returns a non-zero
+ exit code. NoThrow suppresses this.
+ </summary>
+ </member>
+ <member name="M:Utilities.CommandOptions.AddNoThrow">
+ <summary>
+ Updates the NoThrow propery and returns the updated commandOptions.
+ <returns>Updated command options</returns>
+ </summary>
+ </member>
+ <member name="P:Utilities.CommandOptions.Start">
+ <summary>
+ ShortHand for UseShellExecute and NoWait
+ </summary>
+ </member>
+ <member name="M:Utilities.CommandOptions.AddStart">
+ <summary>
+ Updates the Start propery and returns the updated commandOptions.
+ </summary>
+ </member>
+ <member name="P:Utilities.CommandOptions.UseShellExecute">
+ <summary>
+ Normally commands are launched with CreateProcess. However it is
+ also possible use the Shell Start API. This causes Command to look
+ up the executable differently
+ </summary>
+ </member>
+ <member name="M:Utilities.CommandOptions.AddUseShellExecute">
+ <summary>
+ Updates the Start propery and returns the updated commandOptions.
+ </summary>
+ </member>
+ <member name="P:Utilities.CommandOptions.NoWindow">
+ <summary>
+ Indicates that you want to hide any new window created.
+ </summary>
+ </member>
+ <member name="M:Utilities.CommandOptions.AddNoWindow">
+ <summary>
+ Updates the NoWindow propery and returns the updated commandOptions.
+ </summary>
+ </member>
+ <member name="P:Utilities.CommandOptions.NoWait">
+ <summary>
+ Indicates that you want don't want to wait for the command to complete.
+ </summary>
+ </member>
+ <member name="M:Utilities.CommandOptions.AddNoWait">
+ <summary>
+ Updates the NoWait propery and returns the updated commandOptions.
+ </summary>
+ </member>
+ <member name="P:Utilities.CommandOptions.Elevate">
+ <summary>
+ Indicates that the command must run at elevated Windows privledges (causes a new command window)
+ </summary>
+ </member>
+ <member name="M:Utilities.CommandOptions.AddElevate">
+ <summary>
+ Updates the Elevate propery and returns the updated commandOptions.
+ </summary>
+ </member>
+ <member name="P:Utilities.CommandOptions.Timeout">
+ <summary>
+ By default commands have a 10 minute timeout (600,000 msec), If this
+ is inappropriate, the Timeout property can change this. Like all
+ timouts in .NET, it is in units of milliseconds, and you can use
+ CommandOptions.Infinite to indicate no timeout.
+ </summary>
+ </member>
+ <member name="M:Utilities.CommandOptions.AddTimeout(System.Int32)">
+ <summary>
+ Updates the Timeout propery and returns the updated commandOptions.
+ CommandOptions.Infinite can be used for infinite
+ </summary>
+ </member>
+ <member name="P:Utilities.CommandOptions.Input">
+ <summary>
+ Indicates the string will be sent to Console.In for the subprocess.
+ </summary>
+ </member>
+ <member name="M:Utilities.CommandOptions.AddInput(System.String)">
+ <summary>
+ Updates the Input propery and returns the updated commandOptions.
+ </summary>
+ </member>
+ <member name="P:Utilities.CommandOptions.CurrentDirectory">
+ <summary>
+ Indicates the current directory the subProcess will have.
+ </summary>
+ </member>
+ <member name="M:Utilities.CommandOptions.AddCurrentDirectory(System.String)">
+ <summary>
+ Updates the CurrentDirectory propery and returns the updated commandOptions.
+ </summary>
+ </member>
+ <member name="P:Utilities.CommandOptions.OutputFile">
+ <summary>
+ Indicates the standard output and error of the command should be redirected
+ to a archiveFile rather than being stored in Memory in the 'Output' property of the
+ command.
+ </summary>
+ </member>
+ <member name="M:Utilities.CommandOptions.AddOutputFile(System.String)">
+ <summary>
+ Updates the OutputFile propery and returns the updated commandOptions.
+ </summary>
+ </member>
+ <member name="P:Utilities.CommandOptions.OutputStream">
+ <summary>
+ Indicates the standard output and error of the command should be redirected
+ to a a TextWriter rather than being stored in Memory in the 'Output' property
+ of the command.
+ </summary>
+ </member>
+ <member name="M:Utilities.CommandOptions.AddOutputStream(System.IO.TextWriter)">
+ <summary>
+ Updates the OutputStream property and returns the updated commandOptions.
+ </summary>
+ </member>
+ <member name="P:Utilities.CommandOptions.EnvironmentVariables">
+ <summary>
+ Gets the Environment variables that will be set in the subprocess that
+ differ from current process's environment variables. Any time a string
+ of the form %VAR% is found in a value of a environment variable it is
+ replaced with the value of the environment variable at the time the
+ command is launched. This is useful for example to update the PATH
+ environment variable eg. "%PATH%;someNewPath"
+ </summary>
+ </member>
+ <member name="M:Utilities.CommandOptions.AddEnvironmentVariable(System.String,System.String)">
+ <summary>
+ Adds the environment variable with the give value to the set of
+ environmetn variables to be passed to the sub-process and returns the
+ updated commandOptions. Any time a string
+ of the form %VAR% is found in a value of a environment variable it is
+ replaced with the value of the environment variable at the time the
+ command is launched. This is useful for example to update the PATH
+ environment variable eg. "%PATH%;someNewPath"
+ </summary>
+ </member>
+ <member name="T:Utilities.Command">
+ <summary>
+ Command represents a running of a command lineNumber process. It is basically
+ a wrapper over System.Diagnostics.Process, which hides the complexitity
+ of System.Diagnostics.Process, and knows how to capture output and otherwise
+ makes calling commands very easy.
+ </summary>
+ </member>
+ <member name="P:Utilities.Command.StartTime">
+ <summary>
+ The time the process started.
+ </summary>
+ </member>
+ <member name="P:Utilities.Command.HasExited">
+ <summary>
+ Returns true if the process has exited.
+ </summary>
+ </member>
+ <member name="P:Utilities.Command.ExitTime">
+ <summary>
+ The time the processed Exited. (HasExited should be true before calling)
+ </summary>
+ </member>
+ <member name="P:Utilities.Command.Duration">
+ <summary>
+ The duration of the command (HasExited should be true before calling)
+ </summary>
+ </member>
+ <member name="P:Utilities.Command.Id">
+ <summary>
+ The operating system ID for the subprocess.
+ </summary>
+ </member>
+ <member name="P:Utilities.Command.ExitCode">
+ <summary>
+ The process exit code for the subprocess. (HasExited should be true before calling)
+ Often this does not need to be checked because Command.Run will throw an exception
+ if it is not zero. However it is useful if the CommandOptions.NoThrow property
+ was set.
+ </summary>
+ </member>
+ <member name="P:Utilities.Command.Output">
+ <summary>
+ The standard output and standard error output from the command. This
+ is accumulated in real time so it can vary if the process is still running.
+
+ This property is NOT available if the CommandOptions.OutputFile or CommandOptions.OutputStream
+ is specified since the output is being redirected there. If a large amount of output is
+ expected (> 1Meg), the Run.AddOutputStream(Stream) is recommended for retrieving it since
+ the large string is never materialized at one time.
+ </summary>
+ </member>
+ <member name="P:Utilities.Command.Options">
+ <summary>
+ Returns that CommandOptions structure that holds all the options that affect
+ the running of the command (like Timeout, Input ...)
+ </summary>
+ </member>
+ <member name="M:Utilities.Command.RunToConsole(System.String,Utilities.CommandOptions)">
+ <summary>
+ Run 'commandLine', sending the output to the console, and wait for the command to complete.
+ This simulates what batch filedo when executing their commands. It is a bit more verbose
+ by default, however
+ </summary>
+ <param variable="commandLine">The command lineNumber to run as a subprocess</param>
+ <param variable="options">Additional qualifiers that control how the process is run</param>
+ <returns>A Command structure that can be queried to determine ExitCode, Output, etc.</returns>
+ </member>
+ <member name="M:Utilities.Command.Run(System.String,Utilities.CommandOptions)">
+ <summary>
+ Run 'commandLine' as a subprocess and waits for the command to complete.
+ Output is captured and placed in the 'Output' property of the returned Command
+ structure.
+ </summary>
+ <param variable="commandLine">The command lineNumber to run as a subprocess</param>
+ <param variable="options">Additional qualifiers that control how the process is run</param>
+ <returns>A Command structure that can be queried to determine ExitCode, Output, etc.</returns>
+ </member>
+ <member name="M:Utilities.Command.#ctor(System.String,Utilities.CommandOptions)">
+ <summary>
+ Launch a new command and returns the Command object that can be used to monitor
+ the restult. It does not wait for the command to complete, however you
+ can call 'Wait' to do that, or use the 'Run' or 'RunToConsole' methods. */
+ </summary>
+ <param variable="commandLine">The command lineNumber to run as a subprocess</param>
+ <param variable="options">Additional qualifiers that control how the process is run</param>
+ <returns>A Command structure that can be queried to determine ExitCode, Output, etc.</returns>
+ </member>
+ <member name="M:Utilities.Command.#ctor(System.String)">
+ <summary>
+ Create a subprocess to run 'commandLine' with no special options.
+ <param variable="commandLine">The command lineNumber to run as a subprocess</param>
+ </summary>
+ </member>
+ <member name="M:Utilities.Command.Wait">
+ <summary>
+ Wait for a started process to complete (HasExited will be true on return)
+ </summary>
+ <returns>Wait returns that 'this' pointer.</returns>
+ </member>
+ <member name="M:Utilities.Command.ThrowCommandFailure(System.String)">
+ <summary>
+ Throw a error if the command exited with a non-zero exit code
+ printing useful diagnostic information along with the thrown message.
+ This is useful when NoThrow is specified, and after post-processing
+ you determine that the command really did fail, and an normal
+ Command.Run failure was the appropriate action.
+ </summary>
+ <param name="message">An additional message to print in the throw (can be null)</param>
+ </member>
+ <member name="P:Utilities.Command.Process">
+ <summary>
+ Get the underlying process object. Generally not used.
+ </summary>
+ </member>
+ <member name="M:Utilities.Command.Kill">
+ <summary>
+ Kill the process (and any child processses (recursively) associated with the
+ running command). Note that it may not be able to kill everything it should
+ if the child-parent' chain is broken by a child that creates a subprocess and
+ then dies itself. This is reasonably uncommon, however.
+ </summary>
+ </member>
+ <member name="M:Utilities.Command.Quote(System.String)">
+ <summary>
+ Put double quotes around 'str' if necessary (handles quotes quotes.
+ </summary>
+ </member>
+ <member name="M:Utilities.Command.FindOnPath(System.String)">
+ <summary>
+ Given a string 'commandExe' look for it on the path the way cmd.exe would.
+ Returns null if it was not found.
+ </summary>
+ </member>
+ <member name="T:Utilities.OperatingSystemVersion.RTL_OSVERSIONINFOEX">
+ <summary>
+ requiredOSVersion is a number that is the major version * 10 + minor. Thus
+ Win 10 == 100
+ Win 8 == 62
+ Win 7 == 61
+ Vista == 60
+ This returns true if true OS version is >= 'requiredOSVersion
+ </summary>
+ </member>
+ <member name="T:Dia2Lib.DiaLoader">
+ <summary>
+ The DiaLoader class knows how to load the msdia140.dll (the Debug Access Interface) (see docs at
+ http://msdn.microsoft.com/en-us/library/x93ctkx8.aspx), without it being registered as a COM object.
+ Basically it just called the DllGetClassObject interface directly.
+
+ It has one public method 'GetDiaSourceObject' which knows how to create a IDiaDataSource object.
+ From there you can do anything you need.
+
+ In order to get IDiaDataSource3 which includes'getStreamSize' API, you need to use the
+ vctools\langapi\idl\dia2_internal.idl file from devdiv to produce Dia2Lib.dll
+
+ roughly what you need to do is
+ copy vctools\langapi\idl\dia2_internal.idl .
+ copy vctools\langapi\idl\dia2.idl .
+ copy vctools\langapi\include\cvconst.h .
+ Change dia2.idl to include interface IDiaDataSource3 inside library Dia2Lib->importlib->coclass DiaSource
+ midl dia2_internal.idl /D CC_DP_CXX
+ tlbimp dia2_internal.tlb
+ REM result is Dia2Lib.dll
+ </summary>
+ </member>
+ <member name="M:Dia2Lib.DiaLoader.GetDiaSourceObject">
+ <summary>
+ Load the msdia100 dll and get a IDiaDataSource from it. This is your gateway to PDB reading.
+ </summary>
+ </member>
+ <member name="F:Dia2Lib.DiaLoader.s_loadedNativeDll">
+ <summary>
+ Used to ensure the native library is loaded at least once prior to trying to use it. No protection is
+ included to avoid multiple loads, but this is not a problem since we aren't trying to unload the library
+ after use.
+ </summary>
+ </member>
+ <member name="T:PEFile.PEFile">
+ <summary>
+ PEFile is a reader for the information in a Portable Exectable (PE) FILE. This is what EXEs and DLLs are.
+
+ It can read both 32 and 64 bit PE files.
+ </summary>
+ </member>
+ <member name="M:PEFile.PEFile.#ctor(System.String)">
+ <summary>
+ Create a new PEFile header reader that inspects the
+ </summary>
+ </member>
+ <member name="P:PEFile.PEFile.Header">
+ <summary>
+ The Header for the PE file. This contains the infor in a link /dump /headers
+ </summary>
+ </member>
+ <member name="M:PEFile.PEFile.GetPdbSignature(System.String@,System.Guid@,System.Int32@,System.Boolean)">
+ <summary>
+ Looks up the debug signature information in the EXE. Returns true and sets the parameters if it is found.
+
+ If 'first' is true then the first entry is returned, otherwise (by default) the last entry is used
+ (this is what debuggers do today). Thus NGEN images put the IL PDB last (which means debuggers
+ pick up that one), but we can set it to 'first' if we want the NGEN PDB.
+ </summary>
+ </member>
+ <member name="M:PEFile.PEFile.GetFileVersionInfo">
+ <summary>
+ Gets the File Version Information that is stored as a resource in the PE file. (This is what the
+ version tab a file's property page is populated with).
+ </summary>
+ </member>
+ <member name="M:PEFile.PEFile.GetSxSManfest">
+ <summary>
+ For side by side dlls, the manifest that decribes the binding information is stored as the RT_MANIFEST resource, and it
+ is an XML string. This routine returns this.
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="P:PEFile.PEFile.HasPrecompiledManagedCode">
+ <summary>
+ Returns true if this is and NGEN or Ready-to-Run image (it has precompiled native code)
+ </summary>
+ </member>
+ <member name="P:PEFile.PEFile.IsManagedReadyToRun">
+ <summary>
+ Returns true if file has a managed ready-to-run image.
+ </summary>
+ </member>
+ <member name="M:PEFile.PEFile.ReadyToRunVersion(System.Int16@,System.Int16@)">
+ <summary>
+ Gets the major and minor ready-to-run version. returns true if ready-to-run.
+ </summary>
+ </member>
+ <member name="M:PEFile.PEFile.Dispose">
+ <summary>
+ Closes any file handles and cleans up resources.
+ </summary>
+ </member>
+ <member name="T:PEFile.PEHeader">
+ <summary>
+ A PEHeader is a reader of the data at the beginning of a PEFile. If the header bytes of a
+ PEFile are read or mapped into memory, this class can parse it when given a poitner to it.
+ It can read both 32 and 64 bit PE files.
+ </summary>
+ </member>
+ <member name="M:PEFile.PEHeader.#ctor(System.Void*)">
+ <summary>
+ Returns a PEHeader for void* pointer in memory. It does NO validity checking.
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.PEHeaderSize">
+ <summary>
+ The total s,ize of the header, including section array of the the PE header.
+ </summary>
+ </member>
+ <member name="M:PEFile.PEHeader.VirtualAddressToRva(System.Void*)">
+ <summary>
+ Given a virtual address to data in a mapped PE file, return the relative virtual address (displacement from start of the image)
+ </summary>
+ </member>
+ <member name="M:PEFile.PEHeader.RvaToVirtualAddress(System.Int32)">
+ <summary>
+ Given a relative virtual address (displacement from start of the image) return the virtual address to data in a mapped PE file
+ </summary>
+ </member>
+ <member name="M:PEFile.PEHeader.RvaToFileOffset(System.Int32)">
+ <summary>
+ Given a relative virtual address (displacement from start of the image) return a offset in the file data for that data.
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.IsPE64">
+ <summary>
+ Returns true if this is PE file for a 64 bit architecture.
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.IsManaged">
+ <summary>
+ Returns true if this file contains managed code (might also contain native code).
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.Signature">
+ <summary>
+ Returns the 'Signature' of the PE HEader PE\0\0 = 0x4550, used for sanity checking.
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.Machine">
+ <summary>
+ The machine this PE file is intended to run on
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.NumberOfSections">
+ <summary>
+ PE files have a number of sections that represent regions of memory with the access permisions. This is the nubmer of such sections.
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.TimeDateStampSec">
+ <summary>
+ The the PE file was created represented as the number of seconds since Jan 1 1970
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.TimeDateStamp">
+ <summary>
+ The the PE file was created represented as a DateTime object
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.PointerToSymbolTable">
+ <summary>
+ PointerToSymbolTable (see IMAGE_FILE_HEADER in PE File spec)
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.NumberOfSymbols">
+ <summary>
+ NumberOfSymbols (see IMAGE_FILE_HEADER PE File spec)
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.SizeOfOptionalHeader">
+ <summary>
+ SizeOfOptionalHeader (see IMAGE_FILE_HEADER PE File spec)
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.Characteristics">
+ <summary>
+ Characteristics (see IMAGE_FILE_HEADER PE File spec)
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.Magic">
+ <summary>
+ Magic (see IMAGE_OPTIONAL_HEADER32 or IMAGE_OPTIONAL_HEADER64 in PE File spec)
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.MajorLinkerVersion">
+ <summary>
+ MajorLinkerVersion (see IMAGE_OPTIONAL_HEADER32 or IMAGE_OPTIONAL_HEADER64 in PE File spec)
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.MinorLinkerVersion">
+ <summary>
+ MinorLinkerVersion (see IMAGE_OPTIONAL_HEADER32 or IMAGE_OPTIONAL_HEADER64 in PE File spec)
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.SizeOfCode">
+ <summary>
+ SizeOfCode (see IMAGE_OPTIONAL_HEADER32 or IMAGE_OPTIONAL_HEADER64 in PE File spec)
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.SizeOfInitializedData">
+ <summary>
+ SizeOfInitializedData (see IMAGE_OPTIONAL_HEADER32 or IMAGE_OPTIONAL_HEADER64 in PE File spec)
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.SizeOfUninitializedData">
+ <summary>
+ SizeOfUninitializedData (see IMAGE_OPTIONAL_HEADER32 or IMAGE_OPTIONAL_HEADER64 in PE File spec)
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.AddressOfEntryPoint">
+ <summary>
+ AddressOfEntryPoint (see IMAGE_OPTIONAL_HEADER32 or IMAGE_OPTIONAL_HEADER64 in PE File spec)
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.BaseOfCode">
+ <summary>
+ BaseOfCode (see IMAGE_OPTIONAL_HEADER32 or IMAGE_OPTIONAL_HEADER64 in PE File spec)
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.ImageBase">
+ <summary>
+ ImageBase (see IMAGE_OPTIONAL_HEADER32 or IMAGE_OPTIONAL_HEADER64 in PE File spec)
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.SectionAlignment">
+ <summary>
+ SectionAlignment (see IMAGE_OPTIONAL_HEADER32 or IMAGE_OPTIONAL_HEADER64 in PE File spec)
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.FileAlignment">
+ <summary>
+ FileAlignment (see IMAGE_OPTIONAL_HEADER32 or IMAGE_OPTIONAL_HEADER64 in PE File spec)
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.MajorOperatingSystemVersion">
+ <summary>
+ MajorOperatingSystemVersion (see IMAGE_OPTIONAL_HEADER32 or IMAGE_OPTIONAL_HEADER64 in PE File spec)
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.MinorOperatingSystemVersion">
+ <summary>
+ MinorOperatingSystemVersion (see IMAGE_OPTIONAL_HEADER32 or IMAGE_OPTIONAL_HEADER64 in PE File spec)
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.MajorImageVersion">
+ <summary>
+ MajorImageVersion (see IMAGE_OPTIONAL_HEADER32 or IMAGE_OPTIONAL_HEADER64 in PE File spec)
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.MinorImageVersion">
+ <summary>
+ MinorImageVersion (see IMAGE_OPTIONAL_HEADER32 or IMAGE_OPTIONAL_HEADER64 in PE File spec)
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.MajorSubsystemVersion">
+ <summary>
+ MajorSubsystemVersion (see IMAGE_OPTIONAL_HEADER32 or IMAGE_OPTIONAL_HEADER64 in PE File spec)
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.MinorSubsystemVersion">
+ <summary>
+ MinorSubsystemVersion (see IMAGE_OPTIONAL_HEADER32 or IMAGE_OPTIONAL_HEADER64 in PE File spec)
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.Win32VersionValue">
+ <summary>
+ Win32VersionValue (see IMAGE_OPTIONAL_HEADER32 or IMAGE_OPTIONAL_HEADER64 in PE File spec)
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.SizeOfImage">
+ <summary>
+ SizeOfImage (see IMAGE_OPTIONAL_HEADER32 or IMAGE_OPTIONAL_HEADER64 in PE File spec)
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.SizeOfHeaders">
+ <summary>
+ SizeOfHeaders (see IMAGE_OPTIONAL_HEADER32 or IMAGE_OPTIONAL_HEADER64 in PE File spec)
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.CheckSum">
+ <summary>
+ CheckSum (see IMAGE_OPTIONAL_HEADER32 or IMAGE_OPTIONAL_HEADER64 in PE File spec)
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.Subsystem">
+ <summary>
+ Subsystem (see IMAGE_OPTIONAL_HEADER32 or IMAGE_OPTIONAL_HEADER64 in PE File spec)
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.DllCharacteristics">
+ <summary>
+ DllCharacteristics (see IMAGE_OPTIONAL_HEADER32 or IMAGE_OPTIONAL_HEADER64 in PE File spec)
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.SizeOfStackReserve">
+ <summary>
+ SizeOfStackReserve (see IMAGE_OPTIONAL_HEADER32 or IMAGE_OPTIONAL_HEADER64 in PE File spec)
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.SizeOfStackCommit">
+ <summary>
+ SizeOfStackCommit (see IMAGE_OPTIONAL_HEADER32 or IMAGE_OPTIONAL_HEADER64 in PE File spec)
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.SizeOfHeapReserve">
+ <summary>
+ SizeOfHeapReserve (see IMAGE_OPTIONAL_HEADER32 or IMAGE_OPTIONAL_HEADER64 in PE File spec)
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.SizeOfHeapCommit">
+ <summary>
+ SizeOfHeapCommit (see IMAGE_OPTIONAL_HEADER32 or IMAGE_OPTIONAL_HEADER64 in PE File spec)
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.LoaderFlags">
+ <summary>
+ LoaderFlags (see IMAGE_OPTIONAL_HEADER32 or IMAGE_OPTIONAL_HEADER64 in PE File spec)
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.NumberOfRvaAndSizes">
+ <summary>
+ NumberOfRvaAndSizes (see IMAGE_OPTIONAL_HEADER32 or IMAGE_OPTIONAL_HEADER64 in PE File spec)
+ </summary>
+ </member>
+ <member name="M:PEFile.PEHeader.Directory(System.Int32)">
+ <summary>
+ Returns the data directory (virtual address an blob, of a data directory with index 'idx'. 14 are currently defined.
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.ExportDirectory">
+ <summary>
+ Returns the data directory for DLL Exports see PE file spec for more
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.ImportDirectory">
+ <summary>
+ Returns the data directory for DLL Imports see PE file spec for more
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.ResourceDirectory">
+ <summary>
+ Returns the data directory for DLL Resources see PE file spec for more
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.ExceptionDirectory">
+ <summary>
+ Returns the data directory for DLL Exceptions see PE file spec for more
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.CertificatesDirectory">
+ <summary>
+ Returns the data directory for DLL securiy certificates (Authenticode) see PE file spec for more
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.BaseRelocationDirectory">
+ <summary>
+ Returns the data directory Image Base Relocations (RELOCS) see PE file spec for more
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.DebugDirectory">
+ <summary>
+ Returns the data directory for Debug information see PE file spec for more
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.ArchitectureDirectory">
+ <summary>
+ Returns the data directory for DLL Exports see PE file spec for more
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.GlobalPointerDirectory">
+ <summary>
+ Returns the data directory for GlobalPointer (IA64) see PE file spec for more
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.ThreadStorageDirectory">
+ <summary>
+ Returns the data directory for THread local storage see PE file spec for more
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.LoadConfigurationDirectory">
+ <summary>
+ Returns the data directory for Load Configuration see PE file spec for more
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.BoundImportDirectory">
+ <summary>
+ Returns the data directory for Bound Imports see PE file spec for more
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.ImportAddressTableDirectory">
+ <summary>
+ Returns the data directory for the DLL Import Address Table (IAT) see PE file spec for more
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.DelayImportDirectory">
+ <summary>
+ Returns the data directory for Delayed Imports see PE file spec for more
+ </summary>
+ </member>
+ <member name="P:PEFile.PEHeader.ComDescriptorDirectory">
+ <summary>
+ see PE file spec for more .NET Runtime infomration.
+ </summary>
+ </member>
+ <member name="T:PEFile.MachineType">
+ <summary>
+ The Machine types supported by the portable executable (PE) File format
+ </summary>
+ </member>
+ <member name="F:PEFile.MachineType.Native">
+ <summary>
+ Unknown machine type
+ </summary>
+ </member>
+ <member name="F:PEFile.MachineType.X86">
+ <summary>
+ Intel X86 CPU
+ </summary>
+ </member>
+ <member name="F:PEFile.MachineType.ia64">
+ <summary>
+ Intel IA64
+ </summary>
+ </member>
+ <member name="F:PEFile.MachineType.ARM">
+ <summary>
+ ARM 32 bit
+ </summary>
+ </member>
+ <member name="F:PEFile.MachineType.Amd64">
+ <summary>
+ Arm 64 bit
+ </summary>
+ </member>
+ <member name="T:PEFile.IMAGE_DATA_DIRECTORY">
+ <summary>
+ Represents a Portable Executable (PE) Data directory. This is just a well known optional 'Blob' of memory (has a starting point and size)
+ </summary>
+ </member>
+ <member name="F:PEFile.IMAGE_DATA_DIRECTORY.VirtualAddress">
+ <summary>
+ The start of the data blob when the file is mapped into memory
+ </summary>
+ </member>
+ <member name="F:PEFile.IMAGE_DATA_DIRECTORY.Size">
+ <summary>
+ The length of the data blob.
+ </summary>
+ </member>
+ <member name="T:PEFile.FileVersionInfo">
+ <summary>
+ FileVersionInfo represents the extended version formation that is optionally placed in the PE file resource area.
+ </summary>
+ </member>
+ <member name="P:PEFile.FileVersionInfo.FileVersion">
+ <summary>
+ The verison string
+ </summary>
+ </member>
+ <member name="T:PEFile.PEBuffer">
+ <summary>
+ A PEBuffer represents a buffer (efficient) scanner of the
+ </summary>
+ </member>
+ </members>
+</doc>