mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-22 22:29:28 +02:00
71 lines
1.3 KiB
ObjectPascal
71 lines
1.3 KiB
ObjectPascal
unit lws2tcpip;
|
|
|
|
{$mode delphi}
|
|
|
|
interface
|
|
|
|
uses
|
|
WinSock2;
|
|
|
|
const
|
|
ws2tcpip = 'ws2_32.dll';
|
|
|
|
AI_PASSIVE = $1;
|
|
AI_CANONNAME = $2;
|
|
AI_NUMERICHOST = $4;
|
|
|
|
type
|
|
LPADDRINFO = ^addrinfo;
|
|
addrinfo = record
|
|
ai_flags: Integer;
|
|
ai_family: Integer;
|
|
ai_socktype: Integer;
|
|
ai_protocol: Integer;
|
|
ai_addrlen: size_t;
|
|
ai_canonname: PChar;
|
|
ai_addr: PSockAddr;
|
|
ai_next: LPADDRINFO;
|
|
end;
|
|
TAddrInfo = addrinfo;
|
|
PAddrInfo = LPADDRINFO;
|
|
|
|
function getaddrinfo(nodename, servname: PChar; hints: PAddrInfo; var res: PAddrInfo): Integer; stdcall;
|
|
procedure freeaddrinfo(ai: PAddrInfo); stdcall;
|
|
|
|
implementation
|
|
|
|
uses
|
|
dynlibs;
|
|
|
|
type
|
|
TGetAddrInfoFunc = function (nodename, servname: PChar; hints: PAddrInfo; var res: PAddrInfo): Integer; stdcall;
|
|
TFreeAddrInfoProc = procedure (ai: PAddrInfo); stdcall;
|
|
|
|
var
|
|
_lib: TLibHandle;
|
|
_getaddrinfo: TGetAddrInfoFunc;
|
|
_freeaddrinfo: TFreeAddrInfoProc;
|
|
|
|
function getaddrinfo(nodename, servname: PChar; hints: PAddrInfo;
|
|
var res: PAddrInfo): Integer; stdcall;
|
|
begin
|
|
_getaddrinfo(nodename, servname, hints, res);
|
|
end;
|
|
|
|
procedure freeaddrinfo(ai: PAddrInfo); stdcall;
|
|
begin
|
|
|
|
end;
|
|
|
|
initialization
|
|
_lib := LoadLibrary(ws2tcpip);
|
|
_getaddrinfo := GetProcedureAddress(_lib, 'getaddrinfo');
|
|
_freeaddrinfo := GetProcedureAddress(_lib, 'freeaddrinfo');
|
|
|
|
finalization
|
|
UnloadLibrary(_lib);
|
|
|
|
|
|
end.
|
|
|