📄 idwinsock2.pas
字号:
end;
type
{$NODEFINE TWSAProtocol_InfoA}
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 {TWSAProtocol_InfoA};
{$NODEFINE PWSAProtocol_InfoA}
PWSAProtocol_InfoA = ^TWSAProtocol_InfoA;
{$NODEFINE LPWSAProtocol_InfoA}
LPWSAProtocol_InfoA = PWSAProtocol_InfoA;
{$NODEFINE TWSAProtocol_InfoW}
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 {TWSAProtocol_InfoW};
{$NODEFINE PWSAProtocol_InfoW}
PWSAProtocol_InfoW = ^TWSAProtocol_InfoW;
{$NODEFINE PWSAProtocol_InfoA}
LPWSAProtocol_InfoW = PWSAProtocol_InfoW;
{$IFDEF UNICODE}
{$NODEFINE WSAProtocol_Info}
WSAProtocol_Info = TWSAProtocol_InfoW;
{$NODEFINE TWSAProtocol_Info}
TWSAProtocol_Info = TWSAProtocol_InfoW;
{$NODEFINE PWSAProtocol_Info}
PWSAProtocol_Info = PWSAProtocol_InfoW;
{$NODEFINE LPWSAProtocol_Info}
LPWSAProtocol_Info = PWSAProtocol_InfoW;
{$ELSE}
{$NODEFINE WSAProtocol_Info}
WSAProtocol_Info = TWSAProtocol_InfoA;
{$NODEFINE TWSAProtocol_Info}
TWSAProtocol_Info = TWSAProtocol_InfoA;
{$NODEFINE PWSAProtocol_Info}
PWSAProtocol_Info = PWSAProtocol_InfoA;
{$NODEFINE LPWSAProtocol_Info}
LPWSAProtocol_Info = PWSAProtocol_InfoA;
{$ENDIF}
const
// flag bit definitions for dwProviderFlags
pfl_multiple_proto_entries = $00000001;
pfl_recommended_proto_entry = $00000002;
pfl_hidden = $00000004;
pfl_matches_protocol_zero = $00000008;
// flag bit definitions for dwServiceFlags1
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;
// WinSock 2 extension -- manifest constants for WSAJoinLeaf()
jl_sender_only = $01;
jl_receiver_only = $02;
jl_both = $04;
// WinSock 2 extension -- manifest constants for WSASocket()
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;
// WinSock 2 extension -- manifest constants for WSAIoctl()
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; // see below SOCKET_ADDRESS_LIST
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;
// WinSock 2 extension -- manifest constants for SIO_TRANSLATE_HANDLE ioctl
th_netdev = $00000001;
th_tapi = $00000002;
type
// Manifest constants and type definitions related to name resolution and
// registration (RNR) API
{$IFDEF CIL}
TBLOB = packed record
cbSize : U_LONG;
pBlobData : ^BYTE;
end;
PBLOB = ^TBLOB;
{$ELSE}
TBLOB = packed record
cbSize : U_LONG;
pBlobData : PBYTE;
end;
PBLOB = ^TBLOB;
{$ENDIF}
// Service Install Flags
const
service_multiple = $00000001;
// & name spaces
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;
{ Resolution flags for WSAGetAddressByName().
Note these are also used by the 1.1 API GetAddressByName, so leave them around. }
res_unused_1 = $00000001;
res_flush_cache = $00000002;
res_service = $00000004;
{ Well known value names for Service Types }
service_type_value_ipxporta = 'IpxSocket'; {Do not Localize}
service_type_value_sapida = 'SapId'; {Do not Localize}
service_type_value_tcpporta = 'TcpPort'; {Do not Localize}
service_type_value_udpporta = 'UdpPort'; {Do not Localize}
service_type_value_objectida = 'ObjectId'; {Do not Localize}
{$IFDEF CIL}
service_type_value_ipxportw : WideString = 'IpxSocket'; {Do not Localize}
service_type_value_sapidw : WideString = 'SapId'; {Do not Localize}
service_type_value_tcpportw : WideString = 'TcpPort'; {Do not Localize}
service_type_value_udpportw : WideString = 'UdpPort'; {Do not Localize}
service_type_value_objectidw : WideString = 'ObjectId'; {Do not Localize}
{$ELSE}
service_type_value_ipxportw : PWideChar = 'IpxSocket'; {Do not Localize}
service_type_value_sapidw : PWideChar = 'SapId'; {Do not Localize}
service_type_value_tcpportw : PWideChar = 'TcpPort'; {Do not Localize}
service_type_value_udpportw : PWideChar = 'UdpPort'; {Do not Localize}
service_type_value_objectidw : PWideChar = 'ObjectId'; {Do not Localize}
{$ENDIF}
{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;}
{$IFDEF UNICODE}
service_type_value_sapid : PWideChar = 'SapId'; {Do not Localize}
service_type_value_tcpport : PWideChar = 'TcpPort'; {Do not Localize}
service_type_value_udpport : PWideChar = 'UdpPort'; {Do not Localize}
service_type_value_objectid : PWideChar = 'ObjectId'; {Do not Localize}
{$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
SOCKET_ADDRESS = packed record
lpSockaddr : PSockAddr;
iSockaddrLength : Integer;
end;
PSOCKET_ADDRESS = ^SOCKET_ADDRESS;
// CSAddr Information
CSADDR_INFO = packed record
LocalAddr, RemoteAddr : SOCKET_ADDRESS;
iSocketType, iProtocol : LongInt;
end;
PCSADDR_INFO = ^CSADDR_INFO;
LPCSADDR_INFO = ^CSADDR_INFO;
// Address list returned via WSAIoctl( SIO_ADDRESS_LIST_QUERY )
SOCKET_ADDRESS_LIST = packed record
iAddressCount : Integer;
Address : Array [0..0] of SOCKET_ADDRESS;
end;
lpsocket_ADDRESS_LIST = ^SOCKET_ADDRESS_LIST;
// Address Family/Protocol Tuples
AFProtocols = record
iAddressFamily : Integer;
iProtocol : Integer;
end;
TAFProtocols = AFProtocols;
PAFProtocols = ^TAFProtocols;
// Client Query API Typedefs
// The comparators
TWSAEComparator = (COMP_EQUAL {= 0}, 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;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -