in Source/Tx.Windows/EtwNative/EtwListener.cs [63:100]
private void ThreadProc()
{
int error;
_handle = EtwNativeMethods.OpenTrace(ref _logFile);
if (_handle == EtwNativeMethods.InvalidHandle)
{
error = Marshal.GetLastWin32Error();
if (error == EtwNativeMethods.ErrorNotFound)
{
_observer.OnError(new Exception("Could not find ETW real-time session " + _logFile.LoggerName));
return;
}
else
{
_observer.OnError(new Win32Exception(error));
return;
}
}
try
{
error = EtwNativeMethods.ProcessTrace(new[] {_handle}, 1, IntPtr.Zero, IntPtr.Zero);
}
catch (Exception ex)
{
_observer.OnError(ex);
return;
}
if (error != 0)
{
_observer.OnError(new Win32Exception(error));
return;
}
_observer.OnCompleted();
}