Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / System / Diagnostics / Eventing / Reader / EventLogConfiguration.cs / 1305376 / EventLogConfiguration.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: EventLogConfiguration ** ** Purpose: ** This public class allows accessing static channel information and ** configures channel publishing and logging properties. An instance ** of this class is obtained from EventLogManagement class. ** ============================================================*/ using System.Collections.Generic; using System.Runtime.InteropServices; using System.Security.Permissions; using Microsoft.Win32; namespace System.Diagnostics.Eventing.Reader { ////// Log Type /// public enum EventLogType { Administrative = 0, Operational, Analytical, Debug } ////// Log Isolation /// public enum EventLogIsolation { Application = 0, System, Custom } ////// Log Mode /// public enum EventLogMode { Circular = 0, AutoBackup, Retain } ////// Provides access to static log information and configures /// log publishing and log file properties. /// [System.Security.Permissions.HostProtection(MayLeakOnAbort = true)] public class EventLogConfiguration : IDisposable { // // access to the data member reference is safe, while // invoking methods on it is marked SecurityCritical as appropriate. // private EventLogHandle handle = EventLogHandle.Zero; private EventLogSession session = null; private string channelName; public EventLogConfiguration(string logName) : this(logName, null) { } // marked as SecurityCritical because allocates SafeHandles. // marked as Safe because performs Demand check. [System.Security.SecurityCritical] public EventLogConfiguration(string logName, EventLogSession session) { EventLogPermissionHolder.GetEventLogPermission().Demand(); if (session == null) session = EventLogSession.GlobalSession; this.session = session; this.channelName = logName; handle = NativeWrapper.EvtOpenChannelConfig(this.session.Handle, this.channelName, 0); } public string LogName { get { return channelName; } } public EventLogType LogType { get { return (EventLogType)((uint)NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelConfigType)); } } public EventLogIsolation LogIsolation { get { return (EventLogIsolation)((uint)NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelConfigIsolation)); } } public bool IsEnabled { get { return (bool)NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelConfigEnabled); } set { NativeWrapper.EvtSetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelConfigEnabled, (object)value); } } public bool IsClassicLog { get { return (bool)NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelConfigClassicEventlog); } } public string SecurityDescriptor { get { return (string)NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelConfigAccess); } set { NativeWrapper.EvtSetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelConfigAccess, (object)value); } } public string LogFilePath { get { return (string)NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelLoggingConfigLogFilePath); } set { NativeWrapper.EvtSetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelLoggingConfigLogFilePath, (object)value); } } public long MaximumSizeInBytes { get { return (long)((ulong)NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelLoggingConfigMaxSize)); } set { NativeWrapper.EvtSetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelLoggingConfigMaxSize, (object)value); } } public EventLogMode LogMode { get { object nativeRetentionObject = NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelLoggingConfigRetention); object nativeAutoBackupObject = NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelLoggingConfigAutoBackup); bool nativeRetention = nativeRetentionObject == null ? false : (bool)nativeRetentionObject; bool nativeAutoBackup = nativeAutoBackupObject == null ? false : (bool)nativeAutoBackupObject; if (nativeAutoBackup) return EventLogMode.AutoBackup; if (nativeRetention) return EventLogMode.Retain; return EventLogMode.Circular; } set { switch (value) { case EventLogMode.Circular: NativeWrapper.EvtSetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelLoggingConfigAutoBackup, (object)false); NativeWrapper.EvtSetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelLoggingConfigRetention, (object)false); break; case EventLogMode.AutoBackup: NativeWrapper.EvtSetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelLoggingConfigAutoBackup, (object)true); NativeWrapper.EvtSetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelLoggingConfigRetention, (object)true); break; case EventLogMode.Retain: NativeWrapper.EvtSetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelLoggingConfigAutoBackup, (object)false); NativeWrapper.EvtSetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelLoggingConfigRetention, (object)true); break; } } } public string OwningProviderName { get { return (string)NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelConfigOwningPublisher); } } public IEnumerableProviderNames { get { return (string[])NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelPublisherList); } } public int? ProviderLevel { get { return (int?)((uint?)NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelPublishingConfigLevel)); } set { NativeWrapper.EvtSetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelPublishingConfigLevel, (object)value); } } public long? ProviderKeywords { get { return (long?)((ulong?)NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelPublishingConfigKeywords)); } set { NativeWrapper.EvtSetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelPublishingConfigKeywords, (object)value); } } public int? ProviderBufferSize { get { return (int?)((uint?)NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelPublishingConfigBufferSize)); } } public int? ProviderMinimumNumberOfBuffers { get { return (int?)((uint?)NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelPublishingConfigMinBuffers)); } } public int? ProviderMaximumNumberOfBuffers { get { return (int?)((uint?)NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelPublishingConfigMaxBuffers)); } } public int? ProviderLatency { get { return (int?)((uint?)NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelPublishingConfigLatency)); } } public Guid? ProviderControlGuid { get { return (Guid?)(NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelPublishingConfigControlGuid)); } } public void SaveChanges() { NativeWrapper.EvtSaveChannelConfig(this.handle, 0); } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } [System.Security.SecuritySafeCritical] protected virtual void Dispose(bool disposing) { if (disposing) { EventLogPermissionHolder.GetEventLogPermission().Demand(); } if ( handle != null && !handle.IsInvalid ) handle.Dispose(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: EventLogConfiguration ** ** Purpose: ** This public class allows accessing static channel information and ** configures channel publishing and logging properties. An instance ** of this class is obtained from EventLogManagement class. ** ============================================================*/ using System.Collections.Generic; using System.Runtime.InteropServices; using System.Security.Permissions; using Microsoft.Win32; namespace System.Diagnostics.Eventing.Reader { /// /// Log Type /// public enum EventLogType { Administrative = 0, Operational, Analytical, Debug } ////// Log Isolation /// public enum EventLogIsolation { Application = 0, System, Custom } ////// Log Mode /// public enum EventLogMode { Circular = 0, AutoBackup, Retain } ////// Provides access to static log information and configures /// log publishing and log file properties. /// [System.Security.Permissions.HostProtection(MayLeakOnAbort = true)] public class EventLogConfiguration : IDisposable { // // access to the data member reference is safe, while // invoking methods on it is marked SecurityCritical as appropriate. // private EventLogHandle handle = EventLogHandle.Zero; private EventLogSession session = null; private string channelName; public EventLogConfiguration(string logName) : this(logName, null) { } // marked as SecurityCritical because allocates SafeHandles. // marked as Safe because performs Demand check. [System.Security.SecurityCritical] public EventLogConfiguration(string logName, EventLogSession session) { EventLogPermissionHolder.GetEventLogPermission().Demand(); if (session == null) session = EventLogSession.GlobalSession; this.session = session; this.channelName = logName; handle = NativeWrapper.EvtOpenChannelConfig(this.session.Handle, this.channelName, 0); } public string LogName { get { return channelName; } } public EventLogType LogType { get { return (EventLogType)((uint)NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelConfigType)); } } public EventLogIsolation LogIsolation { get { return (EventLogIsolation)((uint)NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelConfigIsolation)); } } public bool IsEnabled { get { return (bool)NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelConfigEnabled); } set { NativeWrapper.EvtSetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelConfigEnabled, (object)value); } } public bool IsClassicLog { get { return (bool)NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelConfigClassicEventlog); } } public string SecurityDescriptor { get { return (string)NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelConfigAccess); } set { NativeWrapper.EvtSetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelConfigAccess, (object)value); } } public string LogFilePath { get { return (string)NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelLoggingConfigLogFilePath); } set { NativeWrapper.EvtSetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelLoggingConfigLogFilePath, (object)value); } } public long MaximumSizeInBytes { get { return (long)((ulong)NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelLoggingConfigMaxSize)); } set { NativeWrapper.EvtSetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelLoggingConfigMaxSize, (object)value); } } public EventLogMode LogMode { get { object nativeRetentionObject = NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelLoggingConfigRetention); object nativeAutoBackupObject = NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelLoggingConfigAutoBackup); bool nativeRetention = nativeRetentionObject == null ? false : (bool)nativeRetentionObject; bool nativeAutoBackup = nativeAutoBackupObject == null ? false : (bool)nativeAutoBackupObject; if (nativeAutoBackup) return EventLogMode.AutoBackup; if (nativeRetention) return EventLogMode.Retain; return EventLogMode.Circular; } set { switch (value) { case EventLogMode.Circular: NativeWrapper.EvtSetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelLoggingConfigAutoBackup, (object)false); NativeWrapper.EvtSetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelLoggingConfigRetention, (object)false); break; case EventLogMode.AutoBackup: NativeWrapper.EvtSetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelLoggingConfigAutoBackup, (object)true); NativeWrapper.EvtSetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelLoggingConfigRetention, (object)true); break; case EventLogMode.Retain: NativeWrapper.EvtSetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelLoggingConfigAutoBackup, (object)false); NativeWrapper.EvtSetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelLoggingConfigRetention, (object)true); break; } } } public string OwningProviderName { get { return (string)NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelConfigOwningPublisher); } } public IEnumerableProviderNames { get { return (string[])NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelPublisherList); } } public int? ProviderLevel { get { return (int?)((uint?)NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelPublishingConfigLevel)); } set { NativeWrapper.EvtSetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelPublishingConfigLevel, (object)value); } } public long? ProviderKeywords { get { return (long?)((ulong?)NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelPublishingConfigKeywords)); } set { NativeWrapper.EvtSetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelPublishingConfigKeywords, (object)value); } } public int? ProviderBufferSize { get { return (int?)((uint?)NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelPublishingConfigBufferSize)); } } public int? ProviderMinimumNumberOfBuffers { get { return (int?)((uint?)NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelPublishingConfigMinBuffers)); } } public int? ProviderMaximumNumberOfBuffers { get { return (int?)((uint?)NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelPublishingConfigMaxBuffers)); } } public int? ProviderLatency { get { return (int?)((uint?)NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelPublishingConfigLatency)); } } public Guid? ProviderControlGuid { get { return (Guid?)(NativeWrapper.EvtGetChannelConfigProperty(this.handle, UnsafeNativeMethods.EvtChannelConfigPropertyId.EvtChannelPublishingConfigControlGuid)); } } public void SaveChanges() { NativeWrapper.EvtSaveChannelConfig(this.handle, 0); } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } [System.Security.SecuritySafeCritical] protected virtual void Dispose(bool disposing) { if (disposing) { EventLogPermissionHolder.GetEventLogPermission().Demand(); } if ( handle != null && !handle.IsInvalid ) handle.Dispose(); } } } // 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
- UserNameSecurityTokenAuthenticator.cs
- ShellProvider.cs
- SiteMapDataSourceView.cs
- ParameterRetriever.cs
- login.cs
- Decoder.cs
- CacheDependency.cs
- NonBatchDirectoryCompiler.cs
- PackageRelationshipSelector.cs
- HitTestParameters3D.cs
- SimpleMailWebEventProvider.cs
- HttpResponse.cs
- DataContractSerializer.cs
- Int16Storage.cs
- AuthenticationSection.cs
- OneOfElement.cs
- VectorAnimationUsingKeyFrames.cs
- SmiConnection.cs
- TemplateContainer.cs
- TextEditorCharacters.cs
- ParameterCollection.cs
- LayoutManager.cs
- DateTimePicker.cs
- SortFieldComparer.cs
- ItemsPresenter.cs
- MergeFilterQuery.cs
- TextBox.cs
- CodeTypeMemberCollection.cs
- CharacterHit.cs
- DrawingVisualDrawingContext.cs
- LambdaCompiler.Statements.cs
- DataSourceControl.cs
- BaseDataList.cs
- CodeTypeMember.cs
- ProgramPublisher.cs
- WebPartConnectionsConnectVerb.cs
- Geometry.cs
- XamlReader.cs
- WebPartConnection.cs
- X509CertificateTrustedIssuerElementCollection.cs
- HtmlInputButton.cs
- MSAAEventDispatcher.cs
- DbSetClause.cs
- VectorCollection.cs
- TextDecorations.cs
- FunctionMappingTranslator.cs
- AliasGenerator.cs
- SqlAggregateChecker.cs
- QilIterator.cs
- SerializerProvider.cs
- CommaDelimitedStringAttributeCollectionConverter.cs
- TrustManager.cs
- ProcessModelSection.cs
- ViewStateException.cs
- SqlServer2KCompatibilityAnnotation.cs
- AlgoModule.cs
- WebPartAuthorizationEventArgs.cs
- TagNameToTypeMapper.cs
- TemplateDefinition.cs
- ChannelListenerBase.cs
- Formatter.cs
- XPathBinder.cs
- CannotUnloadAppDomainException.cs
- AppliedDeviceFiltersDialog.cs
- InstanceOwnerException.cs
- BindingBase.cs
- AppDomainEvidenceFactory.cs
- GcSettings.cs
- StickyNoteContentControl.cs
- ArgumentException.cs
- WindowsAuthenticationEventArgs.cs
- RefType.cs
- DefaultTextStore.cs
- ExpressionPrinter.cs
- ChtmlTextBoxAdapter.cs
- QilInvokeLateBound.cs
- ExceptionAggregator.cs
- RunInstallerAttribute.cs
- Query.cs
- WebAdminConfigurationHelper.cs
- SuppressMessageAttribute.cs
- XmlSchemaElement.cs
- DataGridItemCollection.cs
- TCPClient.cs
- EntityFrameworkVersions.cs
- PersonalizableTypeEntry.cs
- CommandDesigner.cs
- HashCodeCombiner.cs
- DataGridViewCellCancelEventArgs.cs
- UInt32Storage.cs
- JsonFormatWriterGenerator.cs
- SqlColumnizer.cs
- TypedDataSourceCodeGenerator.cs
- HttpCapabilitiesEvaluator.cs
- AudioStateChangedEventArgs.cs
- XmlWrappingReader.cs
- ProcessModule.cs
- ZipPackagePart.cs
- QilGeneratorEnv.cs
- XmlSerializationGeneratedCode.cs