Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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.
//
//-----------------------------------------------------------------------------
/*
* 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ProxyWebPart.cs
- ControlFilterExpression.cs
- PropertySourceInfo.cs
- ActivityStateQuery.cs
- CodeTypeMember.cs
- ConsoleTraceListener.cs
- JapaneseCalendar.cs
- FreezableCollection.cs
- Mapping.cs
- AppSettings.cs
- OdbcDataAdapter.cs
- PreservationFileWriter.cs
- EntityStoreSchemaFilterEntry.cs
- PermissionToken.cs
- UIPropertyMetadata.cs
- DBSchemaRow.cs
- FieldNameLookup.cs
- FontSizeConverter.cs
- UrlAuthFailedErrorFormatter.cs
- DataGridViewLinkColumn.cs
- PackWebRequestFactory.cs
- PrintDialogException.cs
- CollectionViewSource.cs
- XmlSiteMapProvider.cs
- BindingBase.cs
- WorkerRequest.cs
- XmlSchemaSimpleContent.cs
- PropertyConverter.cs
- DefaultAutoFieldGenerator.cs
- InputScope.cs
- BCryptSafeHandles.cs
- RadialGradientBrush.cs
- ADRoleFactory.cs
- Encoding.cs
- ModuleBuilderData.cs
- DataSourceProvider.cs
- HostElement.cs
- SynchronizationLockException.cs
- Knowncolors.cs
- OptimizedTemplateContent.cs
- SchemeSettingElement.cs
- ICspAsymmetricAlgorithm.cs
- DocumentPaginator.cs
- EncodingDataItem.cs
- RijndaelManagedTransform.cs
- Label.cs
- MetafileHeaderWmf.cs
- TemplateControl.cs
- WindowsPen.cs
- NetCodeGroup.cs
- UndoEngine.cs
- WebConfigurationHostFileChange.cs
- EdmError.cs
- PagePropertiesChangingEventArgs.cs
- SendMailErrorEventArgs.cs
- ObservableDictionary.cs
- ToolboxItemCollection.cs
- NumericPagerField.cs
- HitTestFilterBehavior.cs
- CommunicationException.cs
- IApplicationTrustManager.cs
- HtmlFormWrapper.cs
- SortKey.cs
- Preprocessor.cs
- OrderedHashRepartitionEnumerator.cs
- AttachedAnnotationChangedEventArgs.cs
- CompilerGeneratedAttribute.cs
- SortExpressionBuilder.cs
- MDIControlStrip.cs
- SettingsSection.cs
- UnhandledExceptionEventArgs.cs
- DataControlField.cs
- TransactionChannelFaultConverter.cs
- CssClassPropertyAttribute.cs
- OleAutBinder.cs
- EventDescriptorCollection.cs
- QueryableDataSourceHelper.cs
- HtmlControlPersistable.cs
- MarginCollapsingState.cs
- LifetimeServices.cs
- MatrixTransform3D.cs
- XmlSchemaObjectTable.cs
- TableSectionStyle.cs
- ConfigurationValues.cs
- RadialGradientBrush.cs
- ProcessProtocolHandler.cs
- Debug.cs
- HitTestFilterBehavior.cs
- OdbcConnectionPoolProviderInfo.cs
- ArgumentValidation.cs
- ContractBase.cs
- SHA384Managed.cs
- SqlException.cs
- WindowsListViewGroup.cs
- BaseTemplateBuildProvider.cs
- StrokeNodeEnumerator.cs
- FailedToStartupUIException.cs
- AttachedPropertiesService.cs
- ToolStripSeparatorRenderEventArgs.cs
- OleDbSchemaGuid.cs