Subversion Repositories userdetect2

Compare Revisions

Regard whitespace Rev 67 → Rev 68

/trunk/UserDetect2/Plugins/iphlp.pas
0,0 → 1,148
unit iphlp;
 
interface
 
uses
Windows;
 
const
MAX_INTERFACE_NAME_LEN = $100;
ERROR_SUCCESS = 0;
MAXLEN_IFDESCR = $100;
MAXLEN_PHYSADDR = 8;
 
MIB_IF_OPER_STATUS_NON_OPERATIONAL = 0 ;
MIB_IF_OPER_STATUS_UNREACHABLE = 1;
MIB_IF_OPER_STATUS_DISCONNECTED = 2;
MIB_IF_OPER_STATUS_CONNECTING = 3;
MIB_IF_OPER_STATUS_CONNECTED = 4;
MIB_IF_OPER_STATUS_OPERATIONAL = 5;
 
MIB_IF_TYPE_OTHER = 1;
MIB_IF_TYPE_ETHERNET = 6;
MIB_IF_TYPE_TOKENRING = 9;
MIB_IF_TYPE_FDDI = 15;
MIB_IF_TYPE_PPP = 23;
MIB_IF_TYPE_LOOPBACK = 24;
MIB_IF_TYPE_SLIP = 28;
 
MIB_IF_ADMIN_STATUS_UP = 1;
MIB_IF_ADMIN_STATUS_DOWN = 2;
MIB_IF_ADMIN_STATUS_TESTING = 3;
 
type
MIB_IFROW = Record
wszName: Array[0 .. (MAX_INTERFACE_NAME_LEN*2-1)] of char;
dwIndex: LongInt;
dwType: LongInt;
dwMtu: LongInt;
dwSpeed: LongInt;
dwPhysAddrLen: LongInt;
bPhysAddr: Array[0 .. (MAXLEN_PHYSADDR-1)] of Byte;
dwAdminStatus: LongInt;
dwOperStatus: LongInt;
dwLastChange: LongInt;
dwInOctets: LongInt;
dwInUcastPkts: LongInt;
dwInNUcastPkts: LongInt;
dwInDiscards: LongInt;
dwInErrors: LongInt;
dwInUnknownProtos: LongInt;
dwOutOctets: LongInt;
dwOutUcastPkts: LongInt;
dwOutNUcastPkts: LongInt;
dwOutDiscards: LongInt;
dwOutErrors: LongInt;
dwOutQLen: LongInt;
dwDescrLen: LongInt;
bDescr: Array[0 .. (MAXLEN_IFDESCR - 1)] of Char;
end;
 
const
MAX_HOSTNAME_LEN = 128;
MAX_DOMAIN_NAME_LEN = 128;
MAX_SCOPE_ID_LEN = 256;
 
MAX_ADAPTER_NAME_LENGTH = 256;
MAX_ADAPTER_DESCRIPTION_LENGTH = 128;
MAX_ADAPTER_ADDRESS_LENGTH = 8;
 
IPHelper = 'iphlpapi.dll';
 
type
PIPAddressString = ^TIPAddressString;
PIPMaskString = ^TIPAddressString;
TIPAddressString = record
_String: array[0..(4 * 4) - 1] of Char;
end;
TIPMaskString = TIPAddressString;
PIPAddrString = ^TIPAddrString;
TIPAddrString = packed record
Next: PIPAddrString;
IpAddress: TIPAddressString;
IpMask: TIPMaskString;
Context: DWORD;
end;
PFixedInfo = ^TFixedInfo;
TFixedInfo = packed record
HostName: array[0..MAX_HOSTNAME_LEN + 4 - 1] of Char;
DomainName: array[0..MAX_DOMAIN_NAME_LEN + 4 - 1] of Char;
CurrentDnsServer: PIPAddrString;
DnsServerList: TIPAddrString;
NodeType: UINT;
ScopeId: array[0..MAX_SCOPE_ID_LEN + 4 - 1] of Char;
EnableRouting,
EnableProxy,
EnableDns: UINT;
end;
 
IP_ADDRESS_STRING = record
S: array [0..15] of Char;
end;
IP_MASK_STRING = IP_ADDRESS_STRING;
PIP_MASK_STRING = ^IP_MASK_STRING;
 
PIP_ADDR_STRING = ^IP_ADDR_STRING;
IP_ADDR_STRING = record
Next: PIP_ADDR_STRING;
IpAddress: IP_ADDRESS_STRING;
IpMask: IP_MASK_STRING;
Context: DWORD;
end;
 
PIP_ADAPTER_INFO = ^IP_ADAPTER_INFO;
IP_ADAPTER_INFO = record
Next: PIP_ADAPTER_INFO;
ComboIndex: DWORD;
AdapterName: array [0..MAX_ADAPTER_NAME_LENGTH + 3] of Char;
Description: array [0..MAX_ADAPTER_DESCRIPTION_LENGTH + 3] of Char;
AddressLength: UINT;
Address: array [0..MAX_ADAPTER_ADDRESS_LENGTH - 1] of BYTE;
Index: DWORD;
Type_: UINT;
DhcpEnabled: UINT;
CurrentIpAddress: PIP_ADDR_STRING;
IpAddressList: IP_ADDR_STRING;
GatewayList: IP_ADDR_STRING;
DhcpServer: IP_ADDR_STRING;
HaveWins: BOOL;
PrimaryWinsServer: IP_ADDR_STRING;
SecondaryWinsServer: IP_ADDR_STRING;
LeaseObtained: Cardinal;
LeaseExpires: Cardinal;
end;
 
function GetAdaptersInfo(pAdapterInfo: PIP_ADAPTER_INFO; pOutBufLen: PULONG): DWORD; stdcall;
function GetNetworkParams(pFixedInfo: PFixedInfo; pOutBufLen: PULONG): DWORD; stdcall;
function SendArp(DestIP, SrcIP: ULONG; pMacAddr: PULONG; PhyAddrLen: PULONG) : DWORD; stdcall;
function GetIfTable(pIfTable: Pointer; var pdwSize: LongInt; bOrder: LongInt): LongInt; stdcall;
 
implementation
 
function GetAdaptersInfo; external IPHelper Name 'GetAdaptersInfo';
function GetNetworkParams; external IPHelper Name 'GetNetworkParams';
function SendArp; external IPHelper name 'SendARP';
function GetIfTable; external IPHelper Name 'GetIfTable';
 
end.