/// <devdoc> /// </devdoc> internal void Dispose(bool disposing) { try { if (disposing) { //Dispose unmanaged and managed resources if (IsOpen) { Close(); } // This is probably unnecessary if (readHandle != null) { readHandle.Close(); readHandle = null; } if (writeHandle != null) { writeHandle.Close(); writeHandle = null; } } } finally { messageLibraries = null; this.boolFlags[Flag_disposed] = true; } }
public EventLogInternal(string logName, string machineName, string source, EventLog parent) { //look out for invalid log names if (logName == null) throw new ArgumentNullException("logName"); if (!ValidLogName(logName, true)) throw new ArgumentException(SR.GetString(SR.BadLogName)); if (!SyntaxCheck.CheckMachineName(machineName)) throw new ArgumentException(SR.GetString(SR.InvalidParameter, "machineName", machineName)); EventLogPermission permission = new EventLogPermission(EventLogPermissionAccess.Write, machineName); permission.Demand(); this.machineName = machineName; this.logName = logName; this.sourceName = source; readHandle = null; writeHandle = null; boolFlags[Flag_forwards] = true; this.parent = parent; }
private void Close(string currentMachineName) { EventLogPermission permission = new EventLogPermission(EventLogPermissionAccess.Write, currentMachineName); permission.Demand(); Debug.WriteLineIf(CompModSwitches.EventLog.TraceVerbose, "EventLog::Close"); //Trace("Close", "Closing the event log"); if (readHandle != null) { try { readHandle.Close(); } catch (IOException) { throw SharedUtils.CreateSafeWin32Exception(); } readHandle = null; //Trace("Close", "Closed read handle"); Debug.WriteLineIf(CompModSwitches.EventLog.TraceVerbose, "EventLog::Close: closed read handle"); } if (writeHandle != null) { try { writeHandle.Close(); } catch (IOException) { throw SharedUtils.CreateSafeWin32Exception(); } writeHandle = null; //Trace("Close", "Closed write handle"); Debug.WriteLineIf(CompModSwitches.EventLog.TraceVerbose, "EventLog::Close: closed write handle"); } if (boolFlags[Flag_monitoring]) StopRaisingEvents(/*currentMachineName,*/ GetLogName(currentMachineName)); if (messageLibraries != null) { foreach (SafeLibraryHandle handle in messageLibraries.Values) handle.Close(); messageLibraries = null; } boolFlags[Flag_sourceVerified] = false; }
private void OpenForRead(string currentMachineName) { Debug.WriteLineIf(CompModSwitches.EventLog.TraceVerbose, "EventLog::OpenForRead"); EventLogPermission permission = new EventLogPermission(EventLogPermissionAccess.Administer, currentMachineName); permission.Demand(); //Cannot allocate the readHandle if the object has been disposed, since finalization has been suppressed. if (this.boolFlags[Flag_disposed]) throw new ObjectDisposedException(GetType().Name); string logname = GetLogName(currentMachineName); if (logname == null || logname.Length==0) throw new ArgumentException(SR.GetString(SR.MissingLogProperty)); if (!EventLog.Exists(logname, currentMachineName) ) // do not open non-existing Log [[....]] throw new InvalidOperationException( SR.GetString(SR.LogDoesNotExists, logname, currentMachineName) ); //Check environment before calling api SharedUtils.CheckEnvironment(); // Clean up cache variables. // [[....]] The initilizing code is put here to guarantee, that first read of events // from log file will start by filling up the cache buffer. lastSeenEntry = 0; lastSeenPos = 0; bytesCached = 0; firstCachedEntry = -1; SafeEventLogReadHandle handle = SafeEventLogReadHandle.OpenEventLog(currentMachineName, logname); if (handle.IsInvalid) { Win32Exception e = null; if (Marshal.GetLastWin32Error() != 0) { e = SharedUtils.CreateSafeWin32Exception(); } throw new InvalidOperationException(SR.GetString(SR.CantOpenLog, logname.ToString(), currentMachineName), e); } readHandle = handle; }
public EventLogInternal(string logName, string machineName, string source, EventLog parent) { this.firstCachedEntry = -1; this.boolFlags = new BitVector32(); if (logName == null) { throw new ArgumentNullException("logName"); } if (!ValidLogName(logName, true)) { throw new ArgumentException(SR.GetString("BadLogName")); } if (!SyntaxCheck.CheckMachineName(machineName)) { throw new ArgumentException(SR.GetString("InvalidParameter", new object[] { "machineName", machineName })); } new EventLogPermission(EventLogPermissionAccess.Write, machineName).Demand(); this.machineName = machineName; this.logName = logName; this.sourceName = source; this.readHandle = null; this.writeHandle = null; this.boolFlags[2] = true; this.m_Parent = parent; }
internal void Dispose(bool disposing) { try { if (disposing) { if (this.IsOpen) { this.Close(); } if (this.readHandle != null) { this.readHandle.Close(); this.readHandle = null; } if (this.writeHandle != null) { this.writeHandle.Close(); this.writeHandle = null; } } } finally { this.messageLibraries = null; this.boolFlags[0x100] = true; } }
private void Close(string currentMachineName) { new EventLogPermission(EventLogPermissionAccess.Write, currentMachineName).Demand(); if (this.readHandle != null) { try { this.readHandle.Close(); } catch (IOException) { throw SharedUtils.CreateSafeWin32Exception(); } this.readHandle = null; } if (this.writeHandle != null) { try { this.writeHandle.Close(); } catch (IOException) { throw SharedUtils.CreateSafeWin32Exception(); } this.writeHandle = null; } if (this.boolFlags[8]) { this.StopRaisingEvents(this.GetLogName(currentMachineName)); } if (this.messageLibraries != null) { foreach (Microsoft.Win32.SafeHandles.SafeLibraryHandle handle in this.messageLibraries.Values) { handle.Close(); } this.messageLibraries = null; } this.boolFlags[0x200] = false; }
private void OpenForRead(string currentMachineName) { new EventLogPermission(EventLogPermissionAccess.Administer, currentMachineName).Demand(); if (this.boolFlags[0x100]) { throw new ObjectDisposedException(base.GetType().Name); } string logName = this.GetLogName(currentMachineName); if ((logName == null) || (logName.Length == 0)) { throw new ArgumentException(SR.GetString("MissingLogProperty")); } if (!Exists(logName, currentMachineName)) { throw new InvalidOperationException(SR.GetString("LogDoesNotExists", new object[] { logName, currentMachineName })); } SharedUtils.CheckEnvironment(); this.lastSeenEntry = 0; this.lastSeenPos = 0; this.bytesCached = 0; this.firstCachedEntry = -1; this.readHandle = SafeEventLogReadHandle.OpenEventLog(currentMachineName, logName); if (this.readHandle.IsInvalid) { Win32Exception innerException = null; if (Marshal.GetLastWin32Error() != 0) { innerException = SharedUtils.CreateSafeWin32Exception(); } throw new InvalidOperationException(SR.GetString("CantOpenLog", new object[] { logName.ToString(), currentMachineName }), innerException); } }