📄 jwawinsock2.pas
字号:
XP1_PARTIAL_MESSAGE = $00040000;
{$EXTERNALSYM XP1_PARTIAL_MESSAGE}
BIGENDIAN = $0000;
{$EXTERNALSYM BIGENDIAN}
LITTLEENDIAN = $0001;
{$EXTERNALSYM LITTLEENDIAN}
SECURITY_PROTOCOL_NONE = $0000;
{$EXTERNALSYM SECURITY_PROTOCOL_NONE}
//
// WinSock 2 extension -- manifest constants for WSAJoinLeaf()
//
JL_SENDER_ONLY = $01;
{$EXTERNALSYM JL_SENDER_ONLY}
JL_RECEIVER_ONLY = $02;
{$EXTERNALSYM JL_RECEIVER_ONLY}
JL_BOTH = $04;
{$EXTERNALSYM JL_BOTH}
//
// WinSock 2 extension -- manifest constants for WSASocket()
//
WSA_FLAG_OVERLAPPED = $01;
{$EXTERNALSYM WSA_FLAG_OVERLAPPED}
WSA_FLAG_MULTIPOINT_C_ROOT = $02;
{$EXTERNALSYM WSA_FLAG_MULTIPOINT_C_ROOT}
WSA_FLAG_MULTIPOINT_C_LEAF = $04;
{$EXTERNALSYM WSA_FLAG_MULTIPOINT_C_LEAF}
WSA_FLAG_MULTIPOINT_D_ROOT = $08;
{$EXTERNALSYM WSA_FLAG_MULTIPOINT_D_ROOT}
WSA_FLAG_MULTIPOINT_D_LEAF = $10;
{$EXTERNALSYM WSA_FLAG_MULTIPOINT_D_LEAF}
//
// WinSock 2 extension -- manifest constants for WSAIoctl()
//
IOC_UNIX = $00000000;
{$EXTERNALSYM IOC_UNIX}
IOC_WS2 = $08000000;
{$EXTERNALSYM IOC_WS2}
IOC_PROTOCOL = $10000000;
{$EXTERNALSYM IOC_PROTOCOL}
IOC_VENDOR = $18000000;
{$EXTERNALSYM IOC_VENDOR}
function _WSAIO(x, y: DWORD): DWORD;
{$EXTERNALSYM _WSAIO}
function _WSAIOR(x, y: DWORD): DWORD;
{$EXTERNALSYM _WSAIOR}
function _WSAIOW(x, y: DWORD): DWORD;
{$EXTERNALSYM _WSAIOW}
function _WSAIORW(x, y: DWORD): DWORD;
{$EXTERNALSYM _WSAIORW}
const
SIO_ASSOCIATE_HANDLE = IOC_INOUT or IOC_WS2 or 1;
{$EXTERNALSYM SIO_ASSOCIATE_HANDLE}
SIO_ENABLE_CIRCULAR_QUEUEING = IOC_VOID or IOC_WS2 or 2;
{$EXTERNALSYM SIO_ENABLE_CIRCULAR_QUEUEING}
SIO_FIND_ROUTE = IOC_OUT or IOC_WS2 or 3;
{$EXTERNALSYM SIO_FIND_ROUTE}
SIO_FLUSH = IOC_VOID or IOC_WS2 or 4;
{$EXTERNALSYM SIO_FLUSH}
SIO_GET_BROADCAST_ADDRESS = IOC_OUT or IOC_WS2 or 5;
{$EXTERNALSYM SIO_GET_BROADCAST_ADDRESS}
SIO_GET_EXTENSION_FUNCTION_POINTER = IOC_INOUT or IOC_WS2 or 6;
{$EXTERNALSYM SIO_GET_EXTENSION_FUNCTION_POINTER}
SIO_GET_QOS = IOC_INOUT or IOC_WS2 or 7;
{$EXTERNALSYM SIO_GET_QOS}
SIO_GET_GROUP_QOS = IOC_INOUT or IOC_WS2 or 8;
{$EXTERNALSYM SIO_GET_GROUP_QOS}
SIO_MULTIPOINT_LOOPBACK = IOC_INOUT or IOC_WS2 or 9;
{$EXTERNALSYM SIO_MULTIPOINT_LOOPBACK}
SIO_MULTICAST_SCOPE = IOC_INOUT or IOC_WS2 or 10;
{$EXTERNALSYM SIO_MULTICAST_SCOPE}
SIO_SET_QOS = IOC_INOUT or IOC_WS2 or 11;
{$EXTERNALSYM SIO_SET_QOS}
SIO_SET_GROUP_QOS = IOC_INOUT or IOC_WS2 or 12;
{$EXTERNALSYM SIO_SET_GROUP_QOS}
SIO_TRANSLATE_HANDLE = IOC_INOUT or IOC_WS2 or 13;
{$EXTERNALSYM SIO_TRANSLATE_HANDLE}
SIO_ROUTING_INTERFACE_QUERY = IOC_INOUT or IOC_WS2 or 20;
{$EXTERNALSYM SIO_ROUTING_INTERFACE_QUERY}
SIO_ROUTING_INTERFACE_CHANGE = IOC_INOUT or IOC_WS2 or 21;
{$EXTERNALSYM SIO_ROUTING_INTERFACE_CHANGE}
SIO_ADDRESS_LIST_QUERY = IOC_OUT or IOC_WS2 or 22;
{$EXTERNALSYM SIO_ADDRESS_LIST_QUERY}
SIO_ADDRESS_LIST_CHANGE = IOC_VOID or IOC_WS2 or 23;
{$EXTERNALSYM SIO_ADDRESS_LIST_CHANGE}
SIO_QUERY_TARGET_PNP_HANDLE = IOC_OUT or IOC_WS2 or 24;
{$EXTERNALSYM SIO_QUERY_TARGET_PNP_HANDLE}
SIO_ADDRESS_LIST_SORT = IOC_INOUT or IOC_WS2 or 25;
{$EXTERNALSYM SIO_ADDRESS_LIST_SORT}
//
// WinSock 2 extensions -- data types for the condition function in
// WSAAccept() and overlapped I/O completion routine.
//
type
LPCONDITIONPROC = function (lpCallerId, lpCallerData: LPWSABUF; lpSQOS, lpGQOS: LPQOS; lpCalleeId, lpCalleeData: LPWSABUF;
g: PGROUP; dwCallbackData: DWORD_PTR): Integer; stdcall;
{$EXTERNALSYM LPCONDITIONPROC}
LPWSAOVERLAPPED_COMPLETION_ROUTINE = procedure (dwError, cbTransferred: DWORD; lpOverlapped: LPWSAOVERLAPPED; dwFlags: DWORD); stdcall;
{$EXTERNALSYM LPWSAOVERLAPPED_COMPLETION_ROUTINE}
//
// WinSock 2 extension -- manifest constants and associated structures
// for WSANSPIoctl()
//
const
SIO_NSP_NOTIFY_CHANGE = IOC_IN or IOC_WS2 or 25;
{$EXTERNALSYM SIO_NSP_NOTIFY_CHANGE}
type
_WSACOMPLETIONTYPE = (
NSP_NOTIFY_IMMEDIATELY,
NSP_NOTIFY_HWND,
NSP_NOTIFY_EVENT,
NSP_NOTIFY_PORT,
NSP_NOTIFY_APC);
{$EXTERNALSYM _WSACOMPLETIONTYPE}
WSACOMPLETIONTYPE = _WSACOMPLETIONTYPE;
{$EXTERNALSYM WSACOMPLETIONTYPE}
PWSACOMPLETIONTYPE = ^WSACOMPLETIONTYPE;
{$EXTERNALSYM PWSACOMPLETIONTYPE}
LPWSACOMPLETIONTYPE = ^WSACOMPLETIONTYPE;
{$EXTERNALSYM LPWSACOMPLETIONTYPE}
TWsaCompletionType = WSACOMPLETIONTYPE;
_WSACOMPLETION = record
Type_: WSACOMPLETIONTYPE;
case Integer of // Parameters
0: ( // WindowMessage
hWnd: HWND;
uMsg: UINT;
context: WPARAM);
(* TODO
1: ( // Event
lpOverlapped: LPWSAOVERLAPPED);
2: ( // Apc
lpOverlapped: LPWSAOVERLAPPED;
lpfnCompletionProc: LPWSAOVERLAPPED_COMPLETION_ROUTINE);
*)
3: ( // Port
lpOverlapped: LPWSAOVERLAPPED;
hPort: HANDLE;
Key: ULONG_PTR);
end;
{$EXTERNALSYM _WSACOMPLETION}
WSACOMPLETION = _WSACOMPLETION;
{$EXTERNALSYM WSACOMPLETION}
PWSACOMPLETION = ^WSACOMPLETION;
{$EXTERNALSYM PWSACOMPLETION}
LPWSACOMPLETION = ^WSACOMPLETION;
{$EXTERNALSYM LPWSACOMPLETION}
TWsaCompletion = WSACOMPLETION;
//
// WinSock 2 extension -- manifest constants for SIO_TRANSLATE_HANDLE ioctl
//
const
TH_NETDEV = $00000001;
{$EXTERNALSYM TH_NETDEV}
TH_TAPI = $00000002;
{$EXTERNALSYM TH_TAPI}
//
// Microsoft Windows Extended data types required for the functions to
// convert back and forth between binary and string forms of
// addresses.
//
type
LPSOCKADDR = ^sockaddr;
{$EXTERNALSYM LPSOCKADDR}
PSOCKADDR_STORAGE = ^sockaddr_storage;
{$EXTERNALSYM PSOCKADDR_STORAGE}
LPSOCKADDR_STORAGE = ^sockaddr_storage;
{$EXTERNALSYM LPSOCKADDR_STORAGE}
//
// Manifest constants and type definitions related to name resolution and
// registration (RNR) API
//
_BLOB = record
cbSize: ULONG;
pBlobData: LPBYTE;
end;
{$EXTERNALSYM _BLOB}
BLOB = _BLOB;
{$EXTERNALSYM BLOB}
LPBLOB = ^BLOB;
{$EXTERNALSYM LPBLOB}
TBlob = BLOB;
PBlob = LPBLOB;
//
// Service Install Flags
//
const
SERVICE_MULTIPLE = ($00000001);
{$EXTERNALSYM SERVICE_MULTIPLE}
//
//& Name Spaces
//
NS_ALL = (0);
{$EXTERNALSYM NS_ALL}
NS_SAP = (1);
{$EXTERNALSYM NS_SAP}
NS_NDS = (2);
{$EXTERNALSYM NS_NDS}
NS_PEER_BROWSE = (3);
{$EXTERNALSYM NS_PEER_BROWSE}
NS_SLP = (5);
{$EXTERNALSYM NS_SLP}
NS_DHCP = (6);
{$EXTERNALSYM NS_DHCP}
NS_TCPIP_LOCAL = (10);
{$EXTERNALSYM NS_TCPIP_LOCAL}
NS_TCPIP_HOSTS = (11);
{$EXTERNALSYM NS_TCPIP_HOSTS}
NS_DNS = (12);
{$EXTERNALSYM NS_DNS}
NS_NETBT = (13);
{$EXTERNALSYM NS_NETBT}
NS_WINS = (14);
{$EXTERNALSYM NS_WINS}
NS_NLA = (15); // Network Location Awareness
{$EXTERNALSYM NS_NLA}
NS_NBP = (20);
{$EXTERNALSYM NS_NBP}
NS_MS = (30);
{$EXTERNALSYM NS_MS}
NS_STDA = (31);
{$EXTERNALSYM NS_STDA}
NS_NTDS = (32);
{$EXTERNALSYM NS_NTDS}
NS_X500 = (40);
{$EXTERNALSYM NS_X500}
NS_NIS = (41);
{$EXTERNALSYM NS_NIS}
NS_NISPLUS = (42);
{$EXTERNALSYM NS_NISPLUS}
NS_WRQ = (50);
{$EXTERNALSYM NS_WRQ}
NS_NETDES = (60); // Network Designers Limited
{$EXTERNALSYM NS_NETDES}
//
// Resolution flags for WSAGetAddressByName().
// Note these are also used by the 1.1 API GetAddressByName, so
// leave them around.
//
RES_UNUSED_1 = ($00000001);
{$EXTERNALSYM RES_UNUSED_1}
RES_FLUSH_CACHE = ($00000002);
{$EXTERNALSYM RES_FLUSH_CACHE}
RES_SERVICE = ($00000004);
{$EXTERNALSYM RES_SERVICE}
//
// Well known value names for Service Types
//
SERVICE_TYPE_VALUE_IPXPORTA = 'IpxSocket';
{$EXTERNALSYM SERVICE_TYPE_VALUE_IPXPORTA}
SERVICE_TYPE_VALUE_IPXPORTW = WideString('IpxSocket');
{$EXTERNALSYM SERVICE_TYPE_VALUE_IPXPORTW}
SERVICE_TYPE_VALUE_SAPIDA = 'SapId';
{$EXTERNALSYM SERVICE_TYPE_VALUE_SAPIDA}
SERVICE_TYPE_VALUE_SAPIDW = WideString('SapId');
{$EXTERNALSYM SERVICE_TYPE_VALUE_SAPIDW}
SERVICE_TYPE_VALUE_TCPPORTA = 'TcpPort';
{$EXTERNALSYM SERVICE_TYPE_VALUE_TCPPORTA}
SERVICE_TYPE_VALUE_TCPPORTW = WideString('TcpPort');
{$EXTERNALSYM SERVICE_TYPE_VALUE_TCPPORTW}
SERVICE_TYPE_VALUE_UDPPORTA = 'UdpPort';
{$EXTERNALSYM SERVICE_TYPE_VALUE_UDPPORTA}
SERVICE_TYPE_VALUE_UDPPORTW = WideString('UdpPort');
{$EXTERNALSYM SERVICE_TYPE_VALUE_UDPPORTW}
SERVICE_TYPE_VALUE_OBJECTIDA = 'ObjectId';
{$EXTERNALSYM SERVICE_TYPE_VALUE_OBJECTIDA}
SERVICE_TYPE_VALUE_OBJECTIDW = WideString('ObjectId');
{$EXTERNALSYM SERVICE_TYPE_VALUE_OBJECTIDW}
{$IFDEF UNICODE}
SERVICE_TYPE_VALUE_SAPID = SERVICE_TYPE_VALUE_SAPIDW;
{$EXTERNALSYM SERVICE_TYPE_VALUE_SAPID}
SERVICE_TYPE_VALUE_TCPPORT = SERVICE_TYPE_VALUE_TCPPORTW;
{$EXTERNALSYM SERVICE_TYPE_VALUE_TCPPORT}
SERVICE_TYPE_VALUE_UDPPORT = SERVICE_TYPE_VALUE_UDPPORTW;
{$EXTERNALSYM SERVICE_TYPE_VALUE_UDPPORT}
SERVICE_TYPE_VALUE_OBJECTID = SERVICE_TYPE_VALUE_OBJECTIDW;
{$EXTERNALSYM SERVICE_TYPE_VALUE_OBJECTID}
{$ELSE}
SERVICE_TYPE_VALUE_SAPID = SERVICE_TYPE_VALUE_SAPIDA;
{$EXTERNALSYM SERVICE_TYPE_VALUE_SAPID}
SERVICE_TYPE_VALUE_TCPPORT = SERVICE_TYPE_VALUE_TCPPORTA;
{$EXTERNALSYM SERVICE_TYPE_VALUE_TCPPORT}
SERVICE_TYPE_VALUE_UDPPORT = SERVICE_TYPE_VALUE_UDPPORTA;
{$EXTERNALSYM SERVICE_TYPE_VALUE_UDPPORT}
SERVICE_TYPE_VALUE_OBJECTID = SERVICE_TYPE_VALUE_OBJECTIDA;
{$EXTERNALSYM SERVICE_TYPE_VALUE_OBJECTID}
{$ENDIF}
//
// SockAddr Information
//
type
LPSOCKET_ADDRESS = ^SOCKET_ADDRESS;
{$EXTERNALSYM LPSOCKET_ADDRESS}
PSOCKET_ADDRESS = ^SOCKET_ADDRESS;
{$EXTERNALSYM PSOCKET_ADDRESS}
_SOCKET_ADDRESS = record
lpSockaddr: LPSOCKADDR;
iSockaddrLength: Integer;
end;
{$EXTERNALSYM _SOCKET_ADDRESS}
SOCKET_ADDRESS = _SOCKET_ADDRESS;
{$EXTERNALSYM SOCKET_ADDRESS}
TSocketAddress = SOCKET_ADDRESS;
PSocketAddress = PSOCKET_ADDRESS;
//
// CSAddr Information
//
LPCSADDR_INFO = ^CSADDR_INFO;
{$EXTERNALSYM LPCSADDR_INFO}
PCSADDR_INFO = ^CSADDR_INFO;
{$EXTERNALSYM PCSADDR_INFO}
_CSADDR_INFO = record
LocalAddr: SOCKET_ADDRESS;
RemoteAddr: SOCKET_ADDRESS;
iSocketType: Integer;
iProtocol: Integer;
end;
{$EXTERNALSYM _CSADDR_INFO}
CSADDR_INFO = _CSADDR_INFO;
{$EXTERNALSYM CSADDR_INFO}
TCsAddrInfo = CSADDR_INFO;
PCsAddrInfo = PCSADDR_INFO;
//
// Address list returned via SIO_ADDRESS_LIST_QUERY
//
LPSOCKET_ADDRESS_LIST = ^SOCKET_ADDRESS_LIST;
{$EXTERNALSYM LPSOCKET_ADDRESS_LIST}
_SOCKET_ADDRESS_LIST = record
iAddressCount: Integer;
Address: array [0..0] of SOCKET_ADDRESS;
end;
{$EXTERNALSYM _SOCKET_ADDRESS_LIST}
SOCKET_ADDRESS_LIST = _SOCKET_ADDRESS_LIST;
{$EXTERNALSYM SOCKET_ADDRESS_LIST}
TSocketAddressList = SOCKET_ADDRESS_LIST;
PSocketAddressList = LPSOCKET_ADDRESS_LIST;
//
// Address Family/Protocol Tuples
//
LPAFPROTOCOLS = ^AFPROTOCOLS;
{$EXTERNALSYM LPAFPROTOCOLS}
PAFPROTOCOLS = ^AFPROTOCOLS;
{$EXTERNALSYM PAFPROTOCOLS}
_AFPROTOCOLS = record
iAddressFamily: Integer;
iProtocol: Integer;
end;
{$EXTERNALSYM _AFPROTOCOLS}
AFPROTOCOLS = _AFPROTOCOLS;
{$EXTERNALSYM AFPROTOCOLS}
TAfProtocols = AFPROTOCOLS;
//
// Client Query API Typedefs
//
//
// The comparators
//
_WSAEcomparator = (COMP_EQUAL, COMP_NOTLESS);
{$EXTERNALSYM _WSAEcomparator}
WSAECOMPARATOR = _WSAEcomparator;
{$EXTERNALSYM WSAECOMPARATOR}
PWSAECOMPARATOR = ^WSAECOMPARATOR;
{$EXTERNALSYM PWSAECOMPARATOR}
LPWSAECOMPARA
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -