示例#1
0
        private void FlushOldestEntry()
        {
            double             maxPassedTime = -10;
            DateTime           timeNow       = DateTime.Now;
            ProviderMetadataId keyToDelete   = null;

            //get the entry in the cache which was not accessed for the longest time.
            foreach (KeyValuePair <ProviderMetadataId, CacheItem> kvp in cache)
            {
                //the time difference (in ms) between the timeNow and the last used time of each entry
                TimeSpan timeDifference = timeNow.Subtract(kvp.Value.TheTime);

                //for the "unused" items (with ReferenceCount == 0)   -> can possible be deleted.
                if (timeDifference.TotalMilliseconds >= maxPassedTime)
                {
                    maxPassedTime = timeDifference.TotalMilliseconds;
                    keyToDelete   = kvp.Key;
                }
            }

            if (keyToDelete != null)
            {
                DeleteCacheEntry(keyToDelete);
            }
        }
示例#2
0
 public string GetOpcodeDisplayName(string ProviderName, EventLogHandle eventHandle)
 {
     lock (this) {
         ProviderMetadataId key = new ProviderMetadataId(ProviderName, CultureInfo.CurrentCulture);
         ProviderMetadata   pm  = GetProviderMetadata(key);
         return(NativeWrapper.EvtFormatMessageRenderName(pm.Handle, eventHandle, UnsafeNativeMethods.EvtFormatMessageFlags.EvtFormatMessageOpcode));
     }
 }
 public IEnumerable <string> GetKeywordDisplayNames(string ProviderName, EventLogHandle eventHandle)
 {
     lock (this)
     {
         ProviderMetadataId key = new ProviderMetadataId(ProviderName, CultureInfo.CurrentCulture);
         return(NativeWrapper.EvtFormatMessageRenderKeywords(this.GetProviderMetadata(key).Handle, eventHandle, Microsoft.Win32.UnsafeNativeMethods.EvtFormatMessageFlags.EvtFormatMessageKeyword));
     }
 }
 public string GetTaskDisplayName(string ProviderName, EventLogHandle eventHandle)
 {
     lock (this)
     {
         ProviderMetadataId key = new ProviderMetadataId(ProviderName, CultureInfo.CurrentCulture);
         return(NativeWrapper.EvtFormatMessageRenderName(this.GetProviderMetadata(key).Handle, eventHandle, Microsoft.Win32.UnsafeNativeMethods.EvtFormatMessageFlags.EvtFormatMessageTask));
     }
 }
 private void DeleteCacheEntry(ProviderMetadataId key)
 {
     if (this.IsProviderinCache(key))
     {
         CacheItem item = this.cache[key];
         this.cache.Remove(key);
         item.ProviderMetadata.Dispose();
     }
 }
 private void AddCacheEntry(ProviderMetadataId key, ProviderMetadata pm)
 {
     if (this.IsCacheFull())
     {
         this.FlushOldestEntry();
     }
     CacheItem item = new CacheItem(pm);
     this.cache.Add(key, item);
 }
 private void DeleteCacheEntry(ProviderMetadataId key)
 {
     if (this.IsProviderinCache(key))
     {
         CacheItem item = this.cache[key];
         this.cache.Remove(key);
         item.ProviderMetadata.Dispose();
     }
 }
        private void AddCacheEntry(ProviderMetadataId key, ProviderMetadata pm)
        {
            if (this.IsCacheFull())
            {
                this.FlushOldestEntry();
            }
            CacheItem item = new CacheItem(pm);

            this.cache.Add(key, item);
        }
示例#9
0
        private void AddCacheEntry(ProviderMetadataId key, ProviderMetadata pm)
        {
            if (IsCacheFull())
            {
                FlushOldestEntry();
            }

            CacheItem value = new CacheItem(pm);

            cache.Add(key, value);
            return;
        }
示例#10
0
 public string GetFormatDescription(string ProviderName, EventLogHandle eventHandle, string[] values)
 {
     lock (this) {
         ProviderMetadataId key = new ProviderMetadataId(ProviderName, CultureInfo.CurrentCulture);
         ProviderMetadata   pm  = GetProviderMetadata(key);
         try {
             return(NativeWrapper.EvtFormatMessageFormatDescription(pm.Handle, eventHandle, values));
         }
         catch (EventLogNotFoundException) {
             return(null);
         }
     }
 }
示例#11
0
        private void DeleteCacheEntry(ProviderMetadataId key)
        {
            if (!IsProviderinCache(key))
            {
                return;
            }

            CacheItem value = cache[key];

            cache.Remove(key);

            value.ProviderMetadata.Dispose();
        }
        private ProviderMetadata GetProviderMetadata(ProviderMetadataId key)
        {
            if (!IsProviderinCache(key))
            {
                ProviderMetadata pm;
                try
                {
                    pm = new ProviderMetadata(key.ProviderName, _session, key.TheCultureInfo, _logfile);
                }
                catch (EventLogNotFoundException)
                {
                    pm = new ProviderMetadata(key.ProviderName, _session, key.TheCultureInfo);
                }

                AddCacheEntry(key, pm);
                return(pm);
            }
            else
            {
                CacheItem cacheItem = _cache[key];

                ProviderMetadata pm = cacheItem.ProviderMetadata;

                //
                // check Provider metadata to be sure it's hasn't been
                // uninstalled since last time it was used.
                //

                try
                {
                    pm.CheckReleased();
                    UpdateCacheValueInfoForHit(cacheItem);
                }
                catch (EventLogException)
                {
                    DeleteCacheEntry(key);
                    try
                    {
                        pm = new ProviderMetadata(key.ProviderName, _session, key.TheCultureInfo, _logfile);
                    }
                    catch (EventLogNotFoundException)
                    {
                        pm = new ProviderMetadata(key.ProviderName, _session, key.TheCultureInfo);
                    }

                    AddCacheEntry(key, pm);
                }

                return(pm);
            }
        }
示例#13
0
        public string GetFormatDescription(string ProviderName, EventLogHandle eventHandle)
        {
            lock (this) {
                ProviderMetadataId key = new ProviderMetadataId(ProviderName, CultureInfo.CurrentCulture);

                try {
                    ProviderMetadata pm = GetProviderMetadata(key);
                    return(NativeWrapper.EvtFormatMessageRenderName(pm.Handle, eventHandle, UnsafeNativeMethods.EvtFormatMessageFlags.EvtFormatMessageEvent));
                }
                catch (EventLogNotFoundException) {
                    return(null);
                }
            }
        }
示例#14
0
            public override bool Equals(object obj)
            {
                ProviderMetadataId rhs = obj as ProviderMetadataId;

                if (rhs == null)
                {
                    return(false);
                }
                if (this.providerName.Equals(rhs.providerName) && (cultureInfo == rhs.cultureInfo))
                {
                    return(true);
                }
                return(false);
            }
 public string GetFormatDescription(string ProviderName, EventLogHandle eventHandle)
 {
     string str;
     lock (this)
     {
         ProviderMetadataId key = new ProviderMetadataId(ProviderName, CultureInfo.CurrentCulture);
         try
         {
             str = NativeWrapper.EvtFormatMessageRenderName(this.GetProviderMetadata(key).Handle, eventHandle, Microsoft.Win32.UnsafeNativeMethods.EvtFormatMessageFlags.EvtFormatMessageEvent);
         }
         catch (EventLogNotFoundException)
         {
             str = null;
         }
     }
     return str;
 }
        public string GetFormatDescription(string ProviderName, EventLogHandle eventHandle)
        {
            string str;

            lock (this)
            {
                ProviderMetadataId key = new ProviderMetadataId(ProviderName, CultureInfo.CurrentCulture);
                try
                {
                    str = NativeWrapper.EvtFormatMessageRenderName(this.GetProviderMetadata(key).Handle, eventHandle, Microsoft.Win32.UnsafeNativeMethods.EvtFormatMessageFlags.EvtFormatMessageEvent);
                }
                catch (EventLogNotFoundException)
                {
                    str = null;
                }
            }
            return(str);
        }
        private void FlushOldestEntry()
        {
            double             totalMilliseconds = -10.0;
            DateTime           now = DateTime.Now;
            ProviderMetadataId key = null;

            foreach (KeyValuePair <ProviderMetadataId, CacheItem> pair in this.cache)
            {
                TimeSpan span = now.Subtract(pair.Value.TheTime);
                if (span.TotalMilliseconds >= totalMilliseconds)
                {
                    totalMilliseconds = span.TotalMilliseconds;
                    key = pair.Key;
                }
            }
            if (key != null)
            {
                this.DeleteCacheEntry(key);
            }
        }
        private ProviderMetadata GetProviderMetadata(ProviderMetadataId key)
        {
            if (!this.IsProviderinCache(key))
            {
                ProviderMetadata metadata;
                try
                {
                    metadata = new ProviderMetadata(key.ProviderName, this.session, key.TheCultureInfo, this.logfile);
                }
                catch (EventLogNotFoundException)
                {
                    metadata = new ProviderMetadata(key.ProviderName, this.session, key.TheCultureInfo);
                }
                this.AddCacheEntry(key, metadata);
                return(metadata);
            }
            CacheItem        cacheItem        = this.cache[key];
            ProviderMetadata providerMetadata = cacheItem.ProviderMetadata;

            try
            {
                providerMetadata.CheckReleased();
                UpdateCacheValueInfoForHit(cacheItem);
            }
            catch (EventLogException)
            {
                this.DeleteCacheEntry(key);
                try
                {
                    providerMetadata = new ProviderMetadata(key.ProviderName, this.session, key.TheCultureInfo, this.logfile);
                }
                catch (EventLogNotFoundException)
                {
                    providerMetadata = new ProviderMetadata(key.ProviderName, this.session, key.TheCultureInfo);
                }
                this.AddCacheEntry(key, providerMetadata);
            }
            return(providerMetadata);
        }
 public string GetLevelDisplayName(string ProviderName, [SecurityTreatAsSafe] EventLogHandle eventHandle)
 {
     lock (this)
     {
         ProviderMetadataId key = new ProviderMetadataId(ProviderName, CultureInfo.CurrentCulture);
         return NativeWrapper.EvtFormatMessageRenderName(this.GetProviderMetadata(key).Handle, eventHandle, UnsafeNativeMethods.EvtFormatMessageFlags.EvtFormatMessageLevel);
     }
 }
 private ProviderMetadata GetProviderMetadata(ProviderMetadataId key)
 {
     if (!this.IsProviderinCache(key))
     {
         ProviderMetadata metadata;
         try
         {
             metadata = new ProviderMetadata(key.ProviderName, this.session, key.TheCultureInfo, this.logfile);
         }
         catch (EventLogNotFoundException)
         {
             metadata = new ProviderMetadata(key.ProviderName, this.session, key.TheCultureInfo);
         }
         this.AddCacheEntry(key, metadata);
         return metadata;
     }
     CacheItem cacheItem = this.cache[key];
     ProviderMetadata providerMetadata = cacheItem.ProviderMetadata;
     try
     {
         providerMetadata.CheckReleased();
         UpdateCacheValueInfoForHit(cacheItem);
     }
     catch (EventLogException)
     {
         this.DeleteCacheEntry(key);
         try
         {
             providerMetadata = new ProviderMetadata(key.ProviderName, this.session, key.TheCultureInfo, this.logfile);
         }
         catch (EventLogNotFoundException)
         {
             providerMetadata = new ProviderMetadata(key.ProviderName, this.session, key.TheCultureInfo);
         }
         this.AddCacheEntry(key, providerMetadata);
     }
     return providerMetadata;
 }
 private bool IsProviderinCache(ProviderMetadataId key)
 {
     return _cache.ContainsKey(key);
 }
 private bool IsProviderinCache(ProviderMetadataId key)
 {
     return(this.cache.ContainsKey(key));
 }
        private void DeleteCacheEntry(ProviderMetadataId key)
        {
            if (!IsProviderinCache(key))
                return;

            CacheItem value = _cache[key];
            _cache.Remove(key);

            value.ProviderMetadata.Dispose();
        }
        private ProviderMetadata GetProviderMetadata(ProviderMetadataId key)
        {
            if (!IsProviderinCache(key))
            {
                ProviderMetadata pm;
                try
                {
                    pm = new ProviderMetadata(key.ProviderName, _session, key.TheCultureInfo, _logfile);
                }
                catch (EventLogNotFoundException)
                {
                    pm = new ProviderMetadata(key.ProviderName, _session, key.TheCultureInfo);
                }
                AddCacheEntry(key, pm);
                return pm;
            }
            else
            {
                CacheItem cacheItem = _cache[key];

                ProviderMetadata pm = cacheItem.ProviderMetadata;

                //
                // check Provider metadata to be sure it's hasn't been
                // uninstalled since last time it was used.
                //

                try
                {
                    pm.CheckReleased();
                    UpdateCacheValueInfoForHit(cacheItem);
                }
                catch (EventLogException)
                {
                    DeleteCacheEntry(key);
                    try
                    {
                        pm = new ProviderMetadata(key.ProviderName, _session, key.TheCultureInfo, _logfile);
                    }
                    catch (EventLogNotFoundException)
                    {
                        pm = new ProviderMetadata(key.ProviderName, _session, key.TheCultureInfo);
                    }
                    AddCacheEntry(key, pm);
                }

                return pm;
            }
        }
        private void AddCacheEntry(ProviderMetadataId key, ProviderMetadata pm)
        {
            if (IsCacheFull())
                FlushOldestEntry();

            CacheItem value = new CacheItem(pm);
            _cache.Add(key, value);
            return;
        }
        public string GetFormatDescription(string ProviderName, EventLogHandle eventHandle)
        {
            lock (this)
            {
                ProviderMetadataId key = new ProviderMetadataId(ProviderName, CultureInfo.CurrentCulture);

                try
                {
                    ProviderMetadata pm = GetProviderMetadata(key);
                    return NativeWrapper.EvtFormatMessageRenderName(pm.Handle, eventHandle, UnsafeNativeMethods.EvtFormatMessageFlags.EvtFormatMessageEvent);
                }
                catch (EventLogNotFoundException)
                {
                    return null;
                }
            }
        }
 public string GetFormatDescription(string ProviderName, EventLogHandle eventHandle, string[] values)
 {
     lock (this)
     {
         ProviderMetadataId key = new ProviderMetadataId(ProviderName, CultureInfo.CurrentCulture);
         ProviderMetadata pm = GetProviderMetadata(key);
         try
         {
             return NativeWrapper.EvtFormatMessageFormatDescription(pm.Handle, eventHandle, values);
         }
         catch (EventLogNotFoundException)
         {
             return null;
         }
     }
 }
 public string GetTaskDisplayName(string ProviderName, EventLogHandle eventHandle)
 {
     lock (this)
     {
         ProviderMetadataId key = new ProviderMetadataId(ProviderName, CultureInfo.CurrentCulture);
         ProviderMetadata pm = GetProviderMetadata(key);
         return NativeWrapper.EvtFormatMessageRenderName(pm.Handle, eventHandle, UnsafeNativeMethods.EvtFormatMessageFlags.EvtFormatMessageTask);
     }
 }
 public IEnumerable<string> GetKeywordDisplayNames(string ProviderName, EventLogHandle eventHandle)
 {
     lock (this)
     {
         ProviderMetadataId key = new ProviderMetadataId(ProviderName, CultureInfo.CurrentCulture);
         ProviderMetadata pm = GetProviderMetadata(key);
         return NativeWrapper.EvtFormatMessageRenderKeywords(pm.Handle, eventHandle, UnsafeNativeMethods.EvtFormatMessageFlags.EvtFormatMessageKeyword);
     }
 }
 public string GetOpcodeDisplayName(string ProviderName, EventLogHandle eventHandle)
 {
     lock (this)
     {
         ProviderMetadataId key = new ProviderMetadataId(ProviderName, CultureInfo.CurrentCulture);
         return NativeWrapper.EvtFormatMessageRenderName(this.GetProviderMetadata(key).Handle, eventHandle, Microsoft.Win32.UnsafeNativeMethods.EvtFormatMessageFlags.EvtFormatMessageOpcode);
     }
 }