Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / System / Diagnostics / PerformanceData / CounterSetInstance.cs / 1407647 / CounterSetInstance.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Diagnostics.PerformanceData {
using System;
using System.Threading;
using System.Runtime.InteropServices;
using System.ComponentModel;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Microsoft.Win32;
///
/// CounterSetInstance class maps to "Instace" in native performance counter implementation.
///
[System.Security.Permissions.HostProtection(MayLeakOnAbort = true)]
public sealed class CounterSetInstance : IDisposable {
internal CounterSet m_counterSet;
internal String m_instName;
private Int32 m_active;
private CounterSetInstanceCounterDataSet m_counters;
unsafe internal UnsafeNativeMethods.PerfCounterSetInstanceStruct * m_nativeInst;
//
//
//
//
//
//
//
//
[System.Security.SecurityCritical]
[SuppressMessage("Microsoft.Usage", "CA2208:InstantiateArgumentExceptionsCorrectly")]
internal CounterSetInstance(CounterSet counterSetDefined, String instanceName) {
if (counterSetDefined == null) {
throw new ArgumentNullException("counterSetDefined");
}
if (instanceName == null) {
throw new ArgumentNullException("InstanceName");
}
if (instanceName.Length == 0) {
throw new ArgumentException(SR.GetString(SR.Perflib_Argument_EmptyInstanceName), "InstanceName");
}
m_counterSet = counterSetDefined;
m_instName = instanceName;
unsafe {
m_nativeInst = UnsafeNativeMethods.PerfCreateInstance(
m_counterSet.m_provider.m_hProvider, ref m_counterSet.m_counterSet, m_instName, 0);
int Status = (int) ((m_nativeInst != null) ? UnsafeNativeMethods.ERROR_SUCCESS : Marshal.GetLastWin32Error());
if (m_nativeInst != null) {
m_counters = new CounterSetInstanceCounterDataSet(this);
}
else {
// ERROR_INVALID_PARAMETER,
// ERROR_NOT_FOUND (cannot find installed CounterSet),
// ERROR_ALREADY_EXISTS,
// ERROR_NOT_ENOUGH_MEMORY
switch (Status) {
case (int) UnsafeNativeMethods.ERROR_ALREADY_EXISTS:
throw new ArgumentException(SR.GetString(SR.Perflib_Argument_InstanceAlreadyExists, m_instName, m_counterSet.m_counterSet), "InstanceName");
case (int) UnsafeNativeMethods.ERROR_NOT_FOUND:
throw new InvalidOperationException( SR.GetString(SR.Perflib_InvalidOperation_CounterSetNotInstalled, m_counterSet.m_counterSet));
case (int) UnsafeNativeMethods.ERROR_INVALID_PARAMETER:
if (m_counterSet.m_instType == CounterSetInstanceType.Single) {
throw new ArgumentException(SR.GetString(SR.Perflib_Argument_InvalidInstance, m_counterSet.m_counterSet), "InstanceName");
}
else {
throw new Win32Exception(Status);
}
default:
throw new Win32Exception(Status);
}
}
}
m_active = 1;
}
//
//
//
[System.Security.SecurityCritical]
public void Dispose() {
Dispose(true);
GC.SuppressFinalize(this);
}
//
//
//
[System.Security.SecurityCritical]
~CounterSetInstance() {
Dispose(false);
}
//
//
//
//
//
[System.Security.SecurityCritical]
private void Dispose(bool disposing) {
if (disposing) {
if (m_counters != null) {
m_counters.Dispose();
m_counters = null;
}
}
unsafe {
if (m_nativeInst != null) {
if (Interlocked.Exchange(ref m_active, 0) != 0) {
if (m_nativeInst != null) {
lock(m_counterSet) {
if (m_counterSet.m_provider != null) {
uint Status = UnsafeNativeMethods.PerfDeleteInstance(m_counterSet.m_provider.m_hProvider, m_nativeInst);
}
m_nativeInst = null;
}
}
}
}
}
}
///
/// Access CounterSetInstanceCounterDataSet property. Developers can then use defined indexer to access
/// specific CounterData object to query/update raw counter data.
///
public CounterSetInstanceCounterDataSet Counters {
get { return m_counters; }
}
}
}
// 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
- UpdatePanelTrigger.cs
- HitTestDrawingContextWalker.cs
- ContainerSelectorGlyph.cs
- SerializationTrace.cs
- DataGridViewButtonColumn.cs
- DataGridViewSortCompareEventArgs.cs
- UnsafeNativeMethods.cs
- AdapterSwitches.cs
- UnsafeNativeMethodsPenimc.cs
- WindowsScrollBar.cs
- IteratorFilter.cs
- ConditionalAttribute.cs
- SizeChangedInfo.cs
- InputMethodStateTypeInfo.cs
- Panel.cs
- TraceHandlerErrorFormatter.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- HostProtectionPermission.cs
- Image.cs
- TreeViewHitTestInfo.cs
- StringResourceManager.cs
- EventSinkHelperWriter.cs
- RC2.cs
- ListViewDesigner.cs
- WindowsNonControl.cs
- XmlText.cs
- MenuItemStyle.cs
- GetPageNumberCompletedEventArgs.cs
- XPathNode.cs
- RelationshipManager.cs
- FixedNode.cs
- DuplicateWaitObjectException.cs
- PassportAuthenticationEventArgs.cs
- NumberFunctions.cs
- PageRouteHandler.cs
- MulticastIPAddressInformationCollection.cs
- ProgressBar.cs
- MarkupCompilePass2.cs
- TextTreeRootTextBlock.cs
- ConfigXmlWhitespace.cs
- TextTreeTextNode.cs
- Splitter.cs
- WebBrowserNavigatedEventHandler.cs
- coordinatorscratchpad.cs
- Vertex.cs
- ExpandoClass.cs
- ComPlusServiceHost.cs
- VersionUtil.cs
- DataSourceXmlSerializer.cs
- ValueOfAction.cs
- ContextMenuService.cs
- ChildrenQuery.cs
- JavaScriptString.cs
- wgx_exports.cs
- MetadataSerializer.cs
- SHA256Cng.cs
- ScriptingJsonSerializationSection.cs
- WebPartAddingEventArgs.cs
- OdbcException.cs
- Vector3DAnimationUsingKeyFrames.cs
- StorageEntityTypeMapping.cs
- ContentFilePart.cs
- ColorIndependentAnimationStorage.cs
- PasswordRecovery.cs
- SchemaTableColumn.cs
- MemoryMappedView.cs
- ApplicationSecurityManager.cs
- ProfileSettingsCollection.cs
- StringOutput.cs
- LinqExpressionNormalizer.cs
- DrawingBrush.cs
- NavigationWindow.cs
- DiscoveryDocumentSerializer.cs
- PasswordPropertyTextAttribute.cs
- MarkupExtensionSerializer.cs
- _FixedSizeReader.cs
- ServerValidateEventArgs.cs
- UpdatePanel.cs
- Authorization.cs
- ClickablePoint.cs
- AccessControlList.cs
- MonthChangedEventArgs.cs
- PersonalizablePropertyEntry.cs
- SendingRequestEventArgs.cs
- ImportContext.cs
- StoreAnnotationsMap.cs
- SynchronizedInputProviderWrapper.cs
- GPPOINTF.cs
- VerticalAlignConverter.cs
- ResourceProperty.cs
- HtmlElement.cs
- ToolStripMenuItem.cs
- StringHelper.cs
- Shape.cs
- PageThemeCodeDomTreeGenerator.cs
- GC.cs
- ThemeDictionaryExtension.cs
- Assembly.cs
- DocumentPage.cs
- BroadcastEventHelper.cs