能力值:
( LV2,RANK:10 )
|
-
-
2 楼
Hi,趙建新,您好!
GetAdaptersAddresses是獲得當前適配器的相關地址(應該是IP吧)
該函數包含了5個參數:
ULONG Family: 返回的IP類型(IPv4,IPv6或者全部)
DWORD Flags: 返回一個聯合的結構體
PVOID Reserved: 空
PIP_ADAPTER_ADDRESSES pAdapterAddresses: 一個指向的緩衝區,當該函數成功執行後,則這個緩衝區將包含得到的IP資訊
PULONG pOutBufLen:一個指向 pAdapterAddresses結構的指標.
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
二楼真好。。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
hi xiaohei nihao wo yao delphi de
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
nihao,不知道這樣有沒有解決你的問題,趙建新,附上可以參考的網址
//////////////////////////////////////////////////////////////
unit uWinGetAdaptersAddresses;
interface
uses Windows;
const
MAX_ADAPTER_ADDRESS_LENGTH = 8;
MAX_DHCPV6_DUID_LENGTH = 130;
//ifType Const
IF_TYPE_OTHER = 1;
IF_TYPE_ETHERNET_CSMACD = 6;
IF_TYPE_ISO88025_TOKENRING = 9;
IF_TYPE_PPP = 23;
IF_TYPE_SOFTWARE_LOOPBACK = 24;
IF_TYPE_ATM = 37;
IF_TYPE_IEEE80211 = 71;
IF_TYPE_TUNNEL = 131;
IF_TYPE_IEEE1394 = 144;
//OperStatus Const
IfOperStatusUp = 1;
IfOperStatusDown = 2;
IfOperStatusTesting = 3;
IfOperStatusUnknown = 4;
IfOperStatusDormant = 5;
IfOperStatusNotPresent = 6;
IfOperStatusLowerLayerDown = 7;
//ConnectionType Const
NET_IF_CONNECTION_DEDICATED = 1;
NET_IF_CONNECTION_PASSIVE = 2;
NET_IF_CONNECTION_DEMAND = 3;
NET_IF_CONNECTION_MAXIMUM = 4;
type
//http://msdn.microsoft.com/en-us/library/ms740496(VS.85).aspx
PSOCKADDR = ^SOCKADDR;
SOCKADDR = record
sa_family : ShortInt;
sa_data : array[0..13] of Char;
end;
//http://msdn.microsoft.com/en-us/library/ms740507(VS.85).aspx
PSOCKET_ADDRESS = ^SOCKET_ADDRESS;
SOCKET_ADDRESS = record
lpSocketaddr : PSOCKADDR;
iSockaddrLength : Integer;
end;
//http://msdn.microsoft.com/en-us/library/aa366281(VS.85).aspx
IP_PREFIX_ORIGIN = (
IpPrefixOriginOther = 0,
IpPrefixOriginManual,
IpPrefixOriginWellKnown,
IpPrefixOriginDhcp,
IpPrefixOriginRouterAdvertisement,
IpPrefixOriginUnchanged = 16
);
//http://msdn.microsoft.com/en-us/library/aa366283(VS.85).aspx
IP_SUFFIX_ORIGIN = (
IpSuffixOriginOther = 0,
IpSuffixOriginManual,
IpSuffixOriginWellKnown,
IpSuffixOriginDhcp,
IpSuffixOriginLinkLayerAddress,
IpSuffixOriginRandom,
IpSuffixOriginUnchanged = 16
);
//http://msdn.microsoft.com/en-us/library/aa366069(VS.85).aspx
IP_DAD_STATE = (
IpDadStateInvalid = 0,
IpDadStateTentative,
IpDadStateDuplicate,
IpDadStateDeprecated,
IpDadStatePreferred
);
//http://msdn.microsoft.com/en-us/library/aa366066(VS.85).aspx
PIP_ADAPTER_UNICAST_ADDRESS = ^IP_ADAPTER_UNICAST_ADDRESS;
IP_ADAPTER_UNICAST_ADDRESS = record
union: record
case Integer of
0: (Length: LongInt; Flags: DWORD);
end;
Next : PIP_ADAPTER_UNICAST_ADDRESS;
Address : SOCKET_ADDRESS;
PrefixOrigin : IP_PREFIX_ORIGIN;
SuffixOrigin : IP_SUFFIX_ORIGIN;
DadState : IP_DAD_STATE;
ValidLifeTime : LongInt;
PreferredLifeTime : LongInt;
LeaseLifeTime : LongInt;
OnLinkPrefixLength : array[0..7] of Integer;
end;
//http://msdn.microsoft.com/en-us/library/aa366059(VS.85).aspx
PIP_ADAPTER_ANYCAST_ADDRESS = ^IP_ADAPTER_ANYCAST_ADDRESS;
IP_ADAPTER_ANYCAST_ADDRESS = record
union: record
case Integer of
0: (Alignment: LongInt);
1: (Length: LongInt; Flags: DWORD);
end;
Next : PIP_ADAPTER_ANYCAST_ADDRESS;
Address : SOCKET_ADDRESS;
end;
//http://msdn.microsoft.com/en-us/library/aa366063(VS.85).aspx
PIP_ADAPTER_MULTICAST_ADDRESS = ^IP_ADAPTER_MULTICAST_ADDRESS;
IP_ADAPTER_MULTICAST_ADDRESS = record
union: record
case Integer of
0: (Alignment: LongInt);
1: (Length: LongInt; Flags: DWORD);
end;
Next : PIP_ADAPTER_MULTICAST_ADDRESS;
Address : SOCKET_ADDRESS;
end;
//http://msdn.microsoft.com/en-us/library/aa366060(VS.85).aspx
PIP_ADAPTER_DNS_SERVER_ADDRESS = ^IP_ADAPTER_DNS_SERVER_ADDRESS;
IP_ADAPTER_DNS_SERVER_ADDRESS = record
union: record
case Integer of
0: (Alignment: LongInt);
1: (Length: LongInt; Reserved: DWORD);
end;
Next : PIP_ADAPTER_DNS_SERVER_ADDRESS;
Address : SOCKET_ADDRESS;
end;
//http://msdn.microsoft.com/en-us/library/aa366065(VS.85).aspx
PIP_ADAPTER_PREFIX = ^IP_ADAPTER_PREFIX;
IP_ADAPTER_PREFIX = record
union: record
case Integer of
0: (Alignment: LongInt);
1: (Length: LongInt; Flags: DWORD);
end;
Next : PIP_ADAPTER_PREFIX;
Address : SOCKET_ADDRESS;
PrefixLength : LongInt;
end;
//http://msdn.microsoft.com/en-us/library/aa366058(VS.85).aspx
PIP_ADAPTER_ADDRESSES = ^IP_ADAPTER_ADDRESSES;
IP_ADAPTER_ADDRESSES = record
union: record
case Integer of
0: (Alignment: LongInt);
1: (Length: LongInt; IfIndex: DWORD);
end;
Next : PIP_ADAPTER_ADDRESSES;
AdapterName : PCHAR;
FirstUnicastAddress : PIP_ADAPTER_UNICAST_ADDRESS;
FirstAnycastAddress : PIP_ADAPTER_ANYCAST_ADDRESS;
FirstMulticastAddress : PIP_ADAPTER_MULTICAST_ADDRESS;
FirstDnsServerAddress : PIP_ADAPTER_DNS_SERVER_ADDRESS;
DnsSuffix : PWCHAR;
Description : PWCHAR;
FriendlyName : PWCHAR;
PhysicalAdress : array[0..MAX_ADAPTER_ADDRESS_LENGTH - 1] of BYTE;
PhysicalAdressLength : DWORD;
Flags : DWORD;
Mtu : DWORD;
IfType : DWORD;
// OperStatus : IF_OPER_STATUS;
Ipv6IfIndex : DWORD;
ZoneIndices : array[0..15] of DWORD;
FirstPrefix : PIP_ADAPTER_PREFIX;
TransmitLinkSpeed : Int64;
ReceiveLinkSpeed : Int64;
// FirstWinsServerAddress: PIP_ADAPTER_WINS_SERVER_ADDRESS_LH;
// FirstGatewayAddress : PIP_ADAPTER_GATEWAY_ADDRESS_LH;
Ipv4Metric : LongInt;
Ipv6Metric : LongInt;
// Luid : IF_LUID;
Dhcpv4Server : SOCKET_ADDRESS;
// CompartmentId : NET_IF_COMPARTMENT_ID; [This member is not currently supported and is reserved for future use]
// NetworkGuid : NET_IF_NETWORK_GUID;
// ConnectionType : NET_IF_CONNECTION_TYPE;
// TunnelType : TUNNEL_TYPE;
Dhcpv6Server : SOCKET_ADDRESS;
Dhcpv6ClientDuid : array[0..MAX_DHCPV6_DUID_LENGTH - 1] of BYTE;
Dhcpv6ClientDuidLength: LongInt;
Dhcpv6Iaid : LongInt;
// FirstDnsSuffix : PIP_ADAPTER_DNS_SUFFIX;
end;
PVOID = Pointer;
//http://msdn.microsoft.com/en-us/library/aa365915(VS.85).aspx
function GetAdaptersAddresses(Family: ULONG; Flags: DWORD; Reserved: PVOID;
pAdapterAddresses: PIP_ADAPTER_ADDRESSES;
pOutBufLen: PULONG): DWORD; stdcall;
external 'IPHLPAPI.DLL' name 'GetAdaptersAddresses';
implementation
end.
|
能力值:
( LV2,RANK:15 )
|
-
-
6 楼
楼上人真好
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
小黑哥,还有好些结构没有啊,譬如PIP_ADAPTER_GATEWAY_ADDRESS_LH
|
|
|