Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DropDownList.cs
- Effect.cs
- ConfigXmlAttribute.cs
- autovalidator.cs
- PathNode.cs
- FrameworkTemplate.cs
- MachineKeyConverter.cs
- SQLChars.cs
- DataMemberListEditor.cs
- ObjectReaderCompiler.cs
- EventSource.cs
- FileCodeGroup.cs
- Padding.cs
- BuildProvider.cs
- StatusStrip.cs
- EncryptedReference.cs
- StatusBarPanel.cs
- Geometry.cs
- PngBitmapEncoder.cs
- ConfigurationValidatorBase.cs
- CodeTypeReference.cs
- SmiRequestExecutor.cs
- WindowsSolidBrush.cs
- XmlSchemaChoice.cs
- PhonemeConverter.cs
- DataSet.cs
- TablePattern.cs
- OleDbDataAdapter.cs
- TrustManager.cs
- ActiveDesignSurfaceEvent.cs
- DES.cs
- BuilderElements.cs
- ContentPlaceHolder.cs
- IApplicationTrustManager.cs
- XmlJsonReader.cs
- FixedHyperLink.cs
- ClientSideQueueItem.cs
- ControlUtil.cs
- SingleAnimation.cs
- CustomWebEventKey.cs
- DataBindingExpressionBuilder.cs
- CacheEntry.cs
- TargetControlTypeCache.cs
- XamlToRtfParser.cs
- XPathExpr.cs
- filewebresponse.cs
- SpotLight.cs
- SignedPkcs7.cs
- GestureRecognitionResult.cs
- ReachDocumentSequenceSerializerAsync.cs
- OrderingExpression.cs
- WebZoneDesigner.cs
- LazyTextWriterCreator.cs
- FieldToken.cs
- XmlSchemaInclude.cs
- PassportAuthenticationEventArgs.cs
- RSAPKCS1SignatureFormatter.cs
- DateTimePicker.cs
- CapabilitiesUse.cs
- HighContrastHelper.cs
- FileStream.cs
- Interop.cs
- StatusBarDrawItemEvent.cs
- SendAgentStatusRequest.cs
- TimeSpanOrInfiniteValidator.cs
- UnsafeNativeMethods.cs
- PixelFormat.cs
- UnsafeNativeMethods.cs
- CacheMemory.cs
- FormViewRow.cs
- RootBuilder.cs
- GifBitmapDecoder.cs
- WebServiceEnumData.cs
- SessionIDManager.cs
- streamingZipPartStream.cs
- ImageCodecInfoPrivate.cs
- externdll.cs
- KeyInstance.cs
- DesignTimeTemplateParser.cs
- TemplateInstanceAttribute.cs
- Vector3DIndependentAnimationStorage.cs
- HttpCapabilitiesSectionHandler.cs
- DisposableCollectionWrapper.cs
- MinMaxParagraphWidth.cs
- ToolStripContentPanel.cs
- DockingAttribute.cs
- _TimerThread.cs
- PublisherIdentityPermission.cs
- WebPart.cs
- KnownTypes.cs
- EntityClassGenerator.cs
- ConfigurationValidatorAttribute.cs
- ISAPIApplicationHost.cs
- ProfileManager.cs
- BamlReader.cs
- WindowsEditBox.cs
- WebServiceParameterData.cs
- CacheChildrenQuery.cs
- Emitter.cs
- AsnEncodedData.cs