Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / Net / System / Net / NetworkInformation / SystemIPInterfaceStatistics.cs / 1 / SystemIPInterfaceStatistics.cs
///
/// Provides support for ip configuation information and statistics.
///
///
namespace System.Net.NetworkInformation {
using System.Net.Sockets;
using System;
using System.ComponentModel;
/// IP statistics
internal class SystemIPv4InterfaceStatistics:IPv4InterfaceStatistics {
MibIfRow ifRow = new MibIfRow();
private SystemIPv4InterfaceStatistics(){ }
internal SystemIPv4InterfaceStatistics(long index){
GetIfEntry(index);
}
public override long OutputQueueLength{get {return ifRow.dwOutQLen;}}
public override long BytesSent{get {return ifRow.dwOutOctets;}}
public override long BytesReceived{get {return ifRow.dwInOctets;}}
public override long UnicastPacketsSent{get {return ifRow.dwOutUcastPkts;}}
public override long UnicastPacketsReceived{get { return ifRow.dwInUcastPkts;}}
public override long NonUnicastPacketsSent{get { return ifRow.dwOutNUcastPkts;}}
public override long NonUnicastPacketsReceived{get { return ifRow.dwInNUcastPkts;}}
public override long IncomingPacketsDiscarded{get { return ifRow.dwInDiscards;}}
public override long OutgoingPacketsDiscarded{get { return ifRow.dwOutDiscards;}}
public override long IncomingPacketsWithErrors{get { return ifRow.dwInErrors;}}
public override long OutgoingPacketsWithErrors{get { return ifRow.dwOutErrors;}}
public override long IncomingUnknownProtocolPackets{get { return ifRow.dwInUnknownProtos;}}
internal long Mtu{get { return ifRow.dwMtu;}}
internal OperationalStatus OperationalStatus{
get{
switch (ifRow.operStatus) {
case OldOperationalStatus.NonOperational:
return OperationalStatus.Down;
case OldOperationalStatus.Unreachable:
return OperationalStatus.Down;
case OldOperationalStatus.Disconnected:
return OperationalStatus.Dormant;
case OldOperationalStatus.Connecting:
return OperationalStatus.Dormant;
case OldOperationalStatus.Connected:
return OperationalStatus.Up;
case OldOperationalStatus.Operational:
return OperationalStatus.Up;
}
//state unknow
return OperationalStatus.Unknown;
}
}
internal long Speed{get { return ifRow.dwSpeed;}}
//This method is used to get information for ipv4 specific interfaces
//we should only call this the first time one of the properties
//are accessed.
void GetIfEntry(long index) {
if (index == 0 )
return;
ifRow.dwIndex = (uint)index;
uint result = UnsafeNetInfoNativeMethods.GetIfEntry(ref ifRow);
if (result != IpHelperErrors.Success) {
throw new NetworkInformationException((int)result);
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
///
/// Provides support for ip configuation information and statistics.
///
///
namespace System.Net.NetworkInformation {
using System.Net.Sockets;
using System;
using System.ComponentModel;
/// IP statistics
internal class SystemIPv4InterfaceStatistics:IPv4InterfaceStatistics {
MibIfRow ifRow = new MibIfRow();
private SystemIPv4InterfaceStatistics(){ }
internal SystemIPv4InterfaceStatistics(long index){
GetIfEntry(index);
}
public override long OutputQueueLength{get {return ifRow.dwOutQLen;}}
public override long BytesSent{get {return ifRow.dwOutOctets;}}
public override long BytesReceived{get {return ifRow.dwInOctets;}}
public override long UnicastPacketsSent{get {return ifRow.dwOutUcastPkts;}}
public override long UnicastPacketsReceived{get { return ifRow.dwInUcastPkts;}}
public override long NonUnicastPacketsSent{get { return ifRow.dwOutNUcastPkts;}}
public override long NonUnicastPacketsReceived{get { return ifRow.dwInNUcastPkts;}}
public override long IncomingPacketsDiscarded{get { return ifRow.dwInDiscards;}}
public override long OutgoingPacketsDiscarded{get { return ifRow.dwOutDiscards;}}
public override long IncomingPacketsWithErrors{get { return ifRow.dwInErrors;}}
public override long OutgoingPacketsWithErrors{get { return ifRow.dwOutErrors;}}
public override long IncomingUnknownProtocolPackets{get { return ifRow.dwInUnknownProtos;}}
internal long Mtu{get { return ifRow.dwMtu;}}
internal OperationalStatus OperationalStatus{
get{
switch (ifRow.operStatus) {
case OldOperationalStatus.NonOperational:
return OperationalStatus.Down;
case OldOperationalStatus.Unreachable:
return OperationalStatus.Down;
case OldOperationalStatus.Disconnected:
return OperationalStatus.Dormant;
case OldOperationalStatus.Connecting:
return OperationalStatus.Dormant;
case OldOperationalStatus.Connected:
return OperationalStatus.Up;
case OldOperationalStatus.Operational:
return OperationalStatus.Up;
}
//state unknow
return OperationalStatus.Unknown;
}
}
internal long Speed{get { return ifRow.dwSpeed;}}
//This method is used to get information for ipv4 specific interfaces
//we should only call this the first time one of the properties
//are accessed.
void GetIfEntry(long index) {
if (index == 0 )
return;
ifRow.dwIndex = (uint)index;
uint result = UnsafeNetInfoNativeMethods.GetIfEntry(ref ifRow);
if (result != IpHelperErrors.Success) {
throw new NetworkInformationException((int)result);
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ListViewItemCollectionEditor.cs
- DocumentPageViewAutomationPeer.cs
- WebScriptEnablingElement.cs
- MenuBase.cs
- NameHandler.cs
- IsolationInterop.cs
- AutomationPatternInfo.cs
- AudioBase.cs
- _ContextAwareResult.cs
- OleDbConnection.cs
- QueueProcessor.cs
- HttpConfigurationSystem.cs
- RadioButtonFlatAdapter.cs
- Logging.cs
- DataRelationCollection.cs
- DynamicMethod.cs
- DataListItem.cs
- BoundingRectTracker.cs
- XmlUtil.cs
- QilLoop.cs
- RowParagraph.cs
- HebrewNumber.cs
- GACIdentityPermission.cs
- AutomationPattern.cs
- RenderTargetBitmap.cs
- FreezableOperations.cs
- UserMapPath.cs
- Visitor.cs
- ParameterInfo.cs
- ListSortDescription.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- WebBrowsableAttribute.cs
- EdmComplexPropertyAttribute.cs
- UnmanagedMemoryStreamWrapper.cs
- DataGridViewCellParsingEventArgs.cs
- PolicyUnit.cs
- CompModHelpers.cs
- StructuralCache.cs
- StaticFileHandler.cs
- FontStretches.cs
- DeleteIndexBinder.cs
- SerializationObjectManager.cs
- NetCodeGroup.cs
- SourceItem.cs
- KeyTimeConverter.cs
- _ConnectStream.cs
- _Semaphore.cs
- SingletonInstanceContextProvider.cs
- DynamicHyperLink.cs
- MaterializeFromAtom.cs
- AsymmetricSignatureDeformatter.cs
- Range.cs
- CellConstantDomain.cs
- VisualTreeUtils.cs
- StoryFragments.cs
- AnnotationService.cs
- XMLUtil.cs
- LinqDataSourceStatusEventArgs.cs
- GridViewColumnCollectionChangedEventArgs.cs
- TextParagraphView.cs
- TextTreeDeleteContentUndoUnit.cs
- RtfToXamlReader.cs
- BaseConfigurationRecord.cs
- OleDbInfoMessageEvent.cs
- SystemColorTracker.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- DCSafeHandle.cs
- RequestCacheValidator.cs
- DataContract.cs
- ComponentEditorForm.cs
- RangeValidator.cs
- KeyTime.cs
- WCFModelStrings.Designer.cs
- VectorAnimation.cs
- TemplateControl.cs
- NativeCppClassAttribute.cs
- RsaSecurityTokenParameters.cs
- WorkflowRuntimeEndpoint.cs
- Comparer.cs
- ScriptingScriptResourceHandlerSection.cs
- DataGridViewColumnDesignTimeVisibleAttribute.cs
- ResourcePermissionBaseEntry.cs
- OrderedDictionary.cs
- XmlObjectSerializerWriteContext.cs
- ReversePositionQuery.cs
- FixedSOMElement.cs
- WebSysDefaultValueAttribute.cs
- TypeSystemProvider.cs
- ConstraintStruct.cs
- AmbientProperties.cs
- CodeTypeReference.cs
- PathFigureCollection.cs
- Currency.cs
- PositiveTimeSpanValidator.cs
- MemberDescriptor.cs
- SystemWebSectionGroup.cs
- BrowserCapabilitiesCompiler.cs
- ResolveMatchesCD1.cs
- XmlNode.cs