コード例 #1
0
        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));
        }
コード例 #2
0
        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);
        }
コード例 #3
0
 internal unsafe uint Trace(MofEvent *evt)
 {
     return(EtwNativeMethods.TraceEvent(this.traceHandle, (char *)evt));
 }