Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / Net / System / Net / NetworkInformation / SystemIPv4InterfaceProperties.cs / 1 / SystemIPv4InterfaceProperties.cs
////// namespace System.Net.NetworkInformation { using System.Net; using System.Net.Sockets; using System; using System.Runtime.InteropServices; using System.Collections; using System.ComponentModel; using System.Security.Permissions; using Microsoft.Win32; internal class SystemIPv4InterfaceProperties:IPv4InterfaceProperties{ //these are only valid for ipv4 interfaces bool haveWins = false; bool dhcpEnabled = false; bool routingEnabled = false; bool autoConfigEnabled = false; bool autoConfigActive = false; uint index = 0; uint mtu = 0; //ipv4 addresses only GatewayIPAddressInformationCollection gatewayAddresses = null; IPAddressCollection dhcpAddresses = null; IPAddressCollection winsServerAddresses = null; internal IPAddressCollection dnsAddresses = null; /* // Consider removing. internal SystemIPv4InterfaceProperties(){ } */ internal SystemIPv4InterfaceProperties(FixedInfo fixedInfo, IpAdapterInfo ipAdapterInfo) { index = ipAdapterInfo.index; routingEnabled = fixedInfo.EnableRouting; dhcpEnabled = ipAdapterInfo.dhcpEnabled; haveWins = ipAdapterInfo.haveWins; gatewayAddresses = ipAdapterInfo.gatewayList.ToIPGatewayAddressCollection(); dhcpAddresses = ipAdapterInfo.dhcpServer.ToIPAddressCollection(); IPAddressCollection primaryWinsServerAddresses = ipAdapterInfo.primaryWinsServer.ToIPAddressCollection(); IPAddressCollection secondaryWinsServerAddresses = ipAdapterInfo.secondaryWinsServer.ToIPAddressCollection(); //concat the winsserver addresses winsServerAddresses = new IPAddressCollection(); foreach (IPAddress address in primaryWinsServerAddresses){ winsServerAddresses.InternalAdd(address); } foreach (IPAddress address in secondaryWinsServerAddresses){ winsServerAddresses.InternalAdd(address); } SystemIPv4InterfaceStatistics s = new SystemIPv4InterfaceStatistics(index); mtu = (uint)s.Mtu; if(ComNetOS.IsWin2K){ GetPerAdapterInfo(ipAdapterInfo.index); } else{ dnsAddresses = fixedInfo.DnsAddresses; } } internal IPAddressCollection DnsAddresses{ get { return dnsAddresses; } } /// /// Provides support for ip configuation information and statistics. /// Only valid for Ipv4 Uses WINS for name resolution. public override bool UsesWins{get {return haveWins;}} public override bool IsDhcpEnabled{ get { return dhcpEnabled; } } public override bool IsForwardingEnabled{get {return routingEnabled;}} //proto ///Auto configuration of an ipv4 address for a client /// on a network where a DHCP server /// isn't available. public override bool IsAutomaticPrivateAddressingEnabled{ get{ return autoConfigEnabled; } } // proto public override bool IsAutomaticPrivateAddressingActive{ get{ return autoConfigActive; } } ///Specifies the Maximum transmission unit in bytes. Uses GetIFEntry. //We cache this to be consistent across all platforms public override int Mtu{ get { return (int) mtu; } } public override int Index{ get { return (int) index; } } ///IP Address of the default gateway. internal GatewayIPAddressInformationCollection GetGatewayAddresses(){ return gatewayAddresses; } ///IP address of the DHCP sever. internal IPAddressCollection GetDhcpServerAddresses(){ return dhcpAddresses; } ///IP addresses of the WINS servers. internal IPAddressCollection GetWinsServersAddresses(){ return winsServerAddresses; } private void GetPerAdapterInfo(uint index) { if (index != 0){ uint size = 0; SafeLocalFree buffer = null; uint result = UnsafeNetInfoNativeMethods.GetPerAdapterInfo(index,SafeLocalFree.Zero,ref size); while (result == IpHelperErrors.ErrorBufferOverflow) { try { //now we allocate the buffer and read the network parameters. buffer = SafeLocalFree.LocalAlloc((int)size); result = UnsafeNetInfoNativeMethods.GetPerAdapterInfo(index,buffer,ref size); if ( result == IpHelperErrors.Success ) { IpPerAdapterInfo ipPerAdapterInfo = (IpPerAdapterInfo)Marshal.PtrToStructure(buffer.DangerousGetHandle(),typeof(IpPerAdapterInfo)); autoConfigEnabled = ipPerAdapterInfo.autoconfigEnabled; autoConfigActive = ipPerAdapterInfo.autoconfigActive; //get dnsAddresses dnsAddresses = ipPerAdapterInfo.dnsServerList.ToIPAddressCollection(); } } finally { if(dnsAddresses == null){ dnsAddresses = new IPAddressCollection(); } if (buffer != null) buffer.Close(); } } if(dnsAddresses == null){ dnsAddresses = new IPAddressCollection(); } 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. ////// namespace System.Net.NetworkInformation { using System.Net; using System.Net.Sockets; using System; using System.Runtime.InteropServices; using System.Collections; using System.ComponentModel; using System.Security.Permissions; using Microsoft.Win32; internal class SystemIPv4InterfaceProperties:IPv4InterfaceProperties{ //these are only valid for ipv4 interfaces bool haveWins = false; bool dhcpEnabled = false; bool routingEnabled = false; bool autoConfigEnabled = false; bool autoConfigActive = false; uint index = 0; uint mtu = 0; //ipv4 addresses only GatewayIPAddressInformationCollection gatewayAddresses = null; IPAddressCollection dhcpAddresses = null; IPAddressCollection winsServerAddresses = null; internal IPAddressCollection dnsAddresses = null; /* // Consider removing. internal SystemIPv4InterfaceProperties(){ } */ internal SystemIPv4InterfaceProperties(FixedInfo fixedInfo, IpAdapterInfo ipAdapterInfo) { index = ipAdapterInfo.index; routingEnabled = fixedInfo.EnableRouting; dhcpEnabled = ipAdapterInfo.dhcpEnabled; haveWins = ipAdapterInfo.haveWins; gatewayAddresses = ipAdapterInfo.gatewayList.ToIPGatewayAddressCollection(); dhcpAddresses = ipAdapterInfo.dhcpServer.ToIPAddressCollection(); IPAddressCollection primaryWinsServerAddresses = ipAdapterInfo.primaryWinsServer.ToIPAddressCollection(); IPAddressCollection secondaryWinsServerAddresses = ipAdapterInfo.secondaryWinsServer.ToIPAddressCollection(); //concat the winsserver addresses winsServerAddresses = new IPAddressCollection(); foreach (IPAddress address in primaryWinsServerAddresses){ winsServerAddresses.InternalAdd(address); } foreach (IPAddress address in secondaryWinsServerAddresses){ winsServerAddresses.InternalAdd(address); } SystemIPv4InterfaceStatistics s = new SystemIPv4InterfaceStatistics(index); mtu = (uint)s.Mtu; if(ComNetOS.IsWin2K){ GetPerAdapterInfo(ipAdapterInfo.index); } else{ dnsAddresses = fixedInfo.DnsAddresses; } } internal IPAddressCollection DnsAddresses{ get { return dnsAddresses; } } /// /// Provides support for ip configuation information and statistics. /// Only valid for Ipv4 Uses WINS for name resolution. public override bool UsesWins{get {return haveWins;}} public override bool IsDhcpEnabled{ get { return dhcpEnabled; } } public override bool IsForwardingEnabled{get {return routingEnabled;}} //proto ///Auto configuration of an ipv4 address for a client /// on a network where a DHCP server /// isn't available. public override bool IsAutomaticPrivateAddressingEnabled{ get{ return autoConfigEnabled; } } // proto public override bool IsAutomaticPrivateAddressingActive{ get{ return autoConfigActive; } } ///Specifies the Maximum transmission unit in bytes. Uses GetIFEntry. //We cache this to be consistent across all platforms public override int Mtu{ get { return (int) mtu; } } public override int Index{ get { return (int) index; } } ///IP Address of the default gateway. internal GatewayIPAddressInformationCollection GetGatewayAddresses(){ return gatewayAddresses; } ///IP address of the DHCP sever. internal IPAddressCollection GetDhcpServerAddresses(){ return dhcpAddresses; } ///IP addresses of the WINS servers. internal IPAddressCollection GetWinsServersAddresses(){ return winsServerAddresses; } private void GetPerAdapterInfo(uint index) { if (index != 0){ uint size = 0; SafeLocalFree buffer = null; uint result = UnsafeNetInfoNativeMethods.GetPerAdapterInfo(index,SafeLocalFree.Zero,ref size); while (result == IpHelperErrors.ErrorBufferOverflow) { try { //now we allocate the buffer and read the network parameters. buffer = SafeLocalFree.LocalAlloc((int)size); result = UnsafeNetInfoNativeMethods.GetPerAdapterInfo(index,buffer,ref size); if ( result == IpHelperErrors.Success ) { IpPerAdapterInfo ipPerAdapterInfo = (IpPerAdapterInfo)Marshal.PtrToStructure(buffer.DangerousGetHandle(),typeof(IpPerAdapterInfo)); autoConfigEnabled = ipPerAdapterInfo.autoconfigEnabled; autoConfigActive = ipPerAdapterInfo.autoconfigActive; //get dnsAddresses dnsAddresses = ipPerAdapterInfo.dnsServerList.ToIPAddressCollection(); } } finally { if(dnsAddresses == null){ dnsAddresses = new IPAddressCollection(); } if (buffer != null) buffer.Close(); } } if(dnsAddresses == null){ dnsAddresses = new IPAddressCollection(); } 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
- SudsParser.cs
- Model3DCollection.cs
- WorkItem.cs
- StringResourceManager.cs
- ArrayWithOffset.cs
- _TimerThread.cs
- DisplayNameAttribute.cs
- XamlInt32CollectionSerializer.cs
- HwndSource.cs
- GenericPrincipal.cs
- CacheMemory.cs
- ListViewItemMouseHoverEvent.cs
- MSAAEventDispatcher.cs
- TextMarkerSource.cs
- TextTreeRootNode.cs
- DesignTimeTemplateParser.cs
- MaskedTextBoxTextEditor.cs
- DataGridViewCellPaintingEventArgs.cs
- DataGridViewSortCompareEventArgs.cs
- XmlHierarchicalDataSourceView.cs
- LabelInfo.cs
- WindowsToolbarAsMenu.cs
- StorageRoot.cs
- Debug.cs
- UriSection.cs
- SmtpClient.cs
- WebBrowserNavigatingEventHandler.cs
- ByteStreamGeometryContext.cs
- AmbientValueAttribute.cs
- ADMembershipProvider.cs
- EventLevel.cs
- CompiledQueryCacheKey.cs
- NamespaceDecl.cs
- ParameterModifier.cs
- RepeaterItemEventArgs.cs
- OdbcConnectionString.cs
- CustomErrorCollection.cs
- SafeRightsManagementSessionHandle.cs
- ISAPIRuntime.cs
- Model3D.cs
- RepeatBehavior.cs
- OraclePermissionAttribute.cs
- WebBrowserNavigatingEventHandler.cs
- TemplateBuilder.cs
- TargetParameterCountException.cs
- Calendar.cs
- ChainOfResponsibility.cs
- TcpSocketManager.cs
- DefaultHttpHandler.cs
- ListBox.cs
- BrowserCapabilitiesFactory.cs
- ProjectionNode.cs
- ScriptResourceHandler.cs
- ZipIOCentralDirectoryBlock.cs
- FormsAuthenticationUser.cs
- SafeProcessHandle.cs
- TimeEnumHelper.cs
- ExpressionParser.cs
- SamlAssertionKeyIdentifierClause.cs
- ResourceKey.cs
- Rect3DConverter.cs
- Source.cs
- ISCIIEncoding.cs
- TileModeValidation.cs
- Operator.cs
- CommonObjectSecurity.cs
- clipboard.cs
- Application.cs
- GridSplitterAutomationPeer.cs
- Compress.cs
- RectAnimationUsingKeyFrames.cs
- UserControlCodeDomTreeGenerator.cs
- TextEvent.cs
- CompoundFileStorageReference.cs
- RtfFormatStack.cs
- RemoteDebugger.cs
- ColorInterpolationModeValidation.cs
- TransportSecurityProtocol.cs
- UpdatePanelControlTrigger.cs
- BufferBuilder.cs
- HttpListenerException.cs
- ObjectStateEntryDbDataRecord.cs
- SqlCacheDependency.cs
- ArraySet.cs
- ConfigXmlElement.cs
- XmlName.cs
- PropertySegmentSerializationProvider.cs
- XmlWrappingReader.cs
- SerialErrors.cs
- ComEventsMethod.cs
- XamlTemplateSerializer.cs
- RelatedEnd.cs
- IERequestCache.cs
- TrueReadOnlyCollection.cs
- ThreadPool.cs
- UnauthorizedWebPart.cs
- ClaimTypeElement.cs
- MultipleViewPatternIdentifiers.cs
- DTCTransactionManager.cs
- DragDeltaEventArgs.cs