internal unsafe 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(System.SR.GetString("Perflib_Argument_EmptyInstanceName"), "InstanceName"); } this.m_counterSet = counterSetDefined; this.m_instName = instanceName; this.m_nativeInst = Microsoft.Win32.UnsafeNativeMethods.PerfCreateInstance(this.m_counterSet.m_provider.m_hProvider, ref this.m_counterSet.m_counterSet, this.m_instName, 0); int error = (this.m_nativeInst != null) ? 0 : Marshal.GetLastWin32Error(); if (this.m_nativeInst != null) { this.m_counters = new CounterSetInstanceCounterDataSet(this); } else { switch (error) { case 0x57: if (this.m_counterSet.m_instType == CounterSetInstanceType.Single) { throw new ArgumentException(System.SR.GetString("Perflib_Argument_InvalidInstance", new object[] { this.m_counterSet.m_counterSet }), "InstanceName"); } throw new Win32Exception(error); case 0xb7: throw new ArgumentException(System.SR.GetString("Perflib_Argument_InstanceAlreadyExists", new object[] { this.m_instName, this.m_counterSet.m_counterSet }), "InstanceName"); case 0x490: throw new InvalidOperationException(System.SR.GetString("Perflib_InvalidOperation_CounterSetNotInstalled", new object[] { this.m_counterSet.m_counterSet })); } throw new Win32Exception(error); } this.m_active = 1; }
private unsafe void Dispose(bool disposing) { if (disposing && (this.m_counters != null)) { this.m_counters.Dispose(); this.m_counters = null; } if (((this.m_nativeInst != null) && (Interlocked.Exchange(ref this.m_active, 0) != 0)) && (this.m_nativeInst != null)) { lock (this.m_counterSet) { if (this.m_counterSet.m_provider != null) { Microsoft.Win32.UnsafeNativeMethods.PerfDeleteInstance(this.m_counterSet.m_provider.m_hProvider, this.m_nativeInst); } this.m_nativeInst = null; } } }
internal unsafe 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(System.SR.GetString("Perflib_Argument_EmptyInstanceName"), "InstanceName"); } this.m_counterSet = counterSetDefined; this.m_instName = instanceName; this.m_nativeInst = Microsoft.Win32.UnsafeNativeMethods.PerfCreateInstance(this.m_counterSet.m_provider.m_hProvider, ref this.m_counterSet.m_counterSet, this.m_instName, 0); int error = (this.m_nativeInst != null) ? 0 : Marshal.GetLastWin32Error(); if (error == 0) { this.m_counters = new CounterSetInstanceCounterDataSet(this); } else { switch (error) { case 0x57: if (this.m_counterSet.m_instType == CounterSetInstanceType.Single) { throw new ArgumentException(System.SR.GetString("Perflib_Argument_InvalidInstance", new object[] { this.m_counterSet.m_counterSet }), "InstanceName"); } throw new Win32Exception(error); case 0xb7: throw new ArgumentException(System.SR.GetString("Perflib_Argument_InstanceAlreadyExists", new object[] { this.m_instName, this.m_counterSet.m_counterSet }), "InstanceName"); case 0x490: throw new InvalidOperationException(System.SR.GetString("Perflib_InvalidOperation_CounterSetNotInstalled", new object[] { this.m_counterSet.m_counterSet })); } throw new Win32Exception(error); } this.m_active = 1; }
private unsafe void Dispose(bool disposing) { if (disposing && (this.m_counters != null)) { this.m_counters.Dispose(); this.m_counters = null; } if (((this.m_nativeInst != null) && (Interlocked.Exchange(ref this.m_active, 0) != 0)) && (this.m_nativeInst != null)) { lock (this.m_counterSet) { if (this.m_counterSet.m_provider != null) { Microsoft.Win32.UnsafeNativeMethods.PerfDeleteInstance(this.m_counterSet.m_provider.m_hProvider, this.m_nativeInst); } this.m_nativeInst = null; } } }