unit netioapi; interface uses Windows; type {$Z4} NDIS_MEDIUM = ( NdisMedium802_3, NdisMedium802_5, NdisMediumFddi, NdisMediumWan, NdisMediumLocalTalk, NdisMediumDix, // defined for convenience, not a real medium NdisMediumArcnetRaw, NdisMediumArcnet878_2, NdisMediumAtm, NdisMediumWirelessWan, NdisMediumIrda, NdisMediumBpc, NdisMediumCoWan, NdisMedium1394, NdisMediumInfiniBand, NdisMediumMax // Not a real medium, defined as an upper-bound ); NDIS_PHYSICAL_MEDIUM = ( NdisPhysicalMediumUnspecified, NdisPhysicalMediumWirelessLan, NdisPhysicalMediumCableModem, NdisPhysicalMediumPhoneLine, NdisPhysicalMediumPowerLine, NdisPhysicalMediumDSL, // includes ADSL and UADSL (G.Lite) NdisPhysicalMediumFibreChannel, NdisPhysicalMedium1394, NdisPhysicalMediumWirelessWan, NdisPhysicalMediumNative802_11, NdisPhysicalMediumBluetooth, NdisPhysicalMediumInfiniband, NdisPhysicalMediumWiMax, NdisPhysicalMediumUWB, NdisPhysicalMedium802_3, NdisPhysicalMedium802_5, NdisPhysicalMediumIrda, NdisPhysicalMediumWiredWAN, NdisPhysicalMediumWiredCoWan, NdisPhysicalMediumOther, NdisPhysicalMediumMax // Not a real physical type, defined as an upper-bound ); NET_IF_ACCESS_TYPE = ( NET_IF_ACCESS_LOOPBACK = 1, NET_IF_ACCESS_BROADCAST = 2, NET_IF_ACCESS_POINT_TO_POINT = 3, NET_IF_ACCESS_POINT_TO_MULTI_POINT = 4, NET_IF_ACCESS_MAXIMUM = 5 ); TUNNEL_TYPE = ( TUNNEL_TYPE_NONE = 0, TUNNEL_TYPE_OTHER = 1, TUNNEL_TYPE_DIRECT = 2, TUNNEL_TYPE_6TO4 = 11, TUNNEL_TYPE_ISATAP = 13, TUNNEL_TYPE_TEREDO = 14 ); NET_IF_DIRECTION_TYPE = ( NET_IF_DIRECTION_SENDRECEIVE, NET_IF_DIRECTION_SENDONLY, NET_IF_DIRECTION_RECEIVEONLY, NET_IF_DIRECTION_MAXIMUM ); NET_IF_ADMIN_STATUS = ( NET_IF_ADMIN_STATUS_UP = 1, NET_IF_ADMIN_STATUS_DOWN = 2, NET_IF_ADMIN_STATUS_TESTING = 3 ); IF_OPER_STATUS = ( IfOperStatusUp, IfOperStatusDown, IfOperStatusTesting, IfOperStatusUnknown, IfOperStatusDormant, IfOperStatusNotPresent, IfOperStatusLowerLayerDown ); TIfOperStatus = IF_OPER_STATUS; NET_IF_MEDIA_CONNECT_STATE = ( MediaConnectStateUnknown, MediaConnectStateConnected, MediaConnectStateDisconnected ); NET_IF_CONNECTION_TYPE = ( NET_IF_CONNECTION_DEDICATED = 1, NET_IF_CONNECTION_PASSIVE = 2, NET_IF_CONNECTION_DEMAND = 3, NET_IF_CONNECTION_MAXIMUM = 4 ); {$Z-} TInterfaceAndOperStatusFlags = ( HardwareInterface = $1, FilterInterface = $2, ConnectorPresent = $4, NotAuthenticated = $8, NotMediaConnected = $16, Paused = $32, LowPower = $64, EndPointInterface = $128 ); TInterfaceLuid = packed record Value: ULONG64; end; PMibIfRow2 = ^TMibIfRow2; TMibIfRow2 = record InterfaceLuid: TInterfaceLuid; InterfaceIndex: ULONG; InterfaceGuid: TGUID; Alias:array[0..256] of WCHAR; Description:array[0..256] of WCHAR; PhysicalAddressLength: ULONG; PhysicalAddress: array[0..31] of UCHAR; PermanentPhysicalAddress:array[0..31] of UCHAR; Mtu: ULONG; Typet: ULONG; TunnelType: TUNNEL_TYPE; MediaType: NDIS_MEDIUM; PhysicalMediumType: NDIS_PHYSICAL_MEDIUM; AccessType: NET_IF_ACCESS_TYPE; DirectionType: NET_IF_DIRECTION_TYPE; InterfaceAndOperStatusFlags: Byte; { TInterfaceAndOperStatusFlags } OperStatus: IF_OPER_STATUS; AdminStatus: NET_IF_ADMIN_STATUS; MediaConnectState: NET_IF_MEDIA_CONNECT_STATE; NetworkGuid: TGUID; ConnectionType: NET_IF_CONNECTION_TYPE; TransmitLinkSpeed: ULONG64; ReceiveLinkSpeed: ULONG64; InOctets: ULONG64; InUcastPkts: ULONG64; InNUcastPkts: ULONG64; InDiscards: ULONG64; InErrors: ULONG64; InUnknownProtos: ULONG64; InUcastOctets: ULONG64; InMulticastOctets: ULONG64; InBroadcastOctets: ULONG64; OutOctets: ULONG64; OutUcastPkts: ULONG64; OutNUcastPkts: ULONG64; OutDiscards: ULONG64; OutErrors: ULONG64; OutUcastOctets: ULONG64; OutMulticastOctets: ULONG64; OutBroadcastOctets: ULONG64; OutQLen: ULONG64; end; function GetIfEntry2(Mib: PMibIfRow2): DWORD; stdcall; external 'Iphlpapi.dll'; implementation end.