internal static EtwHandle RegisterTraceGuids(EtwTraceCallback cbFunc, Guid controlGuid, TraceGuidRegistration registration) { ulong regHandle = 0L; uint num2 = EtwNativeMethods.RegisterTraceGuids(cbFunc, null, ref controlGuid, 1, ref registration, null, null, out regHandle); if (num2 != 0) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new Win32Exception((int)num2)); } return(new EtwHandle(regHandle)); }
private unsafe uint EtwNotificationCallback(uint requestCode, IntPtr context, IntPtr bufferSize, byte *buffer) { if (null == buffer) { return(uint.MaxValue); } if (DebugTrace.Info) { DebugTrace.Trace(TraceLevel.Info, "EtwNotificationCallback is called!"); } EventTraceHeader *headerPtr = (EventTraceHeader *)buffer; switch (requestCode) { case 4: { this.traceHandle = headerPtr->HistoricalContext; uint traceEnableFlags = EtwNativeMethods.GetTraceEnableFlags(this.traceHandle); int traceEnableLevel = EtwNativeMethods.GetTraceEnableLevel(this.traceHandle); if (DebugTrace.Info) { DebugTrace.Trace(TraceLevel.Info, "EtwNotificationCallback: EnableEvents: Current DiagnosticTrace Level {0}", DiagnosticUtility.Level); DebugTrace.Trace(TraceLevel.Info, "EtwNotificationCallback: EnableEvents: flags = {0} , level = {1}", traceEnableFlags, traceEnableLevel); } using (Process process = Process.GetCurrentProcess()) { if ((traceEnableFlags == process.Id) && (traceEnableLevel > 0)) { DiagnosticUtility.Level = this.LevelFromInt(traceEnableLevel); if (DebugTrace.Info) { DebugTrace.Trace(TraceLevel.Info, "EtwNotificationCallback: New DiagnosticTrace Level {0}", DiagnosticUtility.Level); } } break; } } case 5: this.traceHandle = 0L; if (DebugTrace.Info) { DebugTrace.Trace(TraceLevel.Info, "EtwNotificationCallback: Disabling Session Handle!!"); } break; } return(0); }
internal unsafe uint Trace(MofEvent *evt) { return(EtwNativeMethods.TraceEvent(this.traceHandle, (char *)evt)); }