📄 jwawinsock2.pas
字号:
{$EXTERNALSYM WSA_QOS_EFLOWCOUNT}
WSA_QOS_EUNKOWNPSOBJ = (WSABASEERR + 1024); // unknown object in provider specific buffer
{$EXTERNALSYM WSA_QOS_EUNKOWNPSOBJ}
WSA_QOS_EPOLICYOBJ = (WSABASEERR + 1025); // invalid policy object in provider specific buffer
{$EXTERNALSYM WSA_QOS_EPOLICYOBJ}
WSA_QOS_EFLOWDESC = (WSABASEERR + 1026); // invalid flow descriptor in the list
{$EXTERNALSYM WSA_QOS_EFLOWDESC}
WSA_QOS_EPSFLOWSPEC = (WSABASEERR + 1027); // inconsistent flow spec in provider specific buffer
{$EXTERNALSYM WSA_QOS_EPSFLOWSPEC}
WSA_QOS_EPSFILTERSPEC = (WSABASEERR + 1028); // invalid filter spec in provider specific buffer
{$EXTERNALSYM WSA_QOS_EPSFILTERSPEC}
WSA_QOS_ESDMODEOBJ = (WSABASEERR + 1029); // invalid shape discard mode object in provider specific buffer
{$EXTERNALSYM WSA_QOS_ESDMODEOBJ}
WSA_QOS_ESHAPERATEOBJ = (WSABASEERR + 1030); // invalid shaping rate object in provider specific buffer
{$EXTERNALSYM WSA_QOS_ESHAPERATEOBJ}
WSA_QOS_RESERVED_PETYPE = (WSABASEERR + 1031); // reserved policy element in provider specific buffer
{$EXTERNALSYM WSA_QOS_RESERVED_PETYPE}
//
// Compatibility macros.
//
function h_errno: Integer;
{$EXTERNALSYM h_errno}
const
HOST_NOT_FOUND = WSAHOST_NOT_FOUND;
{$EXTERNALSYM HOST_NOT_FOUND}
TRY_AGAIN = WSATRY_AGAIN;
{$EXTERNALSYM TRY_AGAIN}
NO_RECOVERY = WSANO_RECOVERY;
{$EXTERNALSYM NO_RECOVERY}
NO_DATA = WSANO_DATA;
{$EXTERNALSYM NO_DATA}
// no address, look for MX record
WSANO_ADDRESS = WSANO_DATA;
{$EXTERNALSYM WSANO_ADDRESS}
NO_ADDRESS = WSANO_ADDRESS;
{$EXTERNALSYM NO_ADDRESS}
//
// Windows Sockets errors redefined as regular Berkeley error constants.
// These are commented out in Windows NT to avoid conflicts with errno.h.
// Use the WSA constants instead.
//
{$IFDEF FALSE}
const
EWOULDBLOCK = WSAEWOULDBLOCK;
{$EXTERNALSYM EWOULDBLOCK}
EINPROGRESS = WSAEINPROGRESS;
{$EXTERNALSYM EINPROGRESS}
EALREADY = WSAEALREADY;
{$EXTERNALSYM EALREADY}
ENOTSOCK = WSAENOTSOCK;
{$EXTERNALSYM ENOTSOCK}
EDESTADDRREQ = WSAEDESTADDRREQ;
{$EXTERNALSYM EDESTADDRREQ}
EMSGSIZE = WSAEMSGSIZE;
{$EXTERNALSYM EMSGSIZE}
EPROTOTYPE = WSAEPROTOTYPE;
{$EXTERNALSYM EPROTOTYPE}
ENOPROTOOPT = WSAENOPROTOOPT;
{$EXTERNALSYM ENOPROTOOPT}
EPROTONOSUPPORT = WSAEPROTONOSUPPORT;
{$EXTERNALSYM EPROTONOSUPPORT}
ESOCKTNOSUPPORT = WSAESOCKTNOSUPPORT;
{$EXTERNALSYM ESOCKTNOSUPPORT}
EOPNOTSUPP = WSAEOPNOTSUPP;
{$EXTERNALSYM EOPNOTSUPP}
EPFNOSUPPORT = WSAEPFNOSUPPORT;
{$EXTERNALSYM EPFNOSUPPORT}
EAFNOSUPPORT = WSAEAFNOSUPPORT;
{$EXTERNALSYM EAFNOSUPPORT}
EADDRINUSE = WSAEADDRINUSE;
{$EXTERNALSYM EADDRINUSE}
EADDRNOTAVAIL = WSAEADDRNOTAVAIL;
{$EXTERNALSYM EADDRNOTAVAIL}
ENETDOWN = WSAENETDOWN;
{$EXTERNALSYM ENETDOWN}
ENETUNREACH = WSAENETUNREACH;
{$EXTERNALSYM ENETUNREACH}
ENETRESET = WSAENETRESET;
{$EXTERNALSYM ENETRESET}
ECONNABORTED = WSAECONNABORTED;
{$EXTERNALSYM ECONNABORTED}
ECONNRESET = WSAECONNRESET;
{$EXTERNALSYM ECONNRESET}
ENOBUFS = WSAENOBUFS;
{$EXTERNALSYM ENOBUFS}
EISCONN = WSAEISCONN;
{$EXTERNALSYM EISCONN}
ENOTCONN = WSAENOTCONN;
{$EXTERNALSYM ENOTCONN}
ESHUTDOWN = WSAESHUTDOWN;
{$EXTERNALSYM ESHUTDOWN}
ETOOMANYREFS = WSAETOOMANYREFS;
{$EXTERNALSYM ETOOMANYREFS}
ETIMEDOUT = WSAETIMEDOUT;
{$EXTERNALSYM ETIMEDOUT}
ECONNREFUSED = WSAECONNREFUSED;
{$EXTERNALSYM ECONNREFUSED}
ELOOP = WSAELOOP;
{$EXTERNALSYM ELOOP}
ENAMETOOLONG = WSAENAMETOOLONG;
{$EXTERNALSYM ENAMETOOLONG}
EHOSTDOWN = WSAEHOSTDOWN;
{$EXTERNALSYM EHOSTDOWN}
EHOSTUNREACH = WSAEHOSTUNREACH;
{$EXTERNALSYM EHOSTUNREACH}
ENOTEMPTY = WSAENOTEMPTY;
{$EXTERNALSYM ENOTEMPTY}
EPROCLIM = WSAEPROCLIM;
{$EXTERNALSYM EPROCLIM}
EUSERS = WSAEUSERS;
{$EXTERNALSYM EUSERS}
EDQUOT = WSAEDQUOT;
{$EXTERNALSYM EDQUOT}
ESTALE = WSAESTALE;
{$EXTERNALSYM ESTALE}
EREMOTE = WSAEREMOTE;
{$EXTERNALSYM EREMOTE}
{$ENDIF}
//
// WinSock 2 extension -- new error codes and type definition
//
type
WSAEVENT = HANDLE;
{$EXTERNALSYM WSAEVENT}
LPWSAEVENT = LPHANDLE;
{$EXTERNALSYM LPWSAEVENT}
WSAOVERLAPPED = OVERLAPPED;
{$EXTERNALSYM WSAOVERLAPPED}
LPWSAOVERLAPPED = ^OVERLAPPED;
{$EXTERNALSYM LPWSAOVERLAPPED}
TWsaEvent = WSAEVENT;
PWsaEvent = LPWSAEVENT;
TWsaOverlapped = WSAOVERLAPPED;
PWsaOverlapped = LPWSAOVERLAPPED;
const
WSA_IO_PENDING = (ERROR_IO_PENDING);
{$EXTERNALSYM WSA_IO_PENDING}
WSA_IO_INCOMPLETE = (ERROR_IO_INCOMPLETE);
{$EXTERNALSYM WSA_IO_INCOMPLETE}
WSA_INVALID_HANDLE = (ERROR_INVALID_HANDLE);
{$EXTERNALSYM WSA_INVALID_HANDLE}
WSA_INVALID_PARAMETER = (ERROR_INVALID_PARAMETER);
{$EXTERNALSYM WSA_INVALID_PARAMETER}
WSA_NOT_ENOUGH_MEMORY = (ERROR_NOT_ENOUGH_MEMORY);
{$EXTERNALSYM WSA_NOT_ENOUGH_MEMORY}
WSA_OPERATION_ABORTED = (ERROR_OPERATION_ABORTED);
{$EXTERNALSYM WSA_OPERATION_ABORTED}
WSA_INVALID_EVENT = WSAEVENT(nil);
{$EXTERNALSYM WSA_INVALID_EVENT}
WSA_MAXIMUM_WAIT_EVENTS = (MAXIMUM_WAIT_OBJECTS);
{$EXTERNALSYM WSA_MAXIMUM_WAIT_EVENTS}
WSA_WAIT_FAILED = (WAIT_FAILED);
{$EXTERNALSYM WSA_WAIT_FAILED}
WSA_WAIT_EVENT_0 = (WAIT_OBJECT_0);
{$EXTERNALSYM WSA_WAIT_EVENT_0}
WSA_WAIT_IO_COMPLETION = (WAIT_IO_COMPLETION);
{$EXTERNALSYM WSA_WAIT_IO_COMPLETION}
WSA_WAIT_TIMEOUT = (WAIT_TIMEOUT);
{$EXTERNALSYM WSA_WAIT_TIMEOUT}
WSA_INFINITE = (INFINITE);
{$EXTERNALSYM WSA_INFINITE}
//
// WinSock 2 extension -- WSABUF and QOS struct, include qos.h
// to pull in FLOWSPEC and related definitions
//
type
_WSABUF = record
len: u_long; // the length of the buffer
buf: PChar; // the pointer to the buffer
end;
{$EXTERNALSYM _WSABUF}
WSABUF = _WSABUF;
{$EXTERNALSYM WSABUF}
LPWSABUF = ^_WSABUF;
{$EXTERNALSYM LPWSABUF}
TWsaBuf = WSABUF;
PWsaBuf = LPWSABUF;
_QualityOfService = record
SendingFlowspec: FLOWSPEC; // the flow spec for data sending
ReceivingFlowspec: FLOWSPEC; // the flow spec for data receiving
ProviderSpecific: WSABUF; // additional provider specific stuff
end;
{$EXTERNALSYM _QualityOfService}
QOS = _QualityOfService;
{$EXTERNALSYM QOS}
LPQOS = ^_QualityOfService;
{$EXTERNALSYM LPQOS}
TQOS = QOS;
PQOS = LPQOS;
//
// WinSock 2 extension -- manifest constants for return values of the condition function
//
const
CF_ACCEPT = $0000;
{$EXTERNALSYM CF_ACCEPT}
CF_REJECT = $0001;
{$EXTERNALSYM CF_REJECT}
CF_DEFER = $0002;
{$EXTERNALSYM CF_DEFER}
//
// WinSock 2 extension -- manifest constants for shutdown()
//
SD_RECEIVE = $00;
{$EXTERNALSYM SD_RECEIVE}
SD_SEND = $01;
{$EXTERNALSYM SD_SEND}
SD_BOTH = $02;
{$EXTERNALSYM SD_BOTH}
//
// WinSock 2 extension -- data type and manifest constants for socket groups
//
type
GROUP = Cardinal;
{$EXTERNALSYM GROUP}
TGroup = GROUP;
PGroup = ^GROUP;
const
SG_UNCONSTRAINED_GROUP = $01;
{$EXTERNALSYM SG_UNCONSTRAINED_GROUP}
SG_CONSTRAINED_GROUP = $02;
{$EXTERNALSYM SG_CONSTRAINED_GROUP}
//
// WinSock 2 extension -- data type for WSAEnumNetworkEvents()
//
type
_WSANETWORKEVENTS = record
lNetworkEvents: Longint;
iErrorCode: array [0..FD_MAX_EVENTS - 1] of Integer;
end;
{$EXTERNALSYM _WSANETWORKEVENTS}
WSANETWORKEVENTS = _WSANETWORKEVENTS;
{$EXTERNALSYM WSANETWORKEVENTS}
LPWSANETWORKEVENTS = ^WSANETWORKEVENTS;
{$EXTERNALSYM LPWSANETWORKEVENTS}
TWsaNetworkEvents = WSANETWORKEVENTS;
PWsaNetworkEvents = LPWSANETWORKEVENTS;
//
// WinSock 2 extension -- WSAPROTOCOL_INFO structure and associated
// manifest constants
//
const
MAX_PROTOCOL_CHAIN = 7;
{$EXTERNALSYM MAX_PROTOCOL_CHAIN}
BASE_PROTOCOL = 1;
{$EXTERNALSYM BASE_PROTOCOL}
LAYERED_PROTOCOL = 0;
{$EXTERNALSYM LAYERED_PROTOCOL}
type
_WSAPROTOCOLCHAIN = record
ChainLen: Integer; // the length of the chain,
// length = 0 means layered protocol,
// length = 1 means base protocol,
// length > 1 means protocol chain
ChainEntries: array [0..MAX_PROTOCOL_CHAIN - 1] of DWORD; // a list of dwCatalogEntryIds
end;
{$EXTERNALSYM _WSAPROTOCOLCHAIN}
WSAPROTOCOLCHAIN = _WSAPROTOCOLCHAIN;
{$EXTERNALSYM WSAPROTOCOLCHAIN}
LPWSAPROTOCOLCHAIN = ^WSAPROTOCOLCHAIN;
{$EXTERNALSYM LPWSAPROTOCOLCHAIN}
TWsaProtocolChain = WSAPROTOCOLCHAIN;
PWsaProtocolChain = LPWSAPROTOCOLCHAIN;
const
WSAPROTOCOL_LEN = 255;
{$EXTERNALSYM WSAPROTOCOL_LEN}
type
_WSAPROTOCOL_INFOA = record
dwServiceFlags1: DWORD;
dwServiceFlags2: DWORD;
dwServiceFlags3: DWORD;
dwServiceFlags4: DWORD;
dwProviderFlags: DWORD;
ProviderId: TGUID;
dwCatalogEntryId: DWORD;
ProtocolChain: WSAPROTOCOLCHAIN;
iVersion: Integer;
iAddressFamily: Integer;
iMaxSockAddr: Integer;
iMinSockAddr: Integer;
iSocketType: Integer;
iProtocol: Integer;
iProtocolMaxOffset: Integer;
iNetworkByteOrder: Integer;
iSecurityScheme: Integer;
dwMessageSize: DWORD;
dwProviderReserved: DWORD;
szProtocol: array [0..WSAPROTOCOL_LEN] of Char;
end;
{$EXTERNALSYM _WSAPROTOCOL_INFOA}
WSAPROTOCOL_INFOA = _WSAPROTOCOL_INFOA;
{$EXTERNALSYM WSAPROTOCOL_INFOA}
LPWSAPROTOCOL_INFOA = ^WSAPROTOCOL_INFOA;
{$EXTERNALSYM LPWSAPROTOCOL_INFOA}
TWsaProtocolInfoA = WSAPROTOCOL_INFOA;
PWsaProtocolInfoA = LPWSAPROTOCOL_INFOA;
_WSAPROTOCOL_INFOW = record
dwServiceFlags1: DWORD;
dwServiceFlags2: DWORD;
dwServiceFlags3: DWORD;
dwServiceFlags4: DWORD;
dwProviderFlags: DWORD;
ProviderId: TGUID;
dwCatalogEntryId: DWORD;
ProtocolChain: WSAPROTOCOLCHAIN;
iVersion: Integer;
iAddressFamily: Integer;
iMaxSockAddr: Integer;
iMinSockAddr: Integer;
iSocketType: Integer;
iProtocol: Integer;
iProtocolMaxOffset: Integer;
iNetworkByteOrder: Integer;
iSecurityScheme: Integer;
dwMessageSize: DWORD;
dwProviderReserved: DWORD;
szProtocol: array [0..WSAPROTOCOL_LEN] of WideChar;
end;
{$EXTERNALSYM _WSAPROTOCOL_INFOW}
WSAPROTOCOL_INFOW = _WSAPROTOCOL_INFOW;
{$EXTERNALSYM WSAPROTOCOL_INFOW}
LPWSAPROTOCOL_INFOW = ^WSAPROTOCOL_INFOW;
{$EXTERNALSYM LPWSAPROTOCOL_INFOW}
TWsaProtocolInfoW = WSAPROTOCOL_INFOW;
PWsaProtocolInfoW = LPWSAPROTOCOL_INFOW;
{$IFDEF UNICODE}
WSAPROTOCOL_INFO = WSAPROTOCOL_INFOW;
{$EXTERNALSYM WSAPROTOCOL_INFO}
LPWSAPROTOCOL_INFO = LPWSAPROTOCOL_INFOW;
{$EXTERNALSYM LPWSAPROTOCOL_INFO}
TWsaProtocolInfo = TWsaProtocolInfoW;
PWsaProtocolInfo = PWsaProtocolInfoW;
{$ELSE}
WSAPROTOCOL_INFO = WSAPROTOCOL_INFOA;
{$EXTERNALSYM WSAPROTOCOL_INFO}
LPWSAPROTOCOL_INFO = LPWSAPROTOCOL_INFOA;
{$EXTERNALSYM LPWSAPROTOCOL_INFO}
TWsaProtocolInfo = TWsaProtocolInfoA;
PWsaProtocolInfo = PWsaProtocolInfoA;
{$ENDIF}
// Flag bit definitions for dwProviderFlags
const
PFL_MULTIPLE_PROTO_ENTRIES = $00000001;
{$EXTERNALSYM PFL_MULTIPLE_PROTO_ENTRIES}
PFL_RECOMMENDED_PROTO_ENTRY = $00000002;
{$EXTERNALSYM PFL_RECOMMENDED_PROTO_ENTRY}
PFL_HIDDEN = $00000004;
{$EXTERNALSYM PFL_HIDDEN}
PFL_MATCHES_PROTOCOL_ZERO = $00000008;
{$EXTERNALSYM PFL_MATCHES_PROTOCOL_ZERO}
// Flag bit definitions for dwServiceFlags1
XP1_CONNECTIONLESS = $00000001;
{$EXTERNALSYM XP1_CONNECTIONLESS}
XP1_GUARANTEED_DELIVERY = $00000002;
{$EXTERNALSYM XP1_GUARANTEED_DELIVERY}
XP1_GUARANTEED_ORDER = $00000004;
{$EXTERNALSYM XP1_GUARANTEED_ORDER}
XP1_MESSAGE_ORIENTED = $00000008;
{$EXTERNALSYM XP1_MESSAGE_ORIENTED}
XP1_PSEUDO_STREAM = $00000010;
{$EXTERNALSYM XP1_PSEUDO_STREAM}
XP1_GRACEFUL_CLOSE = $00000020;
{$EXTERNALSYM XP1_GRACEFUL_CLOSE}
XP1_EXPEDITED_DATA = $00000040;
{$EXTERNALSYM XP1_EXPEDITED_DATA}
XP1_CONNECT_DATA = $00000080;
{$EXTERNALSYM XP1_CONNECT_DATA}
XP1_DISCONNECT_DATA = $00000100;
{$EXTERNALSYM XP1_DISCONNECT_DATA}
XP1_SUPPORT_BROADCAST = $00000200;
{$EXTERNALSYM XP1_SUPPORT_BROADCAST}
XP1_SUPPORT_MULTIPOINT = $00000400;
{$EXTERNALSYM XP1_SUPPORT_MULTIPOINT}
XP1_MULTIPOINT_CONTROL_PLANE = $00000800;
{$EXTERNALSYM XP1_MULTIPOINT_CONTROL_PLANE}
XP1_MULTIPOINT_DATA_PLANE = $00001000;
{$EXTERNALSYM XP1_MULTIPOINT_DATA_PLANE}
XP1_QOS_SUPPORTED = $00002000;
{$EXTERNALSYM XP1_QOS_SUPPORTED}
XP1_INTERRUPT = $00004000;
{$EXTERNALSYM XP1_INTERRUPT}
XP1_UNI_SEND = $00008000;
{$EXTERNALSYM XP1_UNI_SEND}
XP1_UNI_RECV = $00010000;
{$EXTERNALSYM XP1_UNI_RECV}
XP1_IFS_HANDLES = $00020000;
{$EXTERNALSYM XP1_IFS_HANDLES}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -