📄 idwinsock2.pas
字号:
LITTLEENDIAN = $0001;
{$EXTERNALSYM SECURITY_PROTOCOL_NONE}
SECURITY_PROTOCOL_NONE = $0000;
// WinSock 2 extension -- manifest constants for WSAJoinLeaf()
{$EXTERNALSYM JL_SENDER_ONLY}
JL_SENDER_ONLY = $01;
{$EXTERNALSYM JL_RECEIVER_ONLY}
JL_RECEIVER_ONLY = $02;
{$EXTERNALSYM JL_BOTH}
JL_BOTH = $04;
// WinSock 2 extension -- manifest constants for WSASocket()
{$EXTERNALSYM WSA_FLAG_OVERLAPPED}
WSA_FLAG_OVERLAPPED = $01;
{$EXTERNALSYM WSA_FLAG_MULTIPOINT_C_ROOT}
WSA_FLAG_MULTIPOINT_C_ROOT = $02;
{$EXTERNALSYM WSA_FLAG_MULTIPOINT_C_LEAF}
WSA_FLAG_MULTIPOINT_C_LEAF = $04;
{$EXTERNALSYM WSA_FLAG_MULTIPOINT_D_ROOT}
WSA_FLAG_MULTIPOINT_D_ROOT = $08;
{$EXTERNALSYM WSA_FLAG_MULTIPOINT_D_LEAF}
WSA_FLAG_MULTIPOINT_D_LEAF = $10;
// WinSock 2 extension -- manifest constants for WSAIoctl()
{$EXTERNALSYM IOC_UNIX}
IOC_UNIX = $00000000;
{$EXTERNALSYM IOC_WS2}
IOC_WS2 = $08000000;
{$EXTERNALSYM IOC_PROTOCOL}
IOC_PROTOCOL = $10000000;
{$EXTERNALSYM IOC_VENDOR}
IOC_VENDOR = $18000000;
{$EXTERNALSYM SIO_ASSOCIATE_HANDLE}
SIO_ASSOCIATE_HANDLE = IOC_IN or IOC_WS2 or 1;
{$EXTERNALSYM SIO_ENABLE_CIRCULAR_QUEUEING}
SIO_ENABLE_CIRCULAR_QUEUEING = IOC_VOID or IOC_WS2 or 2;
{$EXTERNALSYM SIO_FIND_ROUTE}
SIO_FIND_ROUTE = IOC_OUT or IOC_WS2 or 3;
{$EXTERNALSYM SIO_FLUSH}
SIO_FLUSH = IOC_VOID or IOC_WS2 or 4;
{$EXTERNALSYM SIO_GET_BROADCAST_ADDRESS}
SIO_GET_BROADCAST_ADDRESS = IOC_OUT or IOC_WS2 or 5;
{$EXTERNALSYM SIO_GET_EXTENSION_FUNCTION_POINTER}
SIO_GET_EXTENSION_FUNCTION_POINTER = IOC_INOUT or IOC_WS2 or 6;
{$EXTERNALSYM SIO_GET_QOS}
SIO_GET_QOS = IOC_INOUT or IOC_WS2 or 7;
{$EXTERNALSYM SIO_GET_GROUP_QOS}
SIO_GET_GROUP_QOS = IOC_INOUT or IOC_WS2 or 8;
{$EXTERNALSYM SIO_MULTIPOINT_LOOPBACK}
SIO_MULTIPOINT_LOOPBACK = IOC_IN or IOC_WS2 or 9;
{$EXTERNALSYM SIO_MULTICAST_SCOPE}
SIO_MULTICAST_SCOPE = IOC_IN or IOC_WS2 or 10;
{$EXTERNALSYM SIO_SET_QOS}
SIO_SET_QOS = IOC_IN or IOC_WS2 or 11;
{$EXTERNALSYM SIO_SET_GROUP_QOS}
SIO_SET_GROUP_QOS = IOC_IN or IOC_WS2 or 12;
{$EXTERNALSYM SIO_TRANSLATE_HANDLE}
SIO_TRANSLATE_HANDLE = IOC_INOUT or IOC_WS2 or 13;
{$EXTERNALSYM SIO_ROUTING_INTERFACE_QUERY}
SIO_ROUTING_INTERFACE_QUERY = IOC_INOUT or IOC_WS2 or 20;
{$EXTERNALSYM SIO_ROUTING_INTERFACE_CHANGE}
SIO_ROUTING_INTERFACE_CHANGE = IOC_IN or IOC_WS2 or 21;
{$EXTERNALSYM SIO_ADDRESS_LIST_QUERY}
SIO_ADDRESS_LIST_QUERY = IOC_OUT or IOC_WS2 or 22; // see below SOCKET_ADDRESS_LIST
{$EXTERNALSYM SIO_ADDRESS_LIST_CHANGE}
SIO_ADDRESS_LIST_CHANGE = IOC_VOID or IOC_WS2 or 23;
{$EXTERNALSYM SIO_QUERY_TARGET_PNP_HANDLE}
SIO_QUERY_TARGET_PNP_HANDLE = IOC_OUT or IOC_WS2 or 24;
{$EXTERNALSYM SIO_ADDRESS_LIST_SORT}
SIO_ADDRESS_LIST_SORT = IOC_INOUT or IOC_WS2 or 25;
// WinSock 2 extension -- manifest constants for SIO_TRANSLATE_HANDLE ioctl
{$EXTERNALSYM TH_NETDEV}
TH_NETDEV = $00000001;
{$EXTERNALSYM TH_TAPI}
TH_TAPI = $00000002;
type
// Manifest constants and type definitions related to name resolution and
// registration (RNR) API
{$EXTERNALSYM BLOB}
BLOB = packed record
cbSize : ULONG;
pBlobData : PBYTE;
end;
TBLOB = BLOB;
PBLOB = ^TBLOB;
{$EXTERNALSYM LPBLOB}
LPBLOB = PBLOB;
// Service Install Flags
const
{$EXTERNALSYM SERVICE_MULTIPLE}
SERVICE_MULTIPLE = $00000001;
// & name spaces
{$EXTERNALSYM NS_ALL}
NS_ALL = 0;
{$EXTERNALSYM NS_SAP}
NS_SAP = 1;
{$EXTERNALSYM NS_NDS}
NS_NDS = 2;
{$EXTERNALSYM NS_PEER_BROWSE}
NS_PEER_BROWSE = 3;
{$EXTERNALSYM NS_SLP}
NS_SLP = 5;
{$EXTERNALSYM NS_DHCP}
NS_DHCP = 6;
{$EXTERNALSYM NS_TCPIP_LOCAL}
NS_TCPIP_LOCAL = 10;
{$EXTERNALSYM NS_TCPIP_HOSTS}
NS_TCPIP_HOSTS = 11;
{$EXTERNALSYM NS_DNS}
NS_DNS = 12;
{$EXTERNALSYM NS_NETBT}
NS_NETBT = 13;
{$EXTERNALSYM NS_WINS}
NS_WINS = 14;
{$EXTERNALSYM NS_NLA}
NS_NLA = 15; // Network Location Awareness
{$EXTERNALSYM NS_NBP}
NS_NBP = 20;
{$EXTERNALSYM NS_MS}
NS_MS = 30;
{$EXTERNALSYM NS_STDA}
NS_STDA = 31;
{$EXTERNALSYM NS_NTDS}
NS_NTDS = 32;
{$EXTERNALSYM NS_X500}
NS_X500 = 40;
{$EXTERNALSYM NS_NIS}
NS_NIS = 41;
{$EXTERNALSYM NS_NISPLUS}
NS_NISPLUS = 42;
{$EXTERNALSYM NS_WRQ}
NS_WRQ = 50;
{$EXTERNALSYM NS_NETDES}
NS_NETDES = 60; // Network Designers Limited
{ Resolution flags for WSAGetAddressByName().
Note these are also used by the 1.1 API GetAddressByName, so leave them around. }
{$EXTERNALSYM RES_UNUSED_1}
RES_UNUSED_1 = $00000001;
{$EXTERNALSYM RES_FLUSH_CACHE}
RES_FLUSH_CACHE = $00000002;
{$EXTERNALSYM RES_SERVICE}
RES_SERVICE = $00000004;
{ Well known value names for Service Types }
{$EXTERNALSYM SERVICE_TYPE_VALUE_IPXPORTA}
SERVICE_TYPE_VALUE_IPXPORTA = 'IpxSocket'; {Do not Localize}
{$EXTERNALSYM SERVICE_TYPE_VALUE_IPXPORTW}
SERVICE_TYPE_VALUE_IPXPORTW : PWideChar = 'IpxSocket'; {Do not Localize}
{$EXTERNALSYM SERVICE_TYPE_VALUE_SAPIDA}
SERVICE_TYPE_VALUE_SAPIDA = 'SapId'; {Do not Localize}
{$EXTERNALSYM SERVICE_TYPE_VALUE_SAPIDW}
SERVICE_TYPE_VALUE_SAPIDW : PWideChar = 'SapId'; {Do not Localize}
{$EXTERNALSYM SERVICE_TYPE_VALUE_TCPPORTA}
SERVICE_TYPE_VALUE_TCPPORTA = 'TcpPort'; {Do not Localize}
{$EXTERNALSYM SERVICE_TYPE_VALUE_TCPPORTW}
SERVICE_TYPE_VALUE_TCPPORTW : PWideChar = 'TcpPort'; {Do not Localize}
{$EXTERNALSYM SERVICE_TYPE_VALUE_UDPPORTA}
SERVICE_TYPE_VALUE_UDPPORTA = 'UdpPort'; {Do not Localize}
{$EXTERNALSYM SERVICE_TYPE_VALUE_UDPPORTW}
SERVICE_TYPE_VALUE_UDPPORTW : PWideChar = 'UdpPort'; {Do not Localize}
{$EXTERNALSYM SERVICE_TYPE_VALUE_OBJECTIDA}
SERVICE_TYPE_VALUE_OBJECTIDA = 'ObjectId'; {Do not Localize}
{$EXTERNALSYM SERVICE_TYPE_VALUE_OBJECTIDW}
SERVICE_TYPE_VALUE_OBJECTIDW : PWideChar = 'ObjectId'; {Do not Localize}
{$EXTERNALSYM SERVICE_TYPE_VALUE_SAPID}
{$EXTERNALSYM SERVICE_TYPE_VALUE_TCPPORT}
{$EXTERNALSYM SERVICE_TYPE_VALUE_UDPPORT}
{$EXTERNALSYM SERVICE_TYPE_VALUE_OBJECTID}
{$IFDEF UNICODE}
SERVICE_TYPE_VALUE_SAPID : PWideChar = SERVICE_TYPE_VALUE_SAPIDW;
SERVICE_TYPE_VALUE_TCPPORT : PWideChar = SERVICE_TYPE_VALUE_TCPPORTW;
SERVICE_TYPE_VALUE_UDPPORT : PWideChar = SERVICE_TYPE_VALUE_UDPPORTW;
SERVICE_TYPE_VALUE_OBJECTID : PWideChar = 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}
// SockAddr Information
type
{$EXTERNALSYM SOCKET_ADDRESS}
SOCKET_ADDRESS = packed record
lpSockaddr : PSockAddr;
iSockaddrLength : Integer;
end;
TSocket_Address = SOCKET_ADDRESS;
{$EXTERNALSYM PSOCKET_ADDRESS}
PSOCKET_ADDRESS = ^TSocket_Address;
// CSAddr Information
{$EXTERNALSYM CSADDR_INFO}
CSADDR_INFO = packed record
LocalAddr, RemoteAddr : TSocket_Address;
iSocketType, iProtocol : Integer;
end;
TCSAddr_Info = CSADDR_INFO;
{$EXTERNALSYM PCSADDR_INFO}
PCSADDR_INFO = ^TCSAddr_Info;
{$EXTERNALSYM LPCSADDR_INFO}
LPCSADDR_INFO = PCSADDR_INFO;
// Address list returned via WSAIoctl( SIO_ADDRESS_LIST_QUERY )
{$EXTERNALSYM SOCKET_ADDRESS_LIST}
SOCKET_ADDRESS_LIST = packed record
iAddressCount : Integer;
Address : Array [0..0] of TSocket_Address;
end;
TSocket_Address_List = SOCKET_ADDRESS_LIST;
{$EXTERNALSYM LPSOCKET_ADDRESS_LIST}
LPSOCKET_ADDRESS_LIST = ^TSocket_Address_List;
// Address Family/Protocol Tuples
{$EXTERNALSYM AFPROTOCOLS}
AFPROTOCOLS = record
iAddressFamily : Integer;
iProtocol : Integer;
end;
TAFProtocols = AFPROTOCOLS;
{$EXTERNALSYM PAFPROTOCOLS}
PAFPROTOCOLS = ^TAFProtocols;
{$EXTERNALSYM LPAFPROTOCOLS}
LPAFPROTOCOLS = PAFPROTOCOLS;
// Client Query API Typedefs
// The comparators
{$EXTERNALSYM WSAECOMPARATOR}
WSAECOMPARATOR = (COMP_EQUAL {= 0}, COMP_NOTLESS );
TWSAEComparator = WSAECOMPARATOR;
{$EXTERNALSYM WSAVERSION}
WSAVERSION = record
dwVersion : DWORD;
ecHow : TWSAEComparator;
end;
TWSAVersion = WSAVERSION;
{$EXTERNALSYM PWSAVERSION}
PWSAVERSION = ^TWSAVersion;
{$EXTERNALSYM LPWSAVERSION}
LPWSAVERSION = PWSAVERSION;
{$EXTERNALSYM WSAQUERYSETA}
WSAQUERYSETA = packed record
dwSize : DWORD;
lpszServiceInstanceName : PChar;
lpServiceClassId : PGUID;
lpVersion : LPWSAVERSION;
lpszComment : PChar;
dwNameSpace : DWORD;
lpNSProviderId : PGUID;
lpszContext : PChar;
dwNumberOfProtocols : DWORD;
lpafpProtocols : LPAFPROTOCOLS;
lpszQueryString : PChar;
dwNumberOfCsAddrs : DWORD;
lpcsaBuffer : LPCSADDR_INFO;
dwOutputFlags : DWORD;
lpBlob : LPBLOB;
end;
TWSAQuerySetA = WSAQUERYSETA;
{$EXTERNALSYM PWSAQUERYSETA}
PWSAQUERYSETA = ^TWSAQuerySetA;
{$EXTERNALSYM LPWSAQUERYSETA}
LPWSAQUERYSETA = PWSAQUERYSETA;
{$EXTERNALSYM WSAQUERYSETW}
WSAQUERYSETW = packed record
dwSize : DWORD;
lpszServiceInstanceName : PWideChar;
lpServiceClassId : PGUID;
lpVersion : LPWSAVERSION;
lpszComment : PWideChar;
dwNameSpace : DWORD;
lpNSProviderId : PGUID;
lpszContext : PWideChar;
dwNumberOfProtocols : DWORD;
lpafpProtocols : LPAFPROTOCOLS;
lpszQueryString : PWideChar;
dwNumberOfCsAddrs : DWORD;
lpcsaBuffer : LPCSADDR_INFO;
dwOutputFlags : DWORD;
lpBlob : LPBLOB;
end;
TWSAQuerySetW = WSAQUERYSETW;
{$EXTERNALSYM PWSAQUERYSETW}
PWSAQUERYSETW = ^TWSAQuerySetW;
{$EXTERNALSYM LPWSAQUERYSETW}
LPWSAQUERYSETW = PWSAQUERYSETW;
{$EXTERNALSYM LPWSAQUERYSET}
{$EXTERNALSYM PWSAQUERYSET}
{$IFDEF UNICODE}
TWSAQuerySet = TWSAQuerySetA;
PWSAQUERYSET = PWSAQUERYSETW;
LPWSAQUERYSET = LPWSAQUERYSETW;
{$ELSE}
TWSAQuerySet = TWSAQuerySetA;
PWSAQUERYSET = PWSAQUERYSETA;
LPWSAQUERYSET = LPWSAQUERYSETA;
{$ENDIF}
const
{$EXTERNALSYM LUP_DEEP}
LUP_DEEP = $0001;
{$EXTERNALSYM LUP_CONTAINERS}
LUP_CONTAINERS = $0002;
{$EXTERNALSYM LUP_NOCONTAINERS}
LUP_NOCONTAINERS = $0004;
{$EXTERNALSYM LUP_NEAREST}
LUP_NEAREST = $0008;
{$EXTERNALSYM LUP_RETURN_NAME}
LUP_RETURN_NAME = $0010;
{$EXTERNALSYM LUP_RETURN_TYPE}
LUP_RETURN_TYPE = $0020;
{$EXTERNALSYM LUP_RETURN_VERSION}
LUP_RETURN_VERSION = $0040;
{$EXTERNALSYM LUP_RETURN_COMMENT}
LUP_RETURN_COMMENT = $0080;
{$EXTERNALSYM LUP_RETURN_ADDR}
LUP_RETURN_ADDR = $0100;
{$EXTERNALSYM LUP_RETURN_BLOB}
LUP_RETURN_BLOB = $0200;
{$EXTERNALSYM LUP_RETURN_ALIASES}
LUP_RETURN_ALIASES = $0400;
{$EXTERNALSYM LUP_RETURN_QUERY_STRING}
LUP_RETURN_QUERY_STRING = $0800;
{$EXTERNALSYM LUP_RETURN_ALL}
LUP_RETURN_ALL = $0FF0;
{$EXTERNALSYM LUP_RES_SERVICE}
LUP_RES_SERVICE = $8000;
{$EXTERNALSYM LUP_FLUSHCACHE}
LUP_FLUSHCACHE = $1000;
{$EXTERNALSYM LUP_FLUSHPREVIOUS}
LUP_FLUSHPREVIOUS = $2000;
// Return flags
{$EXTERNALSYM RESULT_IS_ALIAS}
RESULT_IS_ALIAS = $0001;
{$EXTERNALSYM RESULT_IS_ADDED}
RESULT_IS_ADDED = $0010;
{$EXTERNALSYM RESULT_IS_CHANGED}
RESULT_IS_CHANGED = $0020;
{$EXTERNALSYM RESULT_IS_DELETED}
RESULT_IS_DELETED = $0040;
type
// Service Address Registration a
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -