rendered paste body{
Delphi Winsock2 Static Unit by Aphex
http://www.iamaphex.cjb.net
unremote@knology.net
}
unit Winsock2;
interface
{$ALIGN OFF}
{$RANGECHECKS OFF}
{$WRITEABLECONST OFF}
uses Windows;
const
WINSOCK_VERSION = $0202;
WINSOCK2_DLL = 'WS2_32.DLL';
type
u_char = Byte;
u_short = Word;
u_int = DWORD;
u_long = DWORD;
TSocket = u_int;
WSAEVENT = THandle;
PWSAEVENT = ^WSAEVENT;
LPWSAEVENT = PWSAEVENT;
{$IFDEF UNICODE}
PMBChar = PWideChar;
{$ELSE}
PMBChar = PChar;
{$ENDIF}
const
FD_SETSIZE = 64;
type
PFDSet = ^TFDSet;
TFDSet = packed record
fd_count: u_int;
fd_array: array[0..FD_SETSIZE-1] of TSocket;
end;
PTimeVal = ^TTimeVal;
TTimeVal = packed record
tv_sec: Longint;
tv_usec: Longint;
end;
const
IOCPARM_MASK = $7f;
IOC_VOID = $20000000;
IOC_OUT = $40000000;
IOC_IN = $80000000;
IOC_INOUT = (IOC_IN or IOC_OUT);
FIONREAD = IOC_OUT or (SizeOf(Longint) shl 16) or (Ord('f') shl 8) or 127;
FIONBIO = IOC_IN or (SizeOf(Longint) shl 16) or (Ord('f') shl 8) or 126;
FIOASYNC = IOC_IN or (SizeOf(Longint) shl 16) or (Ord('f') shl 8) or 125;
SIOCSHIWAT = IOC_IN or (SizeOf(Longint) shl 16) or (Ord('s') shl 8);
SIOCGHIWAT = IOC_OUT or (SizeOf(Longint) shl 16) or (Ord('s') shl 8) or 1;
SIOCSLOWAT = IOC_IN or (SizeOf(Longint) shl 16) or (Ord('s') shl 8) or 2;
SIOCGLOWAT = IOC_OUT or (SizeOf(Longint) shl 16) or (Ord('s') shl 8) or 3;
SIOCATMARK = IOC_OUT or (SizeOf(Longint) shl 16) or (Ord('s') shl 8) or 7;
type
PHostEnt = ^THostEnt;
THostEnt = packed record
h_name: PChar;
h_aliases: ^PChar;
h_addrtype: Smallint;
h_length: Smallint;
case Byte of
0: (h_addr_list: ^PChar);
1: (h_addr: ^PChar);
end;
PNetEnt = ^TNetEnt;
TNetEnt = packed record
n_name: PChar;
n_aliases: ^PChar;
n_addrtype: Smallint;
n_net: u_long;
end;
PServEnt = ^TServEnt;
TServEnt = packed record
s_name: PChar;
s_aliases: ^PChar;
s_port: Smallint;
s_proto: PChar;
end;
PProtoEnt = ^TProtoEnt;
TProtoEnt = packed record
p_name: PChar;
p_aliases: ^Pchar;
p_proto: Smallint;
end;
const
IPPROTO_IP = 0;
IPPROTO_ICMP = 1;
IPPROTO_IGMP = 2;
IPPROTO_GGP = 3;
IPPROTO_TCP = 6;
IPPROTO_PUP = 12;
IPPROTO_UDP = 17;
IPPROTO_IDP = 22;
IPPROTO_IPV6 = 41;
IPPROTO_ND = 77;
IPPROTO_ICLFXBM = 78;
IPPROTO_RAW = 255;
IPPROTO_MAX = 256;
IPPORT_ECHO = 7;
IPPORT_DISCARD = 9;
IPPORT_SYSTAT = 11;
IPPORT_DAYTIME = 13;
IPPORT_NETSTAT = 15;
IPPORT_FTP = 21;
IPPORT_TELNET = 23;
IPPORT_SMTP = 25;
IPPORT_TIMESERVER = 37;
IPPORT_NAMESERVER = 42;
IPPORT_WHOIS = 43;
IPPORT_MTP = 57;
IPPORT_TFTP = 69;
IPPORT_RJE = 77;
IPPORT_FINGER = 79;
IPPORT_TTYLINK = 87;
IPPORT_SUPDUP = 95;
IPPORT_EXECSERVER = 512;
IPPORT_LOGINSERVER = 513;
IPPORT_CMDSERVER = 514;
IPPORT_EFSSERVER = 520;
IPPORT_BIFFUDP = 512;
IPPORT_WHOSERVER = 513;
IPPORT_ROUTESERVER = 520;
IPPORT_RESERVED =1024;
IMPLINK_IP = 155;
IMPLINK_LOWEXPER = 156;
IMPLINK_HIGHEXPER = 158;
TF_DISCONNECT = $01;
TF_REUSE_SOCKET = $02;
TF_WRITE_BEHIND = $04;
INVALID_SOCKET = TSocket(not(0));
SOCKET_ERROR = -1;
FROM_PROTOCOL_INFO = -1;
SOCK_STREAM = 1;
SOCK_DGRAM = 2;
SOCK_RAW = 3;
SOCK_RDM = 4;
SOCK_SEQPACKET = 5;
SO_DEBUG = $0001;
SO_ACCEPTCONN = $0002;
SO_REUSEADDR = $0004;
SO_KEEPALIVE = $0008;
SO_DONTROUTE = $0010;
SO_BROADCAST = $0020;
SO_USELOOPBACK = $0040;
SO_LINGER = $0080;
SO_OOBINLINE = $0100;
SO_DONTLINGER = not SO_LINGER;
SO_EXCLUSIVEADDRUSE = not SO_REUSEADDR;
SO_SNDBUF = $1001;
SO_RCVBUF = $1002;
SO_SNDLOWAT = $1003;
SO_RCVLOWAT = $1004;
SO_SNDTIMEO = $1005;
SO_RCVTIMEO = $1006;
SO_ERROR = $1007;
SO_TYPE = $1008;
SO_CONNDATA = $7000;
SO_CONNOPT = $7001;
SO_DISCDATA = $7002;
SO_DISCOPT = $7003;
SO_CONNDATALEN = $7004;
SO_CONNOPTLEN = $7005;
SO_DISCDATALEN = $7006;
SO_DISCOPTLEN = $7007;
SO_OPENTYPE = $7008;
SO_SYNCHRONOUS_ALERT = $10;
SO_SYNCHRONOUS_NONALERT = $20;
SO_MAXDG = $7009;
SO_MAXPATHDG = $700A;
SO_UPDATE_ACCEPT_CONTEXT = $700B;
SO_CONNECT_TIME = $700C;
TCP_NODELAY = $0001;
TCP_BSDURGENT = $7000;
SO_GROUP_ID = $2001;
SO_GROUP_PRIORITY = $2002;
SO_MAX_MSG_SIZE = $2003;
SO_Protocol_InfoA = $2004;
SO_Protocol_InfoW = $2005;
{$IFDEF UNICODE}
SO_Protocol_Info = SO_Protocol_InfoW;
{$ELSE}
SO_Protocol_Info = SO_Protocol_InfoA;
{$ENDIF}
PVD_CONFIG = $3001;
SO_CONDITIONAL_ACCEPT = $3002;
AF_UNSPEC = 0;
AF_UNIX = 1;
AF_INET = 2;
AF_IMPLINK = 3;
AF_PUP = 4;
AF_CHAOS = 5;
AF_IPX = 6;
AF_NS = AF_IPX;
AF_ISO = 7;
AF_OSI = AF_ISO;
AF_ECMA = 8;
AF_DATAKIT = 9;
AF_CCITT = 10;
AF_SNA = 11;
AF_DECnet = 12;
AF_DLI = 13;
AF_LAT = 14;
AF_HYLINK = 15;
AF_APPLETALK = 16;
AF_NETBIOS = 17;
AF_VOICEVIEW = 18;
AF_FIREFOX = 19;
AF_UNKNOWN1 = 20;
AF_BAN = 21;
AF_ATM = 22;
AF_INET6 = 23;
AF_CLUSTER = 24;
AF_12844 = 25;
AF_IRDA = 26;
AF_NETDES = 28;
AF_TCNPROCESS = 29;
AF_TCNMESSAGE = 30;
AF_ICLFXBM = 31;
AF_MAX = 32;
PF_UNSPEC = AF_UNSPEC;
PF_UNIX = AF_UNIX;
PF_INET = AF_INET;
PF_IMPLINK = AF_IMPLINK;
PF_PUP = AF_PUP;
PF_CHAOS = AF_CHAOS;
PF_NS = AF_NS;
PF_IPX = AF_IPX;
PF_ISO = AF_ISO;
PF_OSI = AF_OSI;
PF_ECMA = AF_ECMA;
PF_DATAKIT = AF_DATAKIT;
PF_CCITT = AF_CCITT;
PF_SNA = AF_SNA;
PF_DECnet = AF_DECnet;
PF_DLI = AF_DLI;
PF_LAT = AF_LAT;
PF_HYLINK = AF_HYLINK;
PF_APPLETALK = AF_APPLETALK;
PF_VOICEVIEW = AF_VOICEVIEW;
PF_FIREFOX = AF_FIREFOX;
PF_UNKNOWN1 = AF_UNKNOWN1;
PF_BAN = AF_BAN;
PF_ATM = AF_ATM;
PF_INET6 = AF_INET6;
PF_MAX = AF_MAX;
type
SunB = packed record
s_b1, s_b2, s_b3, s_b4: u_char;
end;
SunW = packed record
s_w1, s_w2: u_short;
end;
TInAddr = packed record
case integer of
0: (S_un_b: SunB);
1: (S_un_w: SunW);
2: (S_addr: u_long);
end;
PInAddr = ^TInAddr;
TSockAddrIn = packed record
case Integer of
0: (sin_family : u_short;
sin_port : u_short;
sin_addr : TInAddr;
sin_zero : array[0..7] of Char);
1: (sa_family : u_short;
sa_data : array[0..13] of Char)
end;
PSockAddrIn = ^TSockAddrIn;
TSockAddr = TSockAddrIn;
PSockAddr = ^TSockAddr;
SOCKADDR = TSockAddr;
SOCKADDR_IN = TSockAddrIn;
PSockProto = ^TSockProto;
TSockProto = packed record
sp_family : u_short;
sp_protocol : u_short;
end;
PLinger = ^TLinger;
TLinger = packed record
l_onoff: u_short;
l_linger: u_short;
end;
const
INADDR_ANY = $00000000;
INADDR_LOOPBACK = $7F000001;
INADDR_BROADCAST = $FFFFFFFF;
INADDR_NONE = $FFFFFFFF;
ADDR_ANY = INADDR_ANY;
SOL_SOCKET = $ffff;
MSG_OOB = $1;
MSG_PEEK = $2;
MSG_DONTROUTE = $4;
MSG_PARTIAL = $8000;
MSG_INTERRUPT = $10;
MSG_MAXIOVLEN = 16;
MAXGETHOSTSTRUCT = 1024;
SOMAXCONN = $7fffffff;
FD_READ_BIT = 0;
FD_WRITE_BIT = 1;
FD_OOB_BIT = 2;
FD_ACCEPT_BIT = 3;
FD_CONNECT_BIT = 4;
FD_CLOSE_BIT = 5;
FD_QOS_BIT = 6;
FD_GROUP_QOS_BIT = 7;
FD_ROUTING_INTERFACE_CHANGE_BIT = 8;
FD_ADDRESS_LIST_CHANGE_BIT = 9;
FD_MAX_EVENTS = 10;
FD_READ = (1 shl FD_READ_BIT);
FD_WRITE = (1 shl FD_WRITE_BIT);
FD_OOB = (1 shl FD_OOB_BIT);
FD_ACCEPT = (1 shl FD_ACCEPT_BIT);
FD_CONNECT = (1 shl FD_CONNECT_BIT);
FD_CLOSE = (1 shl FD_CLOSE_BIT);
FD_QOS = (1 shl FD_QOS_BIT);
FD_GROUP_QOS = (1 shl FD_GROUP_QOS_BIT);
FD_ROUTING_INTERFACE_CHANGE = (1 shl FD_ROUTING_INTERFACE_CHANGE_BIT);
FD_ADDRESS_LIST_CHANGE = (1 shl FD_ADDRESS_LIST_CHANGE_BIT);
FD_ALL_EVENTS = (1 shl FD_MAX_EVENTS) - 1;
WSABASEERR = 10000;
WSAEINTR = WSABASEERR+ 4;
WSAEBADF = WSABASEERR+ 9;
WSAEACCES = WSABASEERR+ 13;
WSAEFAULT = WSABASEERR+ 14;
WSAEINVAL = WSABASEERR+ 22;
WSAEMFILE = WSABASEERR+ 24;
WSAEWOULDBLOCK = WSABASEERR+ 35;
WSAEINPROGRESS = WSABASEERR+ 36;
WSAEALREADY = WSABASEERR+ 37;
WSAENOTSOCK = WSABASEERR+ 38;
WSAEDESTADDRREQ = WSABASEERR+ 39;
WSAEMSGSIZE = WSABASEERR+ 40;
WSAEPROTOTYPE = WSABASEERR+ 41;
WSAENOPROTOOPT = WSABASEERR+ 42;
WSAEPROTONOSUPPORT = WSABASEERR+ 43;
WSAESOCKTNOSUPPORT = WSABASEERR+ 44;
WSAEOPNOTSUPP = WSABASEERR+ 45;
WSAEPFNOSUPPORT = WSABASEERR+ 46;
WSAEAFNOSUPPORT = WSABASEERR+ 47;
WSAEADDRINUSE = WSABASEERR+ 48;
WSAEADDRNOTAVAIL = WSABASEERR+ 49;
WSAENETDOWN = WSABASEERR+ 50;
WSAENETUNREACH = WSABASEERR+ 51;
WSAENETRESET = WSABASEERR+ 52;
WSAECONNABORTED = WSABASEERR+ 53;
WSAECONNRESET = WSABASEERR+ 54;
WSAENOBUFS = WSABASEERR+ 55;
WSAEISCONN = WSABASEERR+ 56;
WSAENOTCONN = WSABASEERR+ 57;
WSAESHUTDOWN = WSABASEERR+ 58;
WSAETOOMANYREFS = WSABASEERR+ 59;
WSAETIMEDOUT = WSABASEERR+ 60;
WSAECONNREFUSED = WSABASEERR+ 61;
WSAELOOP = WSABASEERR+ 62;
WSAENAMETOOLONG = WSABASEERR+ 63;
WSAEHOSTDOWN = WSABASEERR+ 64;
WSAEHOSTUNREACH = WSABASEERR+ 65;
WSAENOTEMPTY = WSABASEERR+ 66;
WSAEPROCLIM = WSABASEERR+ 67;
WSAEUSERS = WSABASEERR+ 68;
WSAEDQUOT = WSABASEERR+ 69;
WSAESTALE = WSABASEERR+ 70;
WSAEREMOTE = WSABASEERR+ 71;
WSASYSNOTREADY = WSABASEERR+ 91;
WSAVERNOTSUPPORTED = WSABASEERR+ 92;
WSANOTINITIALISED = WSABASEERR+ 93;
WSAEDISCON = WSABASEERR+101;
WSAENOMORE = WSABASEERR+102;
WSAECANCELLED = WSABASEERR+103;
WSAEINVALIDPROCTABLE = WSABASEERR+104;
WSAEINVALIDPROVIDER = WSABASEERR+105;
WSAEPROVIDERFAILEDINIT = WSABASEERR+106;
WSASYSCALLFAILURE = WSABASEERR+107;
WSASERVICE_NOT_FOUND = WSABASEERR+108;
WSATYPE_NOT_FOUND = WSABASEERR+109;
WSA_E_NO_MORE = WSABASEERR+110;
WSA_E_CANCELLED = WSABASEERR+111;
WSAEREFUSED = WSABASEERR+112;
WSAHOST_NOT_FOUND = WSABASEERR+1001;
HOST_NOT_FOUND = WSAHOST_NOT_FOUND;
WSATRY_AGAIN = WSABASEERR+1002;
TRY_AGAIN = WSATRY_AGAIN;
WSANO_RECOVERY = WSABASEERR+1003;
NO_RECOVERY = WSANO_RECOVERY;
WSANO_DATA = WSABASEERR+1004;
NO_DATA = WSANO_DATA;
WSANO_ADDRESS = WSANO_DATA;
NO_ADDRESS = WSANO_ADDRESS;
WSA_QOS_RECEIVERS = WSABASEERR+1005;
WSA_QOS_SENDERS = WSABASEERR+1006;
WSA_QOS_NO_SENDERS = WSABASEERR+1007;
WSA_QOS_NO_RECEIVERS = WSABASEERR+1008;
WSA_QOS_REQUEST_CONFIRMED = WSABASEERR+1009;
WSA_QOS_ADMISSION_FAILURE = WSABASEERR+1010;
WSA_QOS_POLICY_FAILURE = WSABASEERR+1011;
WSA_QOS_BAD_STYLE = WSABASEERR+1012;
WSA_QOS_BAD_OBJECT = WSABASEERR+1013;
WSA_QOS_TRAFFIC_CTRL_ERROR = WSABASEERR+1014;
WSA_QOS_GENERIC_ERROR = WSABASEERR+1015;
WSA_QOS_ESERVICETYPE = WSABASEERR+1016;
WSA_QOS_EFLOWSPEC = WSABASEERR+1017;
WSA_QOS_EPROVSPECBUF = WSABASEERR+1018;
WSA_QOS_EFILTERSTYLE = WSABASEERR+1019;
WSA_QOS_EFILTERTYPE = WSABASEERR+1020;
WSA_QOS_EFILTERCOUNT = WSABASEERR+1021;
WSA_QOS_EOBJLENGTH = WSABASEERR+1022;
WSA_QOS_EFLOWCOUNT = WSABASEERR+1023;
WSA_QOS_EUNKOWNPSOBJ = WSABASEERR+1024;
WSA_QOS_EPOLICYOBJ = WSABASEERR+1025;
WSA_QOS_EFLOWDESC = WSABASEERR+1026;
WSA_QOS_EPSFLOWSPEC = WSABASEERR+1027;
WSA_QOS_EPSFILTERSPEC = WSABASEERR+1028;
WSA_QOS_ESDMODEOBJ = WSABASEERR+1029;
WSA_QOS_ESHAPERATEOBJ = WSABASEERR+1030;
WSA_QOS_RESERVED_PETYPE = WSABASEERR+1031;
WSA_IO_PENDING = ERROR_IO_PENDING;
WSA_IO_INCOMPLETE = ERROR_IO_INCOMPLETE;
WSA_INVALID_HANDLE = ERROR_INVALID_HANDLE;
WSA_INVALID_PARAMETER = ERROR_INVALID_PARAMETER;
WSA_NOT_ENOUGH_MEMORY = ERROR_NOT_ENOUGH_MEMORY;
WSA_OPERATION_ABORTED = ERROR_OPERATION_ABORTED;
WSA_INVALID_EVENT = WSAEVENT(nil);
WSA_MAXIMUM_WAIT_EVENTS = MAXIMUM_WAIT_OBJECTS;
WSA_WAIT_FAILED = $ffffffff;
WSA_WAIT_EVENT_0 = WAIT_OBJECT_0;
WSA_WAIT_IO_COMPLETION = WAIT_IO_COMPLETION;
WSA_WAIT_TIMEOUT = WAIT_TIMEOUT;
WSA_INFINITE = INFINITE;
WSADESCRIPTION_LEN = 256;
WSASYS_STATUS_LEN = 128;
type
PWSAData = ^TWSAData;
TWSAData = packed record
wVersion : Word;
wHighVersion : Word;
szDescription : Array[0..WSADESCRIPTION_LEN] of Char;
szSystemStatus : Array[0..WSASYS_STATUS_LEN] of Char;
iMaxSockets : Word;
iMaxUdpDg : Word;
lpVendorInfo : PChar;
end;
WSAOVERLAPPED = TOverlapped;
TWSAOverlapped = WSAOverlapped;
PWSAOverlapped = ^WSAOverlapped;
LPWSAOVERLAPPED = PWSAOverlapped;
WSABUF = packed record
len: U_LONG;
buf: PChar;
end;
PWSABUF = ^WSABUF;
LPWSABUF = PWSABUF;
TServiceType = LongInt;
TFlowSpec = packed record
TokenRate,
TokenBucketSize,
PeakBandwidth,
Latency,
DelayVariation : LongInt;
ServiceType : TServiceType;
MaxSduSize, MinimumPolicedSize : LongInt;
end;
PFlowSpec = ^TFLOWSPEC;
QOS = packed record
SendingFlowspec: TFlowSpec;
ReceivingFlowspec: TFlowSpec;
ProviderSpecific: WSABUF;
end;
TQualityOfService = QOS;
PQOS = ^QOS;
LPQOS = PQOS;
const
SERVICETYPE_NOTRAFFIC = $00000000;
SERVICETYPE_BESTEFFORT = $00000001;
SERVICETYPE_CONTROLLEDLOAD = $00000002;
SERVICETYPE_GUARANTEED = $00000003;
SERVICETYPE_NETWORK_UNAVAILABLE = $00000004;
SERVICETYPE_GENERAL_INFORMATION = $00000005;
SERVICETYPE_NOCHANGE = $00000006;
SERVICE_IMMEDIATE_TRAFFIC_CONTROL = $80000000;
CF_ACCEPT = $0000;
CF_REJECT = $0001;
CF_DEFER = $0002;
SD_RECEIVE = $00;
SD_SEND = $01;
SD_BOTH = $02;
SG_UNCONSTRAINED_GROUP = $01;
SG_CONSTRAINED_GROUP = $02;
type
GROUP = DWORD;
TWSANetworkEvents = record
lNetworkEvents: LongInt;
iErrorCode: Array[0..FD_MAX_EVENTS-1] of Integer;
end;
PWSANetworkEvents = ^TWSANetworkEvents;
LPWSANetworkEvents = PWSANetworkEvents;
TGUID = packed record
D1: LongInt;
D2: Word;
D3: Word;
D4: Array[0..7] of Byte;
end;
PGUID = ^TGUID;
LPGUID = PGUID;
const
MAX_PROTOCOL_CHAIN = 7;
BASE_PROTOCOL = 1;
LAYERED_PROTOCOL = 0;
WSAPROTOCOL_LEN = 255;
type
TWSAProtocolChain = record
ChainLen: Integer;
ChainEntries: Array[0..MAX_PROTOCOL_CHAIN-1] of LongInt;
end;
type
TWSAProtocol_InfoA = record
dwServiceFlags1: LongInt;
dwServiceFlags2: LongInt;
dwServiceFlags3: LongInt;
dwServiceFlags4: LongInt;
dwProviderFlags: LongInt;
ProviderId: TGUID;
dwCatalogEntryId: LongInt;
ProtocolChain: TWSAProtocolChain;
iVersion: Integer;
iAddressFamily: Integer;
iMaxSockAddr: Integer;
iMinSockAddr: Integer;
iSocketType: Integer;
iProtocol: Integer;
iProtocolMaxOffset: Integer;
iNetworkByteOrder: Integer;
iSecurityScheme: Integer;
dwMessageSize: LongInt;
dwProviderReserved: LongInt;
szProtocol: Array[0..WSAPROTOCOL_LEN+1-1] of Char;
end;
PWSAProtocol_InfoA = ^TWSAProtocol_InfoA;
LPWSAProtocol_InfoA = PWSAProtocol_InfoA;
TWSAProtocol_InfoW = record
dwServiceFlags1: LongInt;
dwServiceFlags2: LongInt;
dwServiceFlags3: LongInt;
dwServiceFlags4: LongInt;
dwProviderFlags: LongInt;
ProviderId: TGUID;
dwCatalogEntryId: LongInt;
ProtocolChain: TWSAProtocolChain;
iVersion: Integer;
iAddressFamily: Integer;
iMaxSockAddr: Integer;
iMinSockAddr: Integer;
iSocketType: Integer;
iProtocol: Integer;
iProtocolMaxOffset: Integer;
iNetworkByteOrder: Integer;
iSecurityScheme: Integer;
dwMessageSize: LongInt;
dwProviderReserved: LongInt;
szProtocol: Array[0..WSAPROTOCOL_LEN+1-1] of WideChar;
end;
PWSAProtocol_InfoW = ^TWSAProtocol_InfoW;
LPWSAProtocol_InfoW = PWSAProtocol_InfoW;
{$IFDEF UNICODE}
WSAProtocol_Info = TWSAProtocol_InfoW;
TWSAProtocol_Info = TWSAProtocol_InfoW;
PWSAProtocol_Info = PWSAProtocol_InfoW;
LPWSAProtocol_Info = PWSAProtocol_InfoW;
{$ELSE}
WSAProtocol_Info = TWSAProtocol_InfoA;
TWSAProtocol_Info = TWSAProtocol_InfoA;
PWSAProtocol_Info = PWSAProtocol_InfoA;
LPWSAProtocol_Info = PWSAProtocol_InfoA;
{$ENDIF}
const
PFL_MULTIPLE_PROTO_ENTRIES = $00000001;
PFL_RECOMMENDED_PROTO_ENTRY = $00000002;
PFL_HIDDEN = $00000004;
PFL_MATCHES_PROTOCOL_ZERO = $00000008;
XP1_CONNECTIONLESS = $00000001;
XP1_GUARANTEED_DELIVERY = $00000002;
XP1_GUARANTEED_ORDER = $00000004;
XP1_MESSAGE_ORIENTED = $00000008;
XP1_PSEUDO_STREAM = $00000010;
XP1_GRACEFUL_CLOSE = $00000020;
XP1_EXPEDITED_DATA = $00000040;
XP1_CONNECT_DATA = $00000080;
XP1_DISCONNECT_DATA = $00000100;
XP1_SUPPORT_BROADCAST = $00000200;
XP1_SUPPORT_MULTIPOINT = $00000400;
XP1_MULTIPOINT_CONTROL_PLANE = $00000800;
XP1_MULTIPOINT_DATA_PLANE = $00001000;
XP1_QOS_SUPPORTED = $00002000;
XP1_INTERRUPT = $00004000;
XP1_UNI_SEND = $00008000;
XP1_UNI_RECV = $00010000;
XP1_IFS_HANDLES = $00020000;
XP1_PARTIAL_MESSAGE = $00040000;
BIGENDIAN = $0000;
LITTLEENDIAN = $0001;
SECURITY_PROTOCOL_NONE = $0000;
JL_SENDER_ONLY = $01;
JL_RECEIVER_ONLY = $02;
JL_BOTH = $04;
WSA_FLAG_OVERLAPPED = $01;
WSA_FLAG_MULTIPOINT_C_ROOT = $02;
WSA_FLAG_MULTIPOINT_C_LEAF = $04;
WSA_FLAG_MULTIPOINT_D_ROOT = $08;
WSA_FLAG_MULTIPOINT_D_LEAF = $10;
IOC_UNIX = $00000000;
IOC_WS2 = $08000000;
IOC_PROTOCOL = $10000000;
IOC_VENDOR = $18000000;
SIO_ASSOCIATE_HANDLE = 1 or IOC_WS2 or IOC_IN;
SIO_ENABLE_CIRCULAR_QUEUEING = 2 or IOC_WS2 or IOC_VOID;
SIO_FIND_ROUTE = 3 or IOC_WS2 or IOC_OUT;
SIO_FLUSH = 4 or IOC_WS2 or IOC_VOID;
SIO_GET_BROADCAST_ADDRESS = 5 or IOC_WS2 or IOC_OUT;
SIO_GET_EXTENSION_FUNCTION_POINTER = 6 or IOC_WS2 or IOC_INOUT;
SIO_GET_QOS = 7 or IOC_WS2 or IOC_INOUT;
SIO_GET_GROUP_QOS = 8 or IOC_WS2 or IOC_INOUT;
SIO_MULTIPOINT_LOOPBACK = 9 or IOC_WS2 or IOC_IN;
SIO_MULTICAST_SCOPE = 10 or IOC_WS2 or IOC_IN;
SIO_SET_QOS = 11 or IOC_WS2 or IOC_IN;
SIO_SET_GROUP_QOS = 12 or IOC_WS2 or IOC_IN;
SIO_TRANSLATE_HANDLE = 13 or IOC_WS2 or IOC_INOUT;
SIO_ROUTING_INTERFACE_QUERY = 20 or IOC_WS2 or IOC_INOUT;
SIO_ROUTING_INTERFACE_CHANGE = 21 or IOC_WS2 or IOC_IN;
SIO_ADDRESS_LIST_QUERY = 22 or IOC_WS2 or IOC_OUT;
SIO_ADDRESS_LIST_CHANGE = 23 or IOC_WS2 or IOC_VOID;
SIO_QUERY_TARGET_PNP_HANDLE = 24 or IOC_WS2 or IOC_OUT;
SIO_ADDRESS_LIST_SORT = 25 or IOC_WS2 or IOC_INOUT;
TH_NETDEV = $00000001;
TH_TAPI = $00000002;
type
TBLOB = packed record
cbSize : U_LONG;
pBlobData : PBYTE;
end;
PBLOB = ^TBLOB;
const
SERVICE_MULTIPLE = $00000001;
NS_ALL = 0;
NS_SAP = 1;
NS_NDS = 2;
NS_PEER_BROWSE = 3;
NS_TCPIP_LOCAL = 10;
NS_TCPIP_HOSTS = 11;
NS_DNS = 12;
NS_NETBT = 13;
NS_WINS = 14;
NS_NBP = 20;
NS_MS = 30;
NS_STDA = 31;
NS_NTDS = 32;
NS_X500 = 40;
NS_NIS = 41;
NS_NISPLUS = 42;
NS_WRQ = 50;
NS_NETDES = 60;
RES_UNUSED_1 = $00000001;
RES_FLUSH_CACHE = $00000002;
RES_SERVICE = $00000004;
SERVICE_TYPE_VALUE_IPXPORTA = 'IpxSocket';
SERVICE_TYPE_VALUE_IPXPORTW : PWideChar = 'IpxSocket';
SERVICE_TYPE_VALUE_SAPIDA = 'SapId';
SERVICE_TYPE_VALUE_SAPIDW : PWideChar = 'SapId';
SERVICE_TYPE_VALUE_TCPPORTA = 'TcpPort';
SERVICE_TYPE_VALUE_TCPPORTW : PWideChar = 'TcpPort';
SERVICE_TYPE_VALUE_UDPPORTA = 'UdpPort';
SERVICE_TYPE_VALUE_UDPPORTW : PWideChar = 'UdpPort';
SERVICE_TYPE_VALUE_OBJECTIDA = 'ObjectId';
SERVICE_TYPE_VALUE_OBJECTIDW : PWideChar = 'ObjectId';
{$IFDEF UNICODE}
SERVICE_TYPE_VALUE_SAPID = SERVICE_TYPE_VALUE_SAPIDW;
SERVICE_TYPE_VALUE_TCPPORT = SERVICE_TYPE_VALUE_TCPPORTW;
SERVICE_TYPE_VALUE_UDPPORT = SERVICE_TYPE_VALUE_UDPPORTW;
SERVICE_TYPE_VALUE_OBJECTID = SERVICE_TYPE_VALUE_OBJECTIDW;
{$ELSE}
SERVICE_TYPE_VALUE_SAPID = SERVICE_TYPE_VALUE_SAPIDA;
SERVICE_TYPE_VALUE_TCPPORT = SERVICE_TYPE_VALUE_TCPPORTA;
SERVICE_TYPE_VALUE_UDPPORT = SERVICE_TYPE_VALUE_UDPPORTA;
SERVICE_TYPE_VALUE_OBJECTID = SERVICE_TYPE_VALUE_OBJECTIDA;
{$ENDIF}
type
SOCKET_ADDRESS = packed record
lpSockaddr : PSockAddr;
iSockaddrLength : Integer;
end;
PSOCKET_ADDRESS = ^SOCKET_ADDRESS;
CSADDR_INFO = packed record
LocalAddr, RemoteAddr : SOCKET_ADDRESS;
iSocketType, iProtocol : LongInt;
end;
PCSADDR_INFO = ^CSADDR_INFO;
LPCSADDR_INFO = ^CSADDR_INFO;
SOCKET_ADDRESS_LIST = packed record
iAddressCount : Integer;
Address : Array [0..0] of SOCKET_ADDRESS;
end;
LPSOCKET_ADDRESS_LIST = ^SOCKET_ADDRESS_LIST;
AFProtocols = record
iAddressFamily : Integer;
iProtocol : Integer;
end;
TAFProtocols = AFProtocols;
PAFProtocols = ^TAFProtocols;
TWSAEComparator = (COMP_EQUAL, COMP_NOTLESS);
TWSAVersion = record
dwVersion : DWORD;
ecHow : TWSAEComparator;
end;
PWSAVersion = ^TWSAVersion;
TWSAQuerySetA = packed record
dwSize : DWORD;
lpszServiceInstanceName : PChar;
lpServiceClassId : PGUID;
lpVersion : PWSAVERSION;
lpszComment : PChar;
dwNameSpace : DWORD;
lpNSProviderId : PGUID;
lpszContext : PChar;
dwNumberOfProtocols : DWORD;
lpafpProtocols : PAFProtocols;
lpszQueryString : PChar;
dwNumberOfCsAddrs : DWORD;
lpcsaBuffer : PCSADDR_INFO;
dwOutputFlags : DWORD;
lpBlob : PBLOB;
end;
PWSAQuerySetA = ^TWSAQuerySetA;
LPWSAQuerySetA = PWSAQuerySetA;
TWSAQuerySetW = packed record
dwSize : DWORD;
lpszServiceInstanceName : PWideChar;
lpServiceClassId : PGUID;
lpVersion : PWSAVERSION;
lpszComment : PWideChar;
dwNameSpace : DWORD;
lpNSProviderId : PGUID;
lpszContext : PWideChar;
dwNumberOfProtocols : DWORD;
lpafpProtocols : PAFProtocols;
lpszQueryString : PWideChar;
dwNumberOfCsAddrs : DWORD;
lpcsaBuffer : PCSADDR_INFO;
dwOutputFlags : DWORD;
lpBlob : PBLOB;
end;
PWSAQuerySetW = ^TWSAQuerySetW;
LPWSAQuerySetW = PWSAQuerySetW;
{$IFDEF UNICODE}
TWSAQuerySet = TWSAQuerySetA;
PWSAQuerySet = PWSAQuerySetW;
LPWSAQuerySet = PWSAQuerySetW;
{$ELSE}
TWSAQuerySet = TWSAQuerySetA;
PWSAQuerySet = PWSAQuerySetA;
LPWSAQuerySet = PWSAQuerySetA;
{$ENDIF}
const
LUP_DEEP = $0001;
LUP_CONTAINERS = $0002;
LUP_NOCONTAINERS = $0004;
LUP_NEAREST = $0008;
LUP_RETURN_NAME = $0010;
LUP_RETURN_TYPE = $0020;
LUP_RETURN_VERSION = $0040;
LUP_RETURN_COMMENT = $0080;
LUP_RETURN_ADDR = $0100;
LUP_RETURN_BLOB = $0200;
LUP_RETURN_ALIASES = $0400;
LUP_RETURN_QUERY_STRING = $0800;
LUP_RETURN_ALL = $0FF0;
LUP_RES_SERVICE = $8000;
LUP_FLUSHCACHE = $1000;
LUP_FLUSHPREVIOUS = $2000;
RESULT_IS_ALIAS = $0001;
type
TWSAeSetServiceOp = (RNRSERVICE_REGISTER, RNRSERVICE_DEREGISTER, RNRSERVICE_DELETE);
TWSANSClassInfoA = packed record
lpszName : PChar;
dwNameSpace : DWORD;
dwValueType : DWORD;
dwValueSize : DWORD;
lpValue : Pointer;
end;
PWSANSClassInfoA = ^TWSANSClassInfoA;
TWSANSClassInfoW = packed record
lpszName : PWideChar;
dwNameSpace : DWORD;
dwValueType : DWORD;
dwValueSize : DWORD;
lpValue : Pointer;
end;
PWSANSClassInfoW = ^TWSANSClassInfoW;
{$IFDEF UNICODE}
WSANSClassInfo = TWSANSClassInfoW;
TWSANSClassInfo = TWSANSClassInfoW;
PWSANSClassInfo = PWSANSClassInfoW;
LPWSANSClassInfo = PWSANSClassInfoW;
{$ELSE}
WSANSClassInfo = TWSANSClassInfoA;
TWSANSClassInfo = TWSANSClassInfoA;
PWSANSClassInfo = PWSANSClassInfoA;
LPWSANSClassInfo = PWSANSClassInfoA;
{$ENDIF}
TWSAServiceClassInfoA = packed record
lpServiceClassId : PGUID;
lpszServiceClassName : PChar;
dwCount : DWORD;
lpClassInfos : PWSANSClassInfoA;
end;
PWSAServiceClassInfoA = ^TWSAServiceClassInfoA;
LPWSAServiceClassInfoA = PWSAServiceClassInfoA;
TWSAServiceClassInfoW = packed record
lpServiceClassId : PGUID;
lpszServiceClassName : PWideChar;
dwCount : DWORD;
lpClassInfos : PWSANSClassInfoW;
end;
PWSAServiceClassInfoW = ^TWSAServiceClassInfoW;
LPWSAServiceClassInfoW = PWSAServiceClassInfoW;
{$IFDEF UNICODE}
WSAServiceClassInfo = TWSAServiceClassInfoW;
TWSAServiceClassInfo = TWSAServiceClassInfoW;
PWSAServiceClassInfo = PWSAServiceClassInfoW;
LPWSAServiceClassInfo = PWSAServiceClassInfoW;
{$ELSE}
WSAServiceClassInfo = TWSAServiceClassInfoA;
TWSAServiceClassInfo = TWSAServiceClassInfoA;
PWSAServiceClassInfo = PWSAServiceClassInfoA;
LPWSAServiceClassInfo = PWSAServiceClassInfoA;
{$ENDIF}
TWSANameSpace_InfoA = packed record
NSProviderId : TGUID;
dwNameSpace : DWORD;
fActive : DWORD;
dwVersion : DWORD;
lpszIdentifier : PChar;
end;
PWSANameSpace_InfoA = ^TWSANameSpace_InfoA;
LPWSANameSpace_InfoA = PWSANameSpace_InfoA;
TWSANameSpace_InfoW = packed record
NSProviderId : TGUID;
dwNameSpace : DWORD;
fActive : DWORD;
dwVersion : DWORD;
lpszIdentifier : PWideChar;
end;
PWSANameSpace_InfoW = ^TWSANameSpace_InfoW;
LPWSANameSpace_InfoW = PWSANameSpace_InfoW;
{$IFDEF UNICODE}
WSANameSpace_Info = TWSANameSpace_InfoW;
TWSANameSpace_Info = TWSANameSpace_InfoW;
PWSANameSpace_Info = PWSANameSpace_InfoW;
LPWSANameSpace_Info = PWSANameSpace_InfoW;
{$ELSE}
WSANameSpace_Info = TWSANameSpace_InfoA;
TWSANameSpace_Info = TWSANameSpace_InfoA;
PWSANameSpace_Info = PWSANameSpace_InfoA;
LPWSANameSpace_Info = PWSANameSpace_InfoA;
{$ENDIF}
type
LPCONDITIONPROC = function (lpCallerId: LPWSABUF; lpCallerData : LPWSABUF; lpSQOS,lpGQOS : LPQOS; lpCalleeId,lpCalleeData : LPWSABUF; g : GROUP; dwCallbackData : DWORD ) : Integer; stdcall;
LPWSAOVERLAPPED_COMPLETION_ROUTINE = procedure ( const dwError, cbTransferred : DWORD; const lpOverlapped : LPWSAOVERLAPPED; const dwFlags : DWORD ); stdcall;
function WSAStartup( const wVersionRequired: word; var WSData: TWSAData ): Integer; stdcall;
function WSACleanup: Integer; stdcall;
function accept( const s: TSocket; addr: PSockAddr; addrlen: PInteger ): TSocket; stdcall;
function bind( const s: TSocket; const name: PSockAddr; const namelen: Integer ): Integer; stdcall;
function closesocket( const s: TSocket ): Integer; stdcall;
function connect( const s: TSocket; const name: PSockAddr; const namelen: Integer): Integer; stdcall;
function ioctlsocket( const s: TSocket; const cmd: DWORD; var arg: u_long ): Integer; stdcall;
function getpeername( const s: TSocket; const name: PSockAddr; var namelen: Integer ): Integer; stdcall;
function getsockname( const s: TSocket; const name: PSockAddr; var namelen: Integer ): Integer; stdcall;
function getsockopt( const s: TSocket; const level, optname: Integer; optval: PChar; var optlen: Integer ): Integer; stdcall;
function htonl(hostlong: u_long): u_long; stdcall;
function htons(hostshort: u_short): u_short; stdcall;
function inet_addr(cp: PChar): u_long; stdcall;
function inet_ntoa(inaddr: TInAddr): PChar; stdcall;
function listen( const s: TSocket; backlog: Integer ): Integer; stdcall;
function ntohl(netlong: u_long): u_long; stdcall;
function ntohs(netshort: u_short): u_short; stdcall;
function recv( const s: TSocket; var Buf; len, flags: Integer ): Integer; stdcall;
function recvfrom( const s: TSocket; var Buf; len, flags: Integer; from: PSockAddr; fromlen: PInteger ): Integer; stdcall;
function select(nfds: Integer; readfds, writefds, exceptfds: PFDSet; timeout: PTimeVal ): Integer; stdcall;
function send( const s: TSocket; var Buf; len, flags: Integer ): Integer; stdcall;
function sendto( const s: TSocket; var Buf; const len, flags: Integer; var addrto: TSockAddr; const tolen: Integer ): Integer; stdcall;
function setsockopt( const s: TSocket; const level, optname: Integer; optval: PChar; const optlen: Integer ): Integer; stdcall;
function shutdown( const s: TSocket; const how: Integer ): Integer; stdcall;
function socket( const af, struct, protocol: Integer ): TSocket; stdcall;
function gethostbyaddr( addr: Pointer; const len, addrtype: Integer ): PHostEnt; stdcall;
function gethostbyname( name: PChar ): PHostEnt; stdcall;
function gethostname( name: PChar; len: Integer ): Integer; stdcall;
function getservbyport( const port: Integer; const proto: PChar ): PServEnt; stdcall;
function getservbyname( const name, proto: PChar ): PServEnt; stdcall;
function getprotobynumber( const proto: Integer ): PProtoEnt; stdcall;
function getprotobyname( const name: PChar ): PProtoEnt; stdcall;
procedure WSASetLastError( const iError: Integer ); stdcall;
function WSAGetLastError: Integer; stdcall;
function WSAIsBlocking: BOOL; stdcall;
function WSAUnhookBlockingHook: Integer; stdcall;
function WSASetBlockingHook( lpBlockFunc: TFarProc ): TFarProc; stdcall;
function WSACancelBlockingCall: Integer; stdcall;
function WSAAsyncGetServByName( HWindow: HWND; wMsg: u_int; name, proto, buf: PChar; buflen: Integer ): THandle; stdcall;
function WSAAsyncGetServByPort( HWindow: HWND; wMsg, port: u_int; proto, buf: PChar; buflen: Integer ): THandle; stdcall;
function WSAAsyncGetProtoByName( HWindow: HWND; wMsg: u_int; name, buf: PChar; buflen: Integer ): THandle; stdcall;
function WSAAsyncGetProtoByNumber( HWindow: HWND; wMsg: u_int; number: Integer; buf: PChar; buflen: Integer ): THandle; stdcall;
function WSAAsyncGetHostByName( HWindow: HWND; wMsg: u_int; name, buf: PChar; buflen: Integer ): THandle; stdcall;
function WSAAsyncGetHostByAddr( HWindow: HWND; wMsg: u_int; addr: PChar; len, struct: Integer; buf: PChar; buflen: Integer ): THandle; stdcall;
function WSACancelAsyncRequest( hAsyncTaskHandle: THandle ): Integer; stdcall;
function WSAAsyncSelect( const s: TSocket; HWindow: HWND; wMsg: u_int; lEvent: Longint ): Integer; stdcall;
function __WSAFDIsSet( const s: TSocket; var FDSet: TFDSet ): Bool; stdcall;
function WSAAccept( const s : TSocket; addr : PSockAddr; addrlen : PInteger; lpfnCondition : LPCONDITIONPROC; const dwCallbackData : DWORD ): TSocket; stdcall;
function WSACloseEvent( const hEvent : WSAEVENT ) : WordBool; stdcall;
function WSAConnect( const s : TSocket; const name : PSockAddr; const namelen : Integer; lpCallerData,lpCalleeData : LPWSABUF; lpSQOS,lpGQOS : LPQOS ) : Integer; stdcall;
function WSACreateEvent : WSAEVENT; stdcall;
function WSADuplicateSocketA( const s : TSocket; const dwProcessId : DWORD; lpProtocolInfo : LPWSAProtocol_InfoA ) : Integer; stdcall;
function WSADuplicateSocketW( const s : TSocket; const dwProcessId : DWORD; lpProtocolInfo : LPWSAProtocol_InfoW ) : Integer; stdcall;
function WSADuplicateSocket( const s : TSocket; const dwProcessId : DWORD; lpProtocolInfo : LPWSAProtocol_Info ) : Integer; stdcall;
function WSAEnumNetworkEvents( const s : TSocket; const hEventObject : WSAEVENT; lpNetworkEvents : LPWSANETWORKEVENTS ) :Integer; stdcall;
function WSAEnumProtocolsA( lpiProtocols : PInteger; lpProtocolBuffer : LPWSAProtocol_InfoA; var lpdwBufferLength : DWORD ) : Integer; stdcall;
function WSAEnumProtocolsW( lpiProtocols : PInteger; lpProtocolBuffer : LPWSAProtocol_InfoW; var lpdwBufferLength : DWORD ) : Integer; stdcall;
function WSAEnumProtocols( lpiProtocols : PInteger; lpProtocolBuffer : LPWSAProtocol_Info; var lpdwBufferLength : DWORD ) : Integer; stdcall;
function WSAEventSelect( const s : TSocket; const hEventObject : WSAEVENT; lNetworkEvents : LongInt ): Integer; stdcall;
function WSAGetOverlappedResult( const s : TSocket; lpOverlapped : LPWSAOVERLAPPED; lpcbTransfer : LPDWORD; fWait : BOOL; var lpdwFlags : DWORD ) : WordBool; stdcall;
function WSAGetQosByName( const s : TSocket; lpQOSName : LPWSABUF; lpQOS : LPQOS ): WordBool; stdcall;
function WSAHtonl( const s : TSocket; hostlong : u_long; var lpnetlong : DWORD ): Integer; stdcall;
function WSAHtons( const s : TSocket; hostshort : u_short; var lpnetshort : WORD ): Integer; stdcall;
function WSAIoctl( const s : TSocket; dwIoControlCode : DWORD; lpvInBuffer : Pointer; cbInBuffer : DWORD; lpvOutBuffer : Pointer; cbOutBuffer : DWORD;
lpcbBytesReturned : LPDWORD; lpOverlapped : LPWSAOVERLAPPED; lpCompletionRoutine : LPWSAOVERLAPPED_COMPLETION_ROUTINE ) : Integer; stdcall;
function WSAJoinLeaf( const s : TSocket; name : PSockAddr; namelen : Integer; lpCallerData,lpCalleeData : LPWSABUF;
lpSQOS,lpGQOS : LPQOS; dwFlags : DWORD ) : TSocket; stdcall;
function WSANtohl( const s : TSocket; netlong : u_long; var lphostlong : DWORD ): Integer; stdcall;
function WSANtohs( const s : TSocket; netshort : u_short; var lphostshort : WORD ): Integer; stdcall;
function WSARecv( const s : TSocket; lpBuffers : LPWSABUF; dwBufferCount : DWORD; var lpNumberOfBytesRecvd : DWORD; var lpFlags : DWORD;
lpOverlapped : LPWSAOVERLAPPED; lpCompletionRoutine : LPWSAOVERLAPPED_COMPLETION_ROUTINE ): Integer; stdcall;
function WSARecvDisconnect( const s : TSocket; lpInboundDisconnectData : LPWSABUF ): Integer; stdcall;
function WSARecvFrom( const s : TSocket; lpBuffers : LPWSABUF; dwBufferCount : DWORD; var lpNumberOfBytesRecvd : DWORD; var lpFlags : DWORD;
lpFrom : PSockAddr; lpFromlen : PInteger; lpOverlapped : LPWSAOVERLAPPED; lpCompletionRoutine : LPWSAOVERLAPPED_COMPLETION_ROUTINE ): Integer; stdcall;
function WSAResetEvent( hEvent : WSAEVENT ): WordBool; stdcall;
function WSASend( const s : TSocket; lpBuffers : LPWSABUF; dwBufferCount : DWORD; var lpNumberOfBytesSent : DWORD; dwFlags : DWORD;
lpOverlapped : LPWSAOVERLAPPED; lpCompletionRoutine : LPWSAOVERLAPPED_COMPLETION_ROUTINE ): Integer; stdcall;
function WSASendDisconnect( const s : TSocket; lpOutboundDisconnectData : LPWSABUF ): Integer; stdcall;
function WSASendTo( const s : TSocket; lpBuffers : LPWSABUF; dwBufferCount : DWORD; var lpNumberOfBytesSent : DWORD; dwFlags : DWORD;
lpTo : PSockAddr; iTolen : Integer; lpOverlapped : LPWSAOVERLAPPED; lpCompletionRoutine : LPWSAOVERLAPPED_COMPLETION_ROUTINE ): Integer; stdcall;
function WSASetEvent( hEvent : WSAEVENT ): WordBool; stdcall;
function WSASocketA( af, iType, protocol : Integer; lpProtocolInfo : LPWSAProtocol_InfoA; g : GROUP; dwFlags : DWORD ): TSocket; stdcall;
function WSASocketW( af, iType, protocol : Integer; lpProtocolInfo : LPWSAProtocol_InfoW; g : GROUP; dwFlags : DWORD ): TSocket; stdcall;
function WSASocket( af, iType, protocol : Integer; lpProtocolInfo : LPWSAProtocol_Info; g : GROUP; dwFlags : DWORD ): TSocket; stdcall;
function WSAWaitForMultipleEvents( cEvents : DWORD; lphEvents : PWSAEVENT; fWaitAll : LongBool;
dwTimeout : DWORD; fAlertable : LongBool ): DWORD; stdcall;
function WSAAddressToStringA( lpsaAddress : PSockAddr; const dwAddressLength : DWORD; const lpProtocolInfo : LPWSAProtocol_InfoA;
const lpszAddressString : PChar; var lpdwAddressStringLength : DWORD ): Integer; stdcall;
function WSAAddressToStringW( lpsaAddress : PSockAddr; const dwAddressLength : DWORD; const lpProtocolInfo : LPWSAProtocol_InfoW;
const lpszAddressString : PWideChar; var lpdwAddressStringLength : DWORD ): Integer; stdcall;
function WSAAddressToString( lpsaAddress : PSockAddr; const dwAddressLength : DWORD; const lpProtocolInfo : LPWSAProtocol_Info;
const lpszAddressString : PMBChar; var lpdwAddressStringLength : DWORD ): Integer; stdcall;
function WSAStringToAddressA( const AddressString : PChar; const AddressFamily: Integer; const lpProtocolInfo : LPWSAProtocol_InfoA;
var lpAddress : TSockAddr; var lpAddressLength : Integer ): Integer; stdcall;
function WSAStringToAddressW( const AddressString : PWideChar; const AddressFamily: Integer; const lpProtocolInfo : LPWSAProtocol_InfoW;
var lpAddress : TSockAddr; var lpAddressLength : Integer ): Integer; stdcall;
function WSAStringToAddress( const AddressString : PMBChar; const AddressFamily: Integer; const lpProtocolInfo : LPWSAProtocol_Info;
var lpAddress : TSockAddr; var lpAddressLength : Integer ): Integer; stdcall;
function WSALookupServiceBeginA( var qsRestrictions : TWSAQuerySetA; const dwControlFlags : DWORD; var hLookup : THANDLE ): Integer; stdcall;
function WSALookupServiceBeginW( var qsRestrictions : TWSAQuerySetW; const dwControlFlags : DWORD; var hLookup : THANDLE ): Integer; stdcall;
function WSALookupServiceBegin( var qsRestrictions : TWSAQuerySet; const dwControlFlags : DWORD; var hLookup : THANDLE ): Integer; stdcall;
function WSALookupServiceNextA( const hLookup : THandle; const dwControlFlags : DWORD; var dwBufferLength : DWORD; lpqsResults : PWSAQuerySetA ): Integer; stdcall;
function WSALookupServiceNextW( const hLookup : THandle; const dwControlFlags : DWORD; var dwBufferLength : DWORD; lpqsResults : PWSAQuerySetW ): Integer; stdcall;
function WSALookupServiceNext( const hLookup : THandle; const dwControlFlags : DWORD; var dwBufferLength : DWORD; lpqsResults : PWSAQuerySet ): Integer; stdcall;
function WSALookupServiceEnd( const hLookup : THandle ): Integer; stdcall;
function WSAInstallServiceClassA( const lpServiceClassInfo : LPWSAServiceClassInfoA ) : Integer; stdcall;
function WSAInstallServiceClassW( const lpServiceClassInfo : LPWSAServiceClassInfoW ) : Integer; stdcall;
function WSAInstallServiceClass( const lpServiceClassInfo : LPWSAServiceClassInfo ) : Integer; stdcall;
function WSARemoveServiceClass( const lpServiceClassId : PGUID ) : Integer; stdcall;
function WSAGetServiceClassInfoA( const lpProviderId : PGUID; const lpServiceClassId : PGUID; var lpdwBufSize : DWORD;
lpServiceClassInfo : LPWSAServiceClassInfoA ): Integer; stdcall;
function WSAGetServiceClassInfoW( const lpProviderId : PGUID; const lpServiceClassId : PGUID; var lpdwBufSize : DWORD;
lpServiceClassInfo : LPWSAServiceClassInfoW ): Integer; stdcall;
function WSAGetServiceClassInfo( const lpProviderId : PGUID; const lpServiceClassId : PGUID; var lpdwBufSize : DWORD;
lpServiceClassInfo : LPWSAServiceClassInfo ): Integer; stdcall;
function WSAEnumNameSpaceProvidersA( var lpdwBufferLength: DWORD; const lpnspBuffer: LPWSANameSpace_InfoA ): Integer; stdcall;
function WSAEnumNameSpaceProvidersW( var lpdwBufferLength: DWORD; const lpnspBuffer: LPWSANameSpace_InfoW ): Integer; stdcall;
function WSAEnumNameSpaceProviders( var lpdwBufferLength: DWORD; const lpnspBuffer: LPWSANameSpace_Info ): Integer; stdcall;
function WSAGetServiceClassNameByClassIdA( const lpServiceClassId: PGUID; lpszServiceClassName: PChar; var lpdwBufferLength: DWORD ): Integer; stdcall;
function WSAGetServiceClassNameByClassIdW( const lpServiceClassId: PGUID; lpszServiceClassName: PWideChar; var lpdwBufferLength: DWORD ): Integer; stdcall;
function WSAGetServiceClassNameByClassId( const lpServiceClassId: PGUID; lpszServiceClassName: PMBChar; var lpdwBufferLength: DWORD ): Integer; stdcall;
function WSASetServiceA( const lpqsRegInfo: LPWSAQuerySetA; const essoperation: TWSAeSetServiceOp; const dwControlFlags: DWORD ): Integer; stdcall;
function WSASetServiceW( const lpqsRegInfo: LPWSAQuerySetW; const essoperation: TWSAeSetServiceOp; const dwControlFlags: DWORD ): Integer; stdcall;
function WSASetService( const lpqsRegInfo: LPWSAQuerySet; const essoperation: TWSAeSetServiceOp; const dwControlFlags: DWORD ): Integer; stdcall;
function WSAProviderConfigChange( var lpNotificationHandle : THandle; lpOverlapped : LPWSAOVERLAPPED; lpCompletionRoutine : LPWSAOVERLAPPED_COMPLETION_ROUTINE ) : Integer; stdcall;
function WSAStartup; external WINSOCK2_DLL name 'WSAStartup';
function WSACleanup; external WINSOCK2_DLL name 'WSACleanup';
function accept; external WINSOCK2_DLL name 'accept';
function bind; external WINSOCK2_DLL name 'bind';
function closesocket; external WINSOCK2_DLL name 'closesocket';
function connect; external WINSOCK2_DLL name 'connect';
function ioctlsocket; external WINSOCK2_DLL name 'ioctlsocket';
function getpeername; external WINSOCK2_DLL name 'getpeername';
function getsockname; external WINSOCK2_DLL name 'getsockname';
function getsockopt; external WINSOCK2_DLL name 'getsockopt';
function htonl; external WINSOCK2_DLL name 'htonl';
function htons; external WINSOCK2_DLL name 'htons';
function inet_addr; external WINSOCK2_DLL name 'inet_addr';
function inet_ntoa; external WINSOCK2_DLL name 'inet_ntoa';
function listen; external WINSOCK2_DLL name 'listen';
function ntohl; external WINSOCK2_DLL name 'ntohl';
function ntohs; external WINSOCK2_DLL name 'ntohs';
function recv; external WINSOCK2_DLL name 'recv';
function recvfrom; external WINSOCK2_DLL name 'recvfrom';
function select; external WINSOCK2_DLL name 'select';
function send; external WINSOCK2_DLL name 'send';
function sendto; external WINSOCK2_DLL name 'sendto';
function setsockopt; external WINSOCK2_DLL name 'setsockopt';
function shutdown; external WINSOCK2_DLL name 'shutdown';
function socket; external WINSOCK2_DLL name 'socket';
function gethostbyaddr; external WINSOCK2_DLL name 'gethostbyaddr';
function gethostbyname; external WINSOCK2_DLL name 'gethostbyname';
function gethostname; external WINSOCK2_DLL name 'gethostname';
function getservbyport; external WINSOCK2_DLL name 'getservbyport';
function getservbyname; external WINSOCK2_DLL name 'getservbyname';
function getprotobynumber; external WINSOCK2_DLL name 'getprotobynumber';
function getprotobyname; external WINSOCK2_DLL name 'getprotobyname';
procedure WSASetLastError; external WINSOCK2_DLL name 'WSASetLastError';
function WSAGetLastError; external WINSOCK2_DLL name 'WSAGetLastError';
function WSAIsBlocking; external WINSOCK2_DLL name 'WSAIsBlocking';
function WSAUnhookBlockingHook; external WINSOCK2_DLL name 'WSAUnhookBlockingHook';
function WSASetBlockingHook; external WINSOCK2_DLL name 'WSASetBlockingHook';
function WSACancelBlockingCall; external WINSOCK2_DLL name 'WSACancelBlockingCall';
function WSAAsyncGetServByName; external WINSOCK2_DLL name 'WSAAsyncGetServByName';
function WSAAsyncGetServByPort; external WINSOCK2_DLL name 'WSAAsyncGetServByPort';
function WSAAsyncGetProtoByName; external WINSOCK2_DLL name 'WSAAsyncGetProtoByName';
function WSAAsyncGetProtoByNumber; external WINSOCK2_DLL name 'WSAAsyncGetProtoByNumber';
function WSAAsyncGetHostByName; external WINSOCK2_DLL name 'WSAAsyncGetHostByName';
function WSAAsyncGetHostByAddr; external WINSOCK2_DLL name 'WSAAsyncGetHostByAddr';
function WSACancelAsyncRequest; external WINSOCK2_DLL name 'WSACancelAsyncRequest';
function WSAAsyncSelect; external WINSOCK2_DLL name 'WSAAsyncSelect';
function __WSAFDIsSet; external WINSOCK2_DLL name '__WSAFDIsSet';
function WSAAccept; external WINSOCK2_DLL name 'WSAAccept';
function WSACloseEvent; external WINSOCK2_DLL name 'WSACloseEvent';
function WSAConnect; external WINSOCK2_DLL name 'WSAConnect';
function WSACreateEvent ; external WINSOCK2_DLL name 'WSACreateEvent ';
function WSADuplicateSocketA; external WINSOCK2_DLL name 'WSADuplicateSocketA';
function WSADuplicateSocketW; external WINSOCK2_DLL name 'WSADuplicateSocketW';
function WSAEnumNetworkEvents; external WINSOCK2_DLL name 'WSAEnumNetworkEvents';
function WSAEnumProtocolsA; external WINSOCK2_DLL name 'WSAEnumProtocolsA';
function WSAEnumProtocolsW; external WINSOCK2_DLL name 'WSAEnumProtocolsW';
function WSAEventSelect; external WINSOCK2_DLL name 'WSAEventSelect';
function WSAGetOverlappedResult; external WINSOCK2_DLL name 'WSAGetOverlappedResult';
function WSAGetQosByName; external WINSOCK2_DLL name 'WSAGetQosByName';
function WSAHtonl; external WINSOCK2_DLL name 'WSAHtonl';
function WSAHtons; external WINSOCK2_DLL name 'WSAHtons';
function WSAIoctl; external WINSOCK2_DLL name 'WSAIoctl';
function WSAJoinLeaf; external WINSOCK2_DLL name 'WSAJoinLeaf';
function WSANtohl; external WINSOCK2_DLL name 'WSANtohl';
function WSANtohs; external WINSOCK2_DLL name 'WSANtohs';
function WSARecv; external WINSOCK2_DLL name 'WSARecv';
function WSARecvDisconnect; external WINSOCK2_DLL name 'WSARecvDisconnect';
function WSARecvFrom; external WINSOCK2_DLL name 'WSARecvFrom';
function WSAResetEvent; external WINSOCK2_DLL name 'WSAResetEvent';
function WSASend; external WINSOCK2_DLL name 'WSASend';
function WSASendDisconnect; external WINSOCK2_DLL name 'WSASendDisconnect';
function WSASendTo; external WINSOCK2_DLL name 'WSASendTo';
function WSASetEvent; external WINSOCK2_DLL name 'WSASetEvent';
function WSASocketA; external WINSOCK2_DLL name 'WSASocketA';
function WSASocketW; external WINSOCK2_DLL name 'WSASocketW';
function WSAWaitForMultipleEvents; external WINSOCK2_DLL name 'WSAWaitForMultipleEvents';
function WSAAddressToStringA; external WINSOCK2_DLL name 'WSAAddressToStringA';
function WSAAddressToStringW; external WINSOCK2_DLL name 'WSAAddressToStringW';
function WSAStringToAddressA; external WINSOCK2_DLL name 'WSAStringToAddressA';
function WSAStringToAddressW; external WINSOCK2_DLL name 'WSAStringToAddressW';
function WSALookupServiceBeginA; external WINSOCK2_DLL name 'WSALookupServiceBeginA';
function WSALookupServiceBeginW; external WINSOCK2_DLL name 'WSALookupServiceBeginW';
function WSALookupServiceNextA; external WINSOCK2_DLL name 'WSALookupServiceNextA';
function WSALookupServiceNextW; external WINSOCK2_DLL name 'WSALookupServiceNextW';
function WSALookupServiceEnd; external WINSOCK2_DLL name 'WSALookupServiceEnd';
function WSAInstallServiceClassA; external WINSOCK2_DLL name 'WSAInstallServiceClassA';
function WSAInstallServiceClassW; external WINSOCK2_DLL name 'WSAInstallServiceClassW';
function WSARemoveServiceClass; external WINSOCK2_DLL name 'WSARemoveServiceClass';
function WSAGetServiceClassInfoA; external WINSOCK2_DLL name 'WSAGetServiceClassInfoA';
function WSAGetServiceClassInfoW; external WINSOCK2_DLL name 'WSAGetServiceClassInfoW';
function WSAEnumNameSpaceProvidersA; external WINSOCK2_DLL name 'WSAEnumNameSpaceProvidersA';
function WSAEnumNameSpaceProvidersW; external WINSOCK2_DLL name 'WSAEnumNameSpaceProvidersW';
function WSAGetServiceClassNameByClassIdA; external WINSOCK2_DLL name 'WSAGetServiceClassNameByClassIdA';
function WSAGetServiceClassNameByClassIdW; external WINSOCK2_DLL name 'WSAGetServiceClassNameByClassIdW';
function WSASetServiceA; external WINSOCK2_DLL name 'WSASetServiceA';
function WSASetServiceW; external WINSOCK2_DLL name 'WSASetServiceW';
function WSAProviderConfigChange; external WINSOCK2_DLL name 'WSAProviderConfigChange';
{$IFDEF UNICODE}
function WSADuplicateSocket; external WINSOCK2_DLL name 'WSADuplicateSocketW';
function WSAEnumProtocols; external WINSOCK2_DLL name 'WSAEnumProtocolsW';
function WSASocket; external WINSOCK2_DLL name 'WSASocketW';
function WSAAddressToString; external WINSOCK2_DLL name 'WSAAddressToStringW';
function WSAStringToAddress; external WINSOCK2_DLL name 'WSAStringToAddressW';
function WSALookupServiceBegin; external WINSOCK2_DLL name 'WSALookupServiceBeginW';
function WSALookupServiceNext; external WINSOCK2_DLL name 'WSALookupServiceNextW';
function WSAInstallServiceClass; external WINSOCK2_DLL name 'WSAInstallServiceClassW';
function WSAGetServiceClassInfo; external WINSOCK2_DLL name 'WSAGetServiceClassInfoW';
function WSAEnumNameSpaceProviders; external WINSOCK2_DLL name 'WSAEnumNameSpaceProvidersW';
function WSAGetServiceClassNameByClassId; external WINSOCK2_DLL name 'WSAGetServiceClassNameByClassIdW';
function WSASetService; external WINSOCK2_DLL name 'WSASetServiceW';
{$ELSE}
function WSADuplicateSocket; external WINSOCK2_DLL name 'WSADuplicateSocketA';
function WSAEnumProtocols; external WINSOCK2_DLL name 'WSAEnumProtocolsA';
function WSASocket; external WINSOCK2_DLL name 'WSASocketA';
function WSAAddressToString; external WINSOCK2_DLL name 'WSAAddressToStringA';
function WSAStringToAddress; external WINSOCK2_DLL name 'WSAStringToAddressA';
function WSALookupServiceBegin; external WINSOCK2_DLL name 'WSALookupServiceBeginA';
function WSALookupServiceNext; external WINSOCK2_DLL name 'WSALookupServiceNextA';
function WSAInstallServiceClass; external WINSOCK2_DLL name 'WSAInstallServiceClassA';
function WSAGetServiceClassInfo; external WINSOCK2_DLL name 'WSAGetServiceClassInfoA';
function WSAEnumNameSpaceProviders; external WINSOCK2_DLL name 'WSAEnumNameSpaceProvidersA';
function WSAGetServiceClassNameByClassId; external WINSOCK2_DLL name 'WSAGetServiceClassNameByClassIdA';
function WSASetService; external WINSOCK2_DLL name 'WSASetServiceA';
{$ENDIF}
implementation
begin
end.