通过获取 MIB2Interface 实现,不过由于此源码在地址指针上用的很多,不是太建议对指针不熟悉的人观看
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace Demo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
[StructLayout(LayoutKind.Sequential)]
struct MIB_IF_ROW2 // sizeof(1352 + 4)
{
public long InterfaceLuid;
public int InterfaceIndex;
public byte[] GUID;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 0)] // 514
public string Alias;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 0)]
public string Description;
public int PhysicalAddressLength;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
public byte[] PhysicalAddress;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
public byte[] PermanentPhysicalAddress;
public int Mtu;
public int Type;
public int TunnelType;
public int MediaType;
public int PhysicalMediumType;
public int AccessType;
public int DirectionType;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
public byte[] InterfaceAndOperStatusFlags;
public int OperStatus;
public int AdminStatus;
public int MediaConnectState;
public byte[] NetworkGuid;
public int ConnectionType;
public long TransmitLinkSpeed;
public long ReceiveLinkSpeed;
public long InOctets;
public long InUcastPkts;
public long InNUcastPkts;
public long InDiscar