Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / whidbey / QFE / ndp / fx / src / xsp / System / Web / EtwTrace.cs / 4 / EtwTrace.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* * EtwTrace class */ namespace System.Web { using System.Web.Hosting; using System.Web.Util; internal enum EtwTraceConfigType { DOWNLEVEL = 0, IIS7_ISAPI = 1, IIS7_INTEGRATED = 2 } internal enum EtwTraceType { ETW_TYPE_START = 1, ETW_TYPE_END = 2, ETW_TYPE_REQ_QUEUED = 3, ETW_TYPE_REQ_DEQUEUED = 4, ETW_TYPE_GETAPPDOMAIN_ENTER = 5, ETW_TYPE_GETAPPDOMAIN_LEAVE = 6, ETW_TYPE_APPDOMAIN_ENTER = 7, ETW_TYPE_START_HANDLER = 8, ETW_TYPE_END_HANDLER = 9, ETW_TYPE_PIPELINE_ENTER = 10, ETW_TYPE_PIPELINE_LEAVE = 11, ETW_TYPE_MAPHANDLER_ENTER = 12, ETW_TYPE_MAPHANDLER_LEAVE = 13, ETW_TYPE_PARSE_ENTER = 14, ETW_TYPE_PARSE_LEAVE = 15, ETW_TYPE_COMPILE_ENTER = 16, ETW_TYPE_COMPILE_LEAVE = 17, ETW_TYPE_HTTPHANDLER_ENTER = 18, ETW_TYPE_HTTPHANDLER_LEAVE = 19, ETW_TYPE_SESSIONSTATE_PARTITION_START = 20, ETW_TYPE_SESSIONSTATE_PARTITION_END = 21, ETW_TYPE_PAGE_PRE_INIT_ENTER = 22, ETW_TYPE_PAGE_PRE_INIT_LEAVE = 23, ETW_TYPE_PAGE_INIT_ENTER = 24, ETW_TYPE_PAGE_INIT_LEAVE = 25, ETW_TYPE_PAGE_LOAD_VIEWSTATE_ENTER = 26, ETW_TYPE_PAGE_LOAD_VIEWSTATE_LEAVE = 27, ETW_TYPE_PAGE_LOAD_POSTDATA_ENTER = 28, ETW_TYPE_PAGE_LOAD_POSTDATA_LEAVE = 29, ETW_TYPE_PAGE_LOAD_ENTER = 30, ETW_TYPE_PAGE_LOAD_LEAVE = 31, ETW_TYPE_PAGE_POST_DATA_CHANGED_ENTER = 32, ETW_TYPE_PAGE_POST_DATA_CHANGED_LEAVE = 33, ETW_TYPE_PAGE_RAISE_POSTBACK_ENTER = 34, ETW_TYPE_PAGE_RAISE_POSTBACK_LEAVE = 35, ETW_TYPE_PAGE_PRE_RENDER_ENTER = 36, ETW_TYPE_PAGE_PRE_RENDER_LEAVE = 37, ETW_TYPE_PAGE_SAVE_VIEWSTATE_ENTER = 38, ETW_TYPE_PAGE_SAVE_VIEWSTATE_LEAVE = 39, ETW_TYPE_PAGE_RENDER_ENTER = 40, ETW_TYPE_PAGE_RENDER_LEAVE = 41, ETW_TYPE_SESSION_DATA_BEGIN = 42, ETW_TYPE_SESSION_DATA_END = 43, ETW_TYPE_PROFILE_BEGIN = 44, ETW_TYPE_PROFILE_END = 45, ETW_TYPE_ROLE_IS_USER_IN_ROLE = 46, ETW_TYPE_ROLE_GET_USER_ROLES = 47, ETW_TYPE_ROLE_BEGIN = 48, ETW_TYPE_ROLE_END = 49, ETW_TYPE_WEB_EVENT_RAISE_START = 50, ETW_TYPE_WEB_EVENT_RAISE_END = 51, ETW_TYPE_WEB_EVENT_DELIVER_START = 52, ETW_TYPE_WEB_EVENT_DELIVER_END = 53 } struct EtwTraceLevel { internal const int None = 0; internal const int Fatal = 1; internal const int Error = 2; internal const int Warning = 3; internal const int Information = 4; internal const int Verbose = 5; } struct EtwTraceFlags { internal const int None = 0; internal const int Infrastructure = 1; internal const int Module = 2; internal const int Page = 4; internal const int AppSvc = 8; } // these need to match the definitions in // mgdeng:mgdhandler.hxx // the internal WorkerRequest trace helpers // takes this enum as the type internal enum IntegratedTraceType { TraceWrite = 0, TraceWarn = 1, DiagCritical = 2, DiagError = 3, DiagWarning = 4, DiagInfo = 5, DiagVerbose = 6, DiagStart = 7, DiagStop = 8, DiagSuspend = 9, DiagResume = 10, DiagTransfer = 11, } internal enum EtwWorkerRequestType { Undefined = -1, InProc = 0, OutOfProc = 1, IIS7Integrated = 3, Unknown = 999 } internal static class EtwTrace { private static int _traceLevel = 0; private static int _traceFlags = 0; private static EtwWorkerRequestType s_WrType = EtwWorkerRequestType.Undefined; internal static int InferVerbosity(IntegratedTraceType traceType) { int verbosity = EtwTraceLevel.Verbose; switch (traceType) { case IntegratedTraceType.TraceWrite: verbosity = EtwTraceLevel.Verbose; break; case IntegratedTraceType.TraceWarn: verbosity = EtwTraceLevel.Warning; break; case IntegratedTraceType.DiagCritical: verbosity = EtwTraceLevel.Fatal; break; case IntegratedTraceType.DiagWarning: verbosity = EtwTraceLevel.Warning; break; case IntegratedTraceType.DiagError: verbosity = EtwTraceLevel.Error; break; case IntegratedTraceType.DiagInfo: verbosity = EtwTraceLevel.Information; break; case IntegratedTraceType.DiagVerbose: verbosity = EtwTraceLevel.Verbose; break; case IntegratedTraceType.DiagStart: verbosity = EtwTraceLevel.None; break; case IntegratedTraceType.DiagStop: verbosity = EtwTraceLevel.None; break; case IntegratedTraceType.DiagResume: verbosity = EtwTraceLevel.None; break; case IntegratedTraceType.DiagSuspend: verbosity = EtwTraceLevel.None; break; case IntegratedTraceType.DiagTransfer: verbosity = EtwTraceLevel.None; break; default: verbosity = EtwTraceLevel.Verbose; break; } return verbosity; } internal static bool IsTraceEnabled(int level, int flag) { if (level < _traceLevel && ((flag & _traceFlags) != EtwTraceFlags.None)) return true; return false; } private static void ResolveWorkerRequestType(HttpWorkerRequest workerRequest) { if (workerRequest is IIS7WorkerRequest) { s_WrType = EtwWorkerRequestType.IIS7Integrated; } else if (workerRequest is ISAPIWorkerRequestInProc) { s_WrType = EtwWorkerRequestType.InProc; } else if (workerRequest is ISAPIWorkerRequestOutOfProc){ s_WrType = EtwWorkerRequestType.OutOfProc; } else { s_WrType = EtwWorkerRequestType.Unknown; } } internal static void TraceEnableCheck(EtwTraceConfigType configType, IntPtr p) { // Don't activate if webengine.dll isn't loaded if (!HttpRuntime.IsEngineLoaded) return; switch (configType) { case EtwTraceConfigType.IIS7_INTEGRATED: bool f; UnsafeIISMethods.MgdEtwGetTraceConfig(p /*pRequestContext*/, out f, out _traceFlags, out _traceLevel); break; case EtwTraceConfigType.IIS7_ISAPI: int[] contentInfo = new int[3]; UnsafeNativeMethods.EcbGetTraceFlags(p /*pECB*/, contentInfo); _traceFlags = contentInfo[0]; _traceLevel = contentInfo[1]; break; case EtwTraceConfigType.DOWNLEVEL: UnsafeNativeMethods.GetEtwValues(out _traceLevel, out _traceFlags); break; default: break; } } internal static void Trace(EtwTraceType traceType, HttpWorkerRequest workerRequest) { Trace(traceType, workerRequest, null, null); } internal static void Trace(EtwTraceType traceType, HttpWorkerRequest workerRequest, string data1) { Trace(traceType, workerRequest, data1, null, null, null); } internal static void Trace(EtwTraceType traceType, HttpWorkerRequest workerRequest, string data1, string data2) { Trace(traceType, workerRequest, data1, data2, null, null); } internal static void Trace(EtwTraceType traceType, HttpWorkerRequest workerRequest, string data1, string data2, string data3, string data4) { if (s_WrType == EtwWorkerRequestType.Undefined) { ResolveWorkerRequestType(workerRequest); } if (s_WrType == EtwWorkerRequestType.Unknown) return; if (workerRequest == null) return; if (s_WrType == EtwWorkerRequestType.IIS7Integrated) { UnsafeNativeMethods.TraceRaiseEventMgdHandler((int) traceType, ((IIS7WorkerRequest)workerRequest).RequestContext, data1, data2, data3, data4); } else if (s_WrType == EtwWorkerRequestType.InProc) { UnsafeNativeMethods.TraceRaiseEventWithEcb((int) traceType, ((ISAPIWorkerRequest)workerRequest).Ecb, data1, data2, data3, data4); } else if (s_WrType == EtwWorkerRequestType.OutOfProc) { UnsafeNativeMethods.PMTraceRaiseEvent((int) traceType, ((ISAPIWorkerRequest)workerRequest).Ecb, data1, data2, data3, data4); } } internal static void Trace(EtwTraceType traceType, IntPtr ecb, string data1, string data2, bool inProc) { if (inProc) UnsafeNativeMethods.TraceRaiseEventWithEcb((int) traceType, ecb, data1, data2, null, null); else UnsafeNativeMethods.PMTraceRaiseEvent((int) traceType, ecb, data1, data2, null, null); } }; } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* * EtwTrace class */ namespace System.Web { using System.Web.Hosting; using System.Web.Util; internal enum EtwTraceConfigType { DOWNLEVEL = 0, IIS7_ISAPI = 1, IIS7_INTEGRATED = 2 } internal enum EtwTraceType { ETW_TYPE_START = 1, ETW_TYPE_END = 2, ETW_TYPE_REQ_QUEUED = 3, ETW_TYPE_REQ_DEQUEUED = 4, ETW_TYPE_GETAPPDOMAIN_ENTER = 5, ETW_TYPE_GETAPPDOMAIN_LEAVE = 6, ETW_TYPE_APPDOMAIN_ENTER = 7, ETW_TYPE_START_HANDLER = 8, ETW_TYPE_END_HANDLER = 9, ETW_TYPE_PIPELINE_ENTER = 10, ETW_TYPE_PIPELINE_LEAVE = 11, ETW_TYPE_MAPHANDLER_ENTER = 12, ETW_TYPE_MAPHANDLER_LEAVE = 13, ETW_TYPE_PARSE_ENTER = 14, ETW_TYPE_PARSE_LEAVE = 15, ETW_TYPE_COMPILE_ENTER = 16, ETW_TYPE_COMPILE_LEAVE = 17, ETW_TYPE_HTTPHANDLER_ENTER = 18, ETW_TYPE_HTTPHANDLER_LEAVE = 19, ETW_TYPE_SESSIONSTATE_PARTITION_START = 20, ETW_TYPE_SESSIONSTATE_PARTITION_END = 21, ETW_TYPE_PAGE_PRE_INIT_ENTER = 22, ETW_TYPE_PAGE_PRE_INIT_LEAVE = 23, ETW_TYPE_PAGE_INIT_ENTER = 24, ETW_TYPE_PAGE_INIT_LEAVE = 25, ETW_TYPE_PAGE_LOAD_VIEWSTATE_ENTER = 26, ETW_TYPE_PAGE_LOAD_VIEWSTATE_LEAVE = 27, ETW_TYPE_PAGE_LOAD_POSTDATA_ENTER = 28, ETW_TYPE_PAGE_LOAD_POSTDATA_LEAVE = 29, ETW_TYPE_PAGE_LOAD_ENTER = 30, ETW_TYPE_PAGE_LOAD_LEAVE = 31, ETW_TYPE_PAGE_POST_DATA_CHANGED_ENTER = 32, ETW_TYPE_PAGE_POST_DATA_CHANGED_LEAVE = 33, ETW_TYPE_PAGE_RAISE_POSTBACK_ENTER = 34, ETW_TYPE_PAGE_RAISE_POSTBACK_LEAVE = 35, ETW_TYPE_PAGE_PRE_RENDER_ENTER = 36, ETW_TYPE_PAGE_PRE_RENDER_LEAVE = 37, ETW_TYPE_PAGE_SAVE_VIEWSTATE_ENTER = 38, ETW_TYPE_PAGE_SAVE_VIEWSTATE_LEAVE = 39, ETW_TYPE_PAGE_RENDER_ENTER = 40, ETW_TYPE_PAGE_RENDER_LEAVE = 41, ETW_TYPE_SESSION_DATA_BEGIN = 42, ETW_TYPE_SESSION_DATA_END = 43, ETW_TYPE_PROFILE_BEGIN = 44, ETW_TYPE_PROFILE_END = 45, ETW_TYPE_ROLE_IS_USER_IN_ROLE = 46, ETW_TYPE_ROLE_GET_USER_ROLES = 47, ETW_TYPE_ROLE_BEGIN = 48, ETW_TYPE_ROLE_END = 49, ETW_TYPE_WEB_EVENT_RAISE_START = 50, ETW_TYPE_WEB_EVENT_RAISE_END = 51, ETW_TYPE_WEB_EVENT_DELIVER_START = 52, ETW_TYPE_WEB_EVENT_DELIVER_END = 53 } struct EtwTraceLevel { internal const int None = 0; internal const int Fatal = 1; internal const int Error = 2; internal const int Warning = 3; internal const int Information = 4; internal const int Verbose = 5; } struct EtwTraceFlags { internal const int None = 0; internal const int Infrastructure = 1; internal const int Module = 2; internal const int Page = 4; internal const int AppSvc = 8; } // these need to match the definitions in // mgdeng:mgdhandler.hxx // the internal WorkerRequest trace helpers // takes this enum as the type internal enum IntegratedTraceType { TraceWrite = 0, TraceWarn = 1, DiagCritical = 2, DiagError = 3, DiagWarning = 4, DiagInfo = 5, DiagVerbose = 6, DiagStart = 7, DiagStop = 8, DiagSuspend = 9, DiagResume = 10, DiagTransfer = 11, } internal enum EtwWorkerRequestType { Undefined = -1, InProc = 0, OutOfProc = 1, IIS7Integrated = 3, Unknown = 999 } internal static class EtwTrace { private static int _traceLevel = 0; private static int _traceFlags = 0; private static EtwWorkerRequestType s_WrType = EtwWorkerRequestType.Undefined; internal static int InferVerbosity(IntegratedTraceType traceType) { int verbosity = EtwTraceLevel.Verbose; switch (traceType) { case IntegratedTraceType.TraceWrite: verbosity = EtwTraceLevel.Verbose; break; case IntegratedTraceType.TraceWarn: verbosity = EtwTraceLevel.Warning; break; case IntegratedTraceType.DiagCritical: verbosity = EtwTraceLevel.Fatal; break; case IntegratedTraceType.DiagWarning: verbosity = EtwTraceLevel.Warning; break; case IntegratedTraceType.DiagError: verbosity = EtwTraceLevel.Error; break; case IntegratedTraceType.DiagInfo: verbosity = EtwTraceLevel.Information; break; case IntegratedTraceType.DiagVerbose: verbosity = EtwTraceLevel.Verbose; break; case IntegratedTraceType.DiagStart: verbosity = EtwTraceLevel.None; break; case IntegratedTraceType.DiagStop: verbosity = EtwTraceLevel.None; break; case IntegratedTraceType.DiagResume: verbosity = EtwTraceLevel.None; break; case IntegratedTraceType.DiagSuspend: verbosity = EtwTraceLevel.None; break; case IntegratedTraceType.DiagTransfer: verbosity = EtwTraceLevel.None; break; default: verbosity = EtwTraceLevel.Verbose; break; } return verbosity; } internal static bool IsTraceEnabled(int level, int flag) { if (level < _traceLevel && ((flag & _traceFlags) != EtwTraceFlags.None)) return true; return false; } private static void ResolveWorkerRequestType(HttpWorkerRequest workerRequest) { if (workerRequest is IIS7WorkerRequest) { s_WrType = EtwWorkerRequestType.IIS7Integrated; } else if (workerRequest is ISAPIWorkerRequestInProc) { s_WrType = EtwWorkerRequestType.InProc; } else if (workerRequest is ISAPIWorkerRequestOutOfProc){ s_WrType = EtwWorkerRequestType.OutOfProc; } else { s_WrType = EtwWorkerRequestType.Unknown; } } internal static void TraceEnableCheck(EtwTraceConfigType configType, IntPtr p) { // Don't activate if webengine.dll isn't loaded if (!HttpRuntime.IsEngineLoaded) return; switch (configType) { case EtwTraceConfigType.IIS7_INTEGRATED: bool f; UnsafeIISMethods.MgdEtwGetTraceConfig(p /*pRequestContext*/, out f, out _traceFlags, out _traceLevel); break; case EtwTraceConfigType.IIS7_ISAPI: int[] contentInfo = new int[3]; UnsafeNativeMethods.EcbGetTraceFlags(p /*pECB*/, contentInfo); _traceFlags = contentInfo[0]; _traceLevel = contentInfo[1]; break; case EtwTraceConfigType.DOWNLEVEL: UnsafeNativeMethods.GetEtwValues(out _traceLevel, out _traceFlags); break; default: break; } } internal static void Trace(EtwTraceType traceType, HttpWorkerRequest workerRequest) { Trace(traceType, workerRequest, null, null); } internal static void Trace(EtwTraceType traceType, HttpWorkerRequest workerRequest, string data1) { Trace(traceType, workerRequest, data1, null, null, null); } internal static void Trace(EtwTraceType traceType, HttpWorkerRequest workerRequest, string data1, string data2) { Trace(traceType, workerRequest, data1, data2, null, null); } internal static void Trace(EtwTraceType traceType, HttpWorkerRequest workerRequest, string data1, string data2, string data3, string data4) { if (s_WrType == EtwWorkerRequestType.Undefined) { ResolveWorkerRequestType(workerRequest); } if (s_WrType == EtwWorkerRequestType.Unknown) return; if (workerRequest == null) return; if (s_WrType == EtwWorkerRequestType.IIS7Integrated) { UnsafeNativeMethods.TraceRaiseEventMgdHandler((int) traceType, ((IIS7WorkerRequest)workerRequest).RequestContext, data1, data2, data3, data4); } else if (s_WrType == EtwWorkerRequestType.InProc) { UnsafeNativeMethods.TraceRaiseEventWithEcb((int) traceType, ((ISAPIWorkerRequest)workerRequest).Ecb, data1, data2, data3, data4); } else if (s_WrType == EtwWorkerRequestType.OutOfProc) { UnsafeNativeMethods.PMTraceRaiseEvent((int) traceType, ((ISAPIWorkerRequest)workerRequest).Ecb, data1, data2, data3, data4); } } internal static void Trace(EtwTraceType traceType, IntPtr ecb, string data1, string data2, bool inProc) { if (inProc) UnsafeNativeMethods.TraceRaiseEventWithEcb((int) traceType, ecb, data1, data2, null, null); else UnsafeNativeMethods.PMTraceRaiseEvent((int) traceType, ecb, data1, data2, null, null); } }; } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- WindowsSecurityToken.cs
- Empty.cs
- UrlPath.cs
- SiteMembershipCondition.cs
- ExtenderProvidedPropertyAttribute.cs
- InheritablePropertyChangeInfo.cs
- AddIn.cs
- AQNBuilder.cs
- NavigateUrlConverter.cs
- GroupItemAutomationPeer.cs
- xmlsaver.cs
- UshortList2.cs
- RequestResizeEvent.cs
- TagPrefixCollection.cs
- SafeFileMapViewHandle.cs
- MetadataArtifactLoader.cs
- BufferedGraphicsContext.cs
- RenderingEventArgs.cs
- DateBoldEvent.cs
- TextEditorTables.cs
- DbInsertCommandTree.cs
- EventBookmark.cs
- ToolStripDropDownClosedEventArgs.cs
- StylusPointPropertyUnit.cs
- Triplet.cs
- MaskedTextProvider.cs
- WarningException.cs
- ProvidePropertyAttribute.cs
- RenderData.cs
- DriveInfo.cs
- Pair.cs
- ListViewSelectEventArgs.cs
- PropertyTabChangedEvent.cs
- Rules.cs
- TextEditorContextMenu.cs
- CharAnimationBase.cs
- SettingsBase.cs
- WindowsTitleBar.cs
- WindowsAuthenticationEventArgs.cs
- GrabHandleGlyph.cs
- ModuleBuilderData.cs
- FlowDocumentFormatter.cs
- MappedMetaModel.cs
- ISAPIWorkerRequest.cs
- PaperSource.cs
- DashStyles.cs
- UmAlQuraCalendar.cs
- CustomExpressionEventArgs.cs
- TextEmbeddedObject.cs
- CompressedStack.cs
- ConfigurationValue.cs
- QilChoice.cs
- Dynamic.cs
- RegistryConfigurationProvider.cs
- ObjectAnimationBase.cs
- CursorEditor.cs
- CodeCastExpression.cs
- IncrementalReadDecoders.cs
- ComPlusInstanceContextInitializer.cs
- DeferrableContentConverter.cs
- DirtyTextRange.cs
- ChildTable.cs
- HTTPNotFoundHandler.cs
- FocusManager.cs
- FrameworkElementFactoryMarkupObject.cs
- AddInAttribute.cs
- ExtensionWindow.cs
- WebPartPersonalization.cs
- TextBox.cs
- MemoryMappedFile.cs
- ArrayItemReference.cs
- AdRotator.cs
- AxHost.cs
- DynamicMethod.cs
- PassportAuthentication.cs
- Ipv6Element.cs
- SendMailErrorEventArgs.cs
- ChtmlCalendarAdapter.cs
- OleDbPropertySetGuid.cs
- GuidelineCollection.cs
- SafeRightsManagementHandle.cs
- _AutoWebProxyScriptWrapper.cs
- DataGridViewColumnConverter.cs
- JoinTreeSlot.cs
- TextUtf8RawTextWriter.cs
- ColumnResizeAdorner.cs
- ListViewGroupConverter.cs
- OrderPreservingSpoolingTask.cs
- PrimitiveType.cs
- CheckBox.cs
- PageRanges.cs
- ProviderUtil.cs
- IndexingContentUnit.cs
- CacheSection.cs
- DiscoveryDocument.cs
- LockCookie.cs
- DbMetaDataFactory.cs
- RecognizerInfo.cs
- SyntaxCheck.cs
- CodeMethodInvokeExpression.cs