Difference between revisions of "Unit GlobalSock"
Line 1,671: | Line 1,671: | ||
---- | ---- | ||
− | '' | + | |
+ | '''Integer types''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>tOS_INT = LongInt;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | | <code>tOS_UINT = DWORD;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | | <code>ptOS_INT = ^tOS_INT;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | | <code>ptOS_UINT = ^tOS_UINT;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | | <code>u_int = tOS_UINT;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | | <code>pu_int = ^u_int;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Character types''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>u_char = Char;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | | <code>pu_char = ^u_char;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Numeric types''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>u_short = Word;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | | <code>pu_short = ^u_short;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | | <code>u_long = DWORD;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | | <code>pu_long = ^u_long;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Socket types''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TSocket = GlobalTypes.TSocket;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''WSA event''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>WSAEVENT = GlobalTypes.WSAEVENT;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | | <code>PWSAEVENT = ^WSAEVENT;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | | <code>LPWSAEVENT = PWSAEVENT;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''MB character''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PMBChar = PChar;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''FD set''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>TFDSet = fdset;</code> | ||
+ | |||
+ | <code>PFDSet = ^TFDSet;</code> | ||
+ | |||
+ | <code>fdset = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>fd_count: u_int;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>fd_array: array[0..FD_SETSIZE-1] of TSocket;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Time value''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>TTimeVal = timeval;</code> | ||
+ | |||
+ | <code>PTimeVal = ^TTimeVal;</code> | ||
+ | |||
+ | <code>timeval = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>tv_sec: LongInt;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>tv_usec: LongInt;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Host entry''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>THostEnt = hostent;</code> | ||
+ | |||
+ | <code>PHostEnt = ^THostEnt;</code> | ||
+ | |||
+ | <code>hostent = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>h_name: PChar;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>h_aliases: ^PChar;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>h_addrtype: Smallint;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>h_length: Smallint;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>case Byte of</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>0: (h_addr_list: ^PChar);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>1: (h_addr: ^PChar)</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Network entry''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>TNetEnt = netent;</code> | ||
+ | |||
+ | <code>PNetEnt = ^TNetEnt;</code> | ||
+ | |||
+ | <code>netent = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>n_name: PChar;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>n_aliases: ^PChar;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>n_addrtype: Smallint;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>n_net: u_long;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Service entry''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>TServEnt = servent;</code> | ||
+ | |||
+ | <code>PServEnt = ^TServEnt;</code> | ||
+ | |||
+ | <code>servent = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>s_name: PChar;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>s_aliases: ^PChar;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>s_port: Smallint;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>s_proto: PChar;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Protocol entry''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>TProtoEnt = protoent;</code> | ||
+ | |||
+ | <code>PProtoEnt = ^TProtoEnt;</code> | ||
+ | |||
+ | <code>protoent = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>p_name: PChar;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>p_aliases: ^Pchar;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>p_proto: Smallint;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Address types''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>SunB = packed record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>s_b1, s_b2, s_b3, s_b4: u_char;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>SunW = packed record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>s_w1, s_w2: u_short;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''IPv4 address''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>TInAddr = in_addr;</code> | ||
+ | |||
+ | <code>PInAddr = ^TInAddr;</code> | ||
+ | |||
+ | <code>in_addr = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>case integer of</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>0: (S_un_b: SunB);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>1: (S_un_w: SunW);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>2: (S_addr: u_long);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>3: (S_bytes: packed array[1..4] of Byte);</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''IPv6 address''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>TIn6Addr = in6_addr;</code> | ||
+ | |||
+ | <code>PIn6Addr = ^TIn6Addr;</code> | ||
+ | |||
+ | <code>in6_addr = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: IPv6 version of above | ||
+ | |- | ||
+ | | <code>case byte of</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>0: (u6_addr8 : array[0..15] of byte);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>1: (u6_addr16 : array[0..7] of Word);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>2: (u6_addr32 : array[0..3] of Cardinal);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>3: (s6_addr8 : array[0..15] of shortint);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>4: (s6_addr : array[0..15] of shortint);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>5: (s6_addr16 : array[0..7] of smallint);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>6: (s6_addr32 : array[0..3] of LongInt);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>case integer of</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>0: (S6_u8: array[0..15] of u_char);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>1: (S6_u32: array[0..3] of u_int);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>2: (S6_u64: array[0..1] of Int64);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>S6_addr: array [0..15] of Byte;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''IPX address''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>TIpxAddr = ipx_addr;</code> | ||
+ | |||
+ | <code>PIpxAddr = ^TIpxAddr;</code> | ||
+ | |||
+ | <code>ipx_addr = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: IPX version of above | ||
+ | |- | ||
+ | | <code>S_net: array [0..3] of Byte;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>S_node: array [0..5] of Byte;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>S_socket: Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Socket address in IPv4''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>TSockAddrIn = sockaddr_in;</code> | ||
+ | |||
+ | <code>PSockAddrIn = ^TSockAddrIn;</code> | ||
+ | |||
+ | <code>sockaddr_in = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>case Integer of</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>0: (sin_family: u_short;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>sin_port: u_short;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>sin_addr: TInAddr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>sin_zero: array[0..7] of Char);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>1: (sa_family: u_short;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>sa_data: array[0..13] of Char)</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Socket address in IPv6''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>TSockAddrIn6 = sockaddr_in6;</code> | ||
+ | |||
+ | <code>PSockAddrIn6 = ^TSockAddrIn6;</code> | ||
+ | |||
+ | <code>sockaddr_in6 = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: IPv6 version of above | ||
+ | |- | ||
+ | | <code>sin6_family: u_short;</code> | ||
+ | | AF_INET6 | ||
+ | |- | ||
+ | | <code>sin6_port: u_short;</code> | ||
+ | | transport layer port # | ||
+ | |- | ||
+ | | <code>sin6_flowinfo: u_int;</code> | ||
+ | | IPv6 flow information | ||
+ | |- | ||
+ | | <code>sin6_addr: in6_addr;</code> | ||
+ | | IPv6 address | ||
+ | |- | ||
+ | | <code>sin6_scope_id: u_int;</code> | ||
+ | | set of interfaces for a scope | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Socket address IPX''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>TSockAddrIpx = sockaddr_ipx;</code> | ||
+ | |||
+ | <code>PSockAddrIpx = ^TSockAddrIpx;</code> | ||
+ | |||
+ | <code>sockaddr_ipx = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: IPX version of above | ||
+ | |- | ||
+ | | <code>sipx_family: u_short;</code> | ||
+ | | AF_IPX | ||
+ | |- | ||
+ | | <code>sipx_addr: ipx_addr;</code> | ||
+ | | IPX address | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Socket address''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | |colspan="2"|Note: Structure used by kernel to store most addresses. | ||
+ | |- | ||
+ | | <code>PSOCKADDR = ^TSockAddr;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | | <code>TSockAddr = sockaddr_in;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Socket address IPv6''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PSOCKADDR6 = ^TSockAddr6;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | | <code>TSockAddr6 = sockaddr_in6;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Socket protocol''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>TSockProto = sockproto;</code> | ||
+ | |||
+ | <code>PSockProto = ^TSockProto;</code> | ||
+ | |||
+ | <code>sockproto = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: Structure used by kernel to pass protocol information in raw sockets | ||
+ | |- | ||
+ | | <code>sp_family: u_short;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>sp_protocol: u_short;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Linger''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>TLinger = linger;</code> | ||
+ | |||
+ | <code>PLinger = ^TLinger;</code> | ||
+ | |||
+ | <code>linger = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: Structure used for manipulating linger option | ||
+ | |- | ||
+ | | <code>l_onoff: u_short;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>l_linger: u_short;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''WSA data''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>TWSAData = WSAData;</code> | ||
+ | |||
+ | <code>PWSAData = ^TWSAData;</code> | ||
+ | |||
+ | <code>WSAData = record </code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: Also WSDATA | ||
+ | |- | ||
+ | | <code>wVersion: Word;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>wHighVersion: Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>szDescription: array[0..WSADESCRIPTION_LEN] of Char;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>szSystemStatus: array[0..WSASYS_STATUS_LEN] of Char;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>iMaxSockets: Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>iMaxUdpDg: Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>lpVendorInfo: PChar;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Transmit file buffers''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>TTransmitFileBuffers = _TRANSMIT_FILE_BUFFERS;</code> | ||
+ | |||
+ | <code>TRANSMIT_FILE_BUFFERS = _TRANSMIT_FILE_BUFFERS;</code> | ||
+ | |||
+ | <code>PTransmitFileBuffers = ^TTransmitFileBuffers;</code> | ||
+ | |||
+ | <code>_TRANSMIT_FILE_BUFFERS = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>Head: Pointer;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>HeadLength: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Tail: Pointer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>TailLength: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Multicast request''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>TMulticastRequest = ip_mreq;</code> | ||
+ | |||
+ | <code>PMulticastRequest = ^TMulticastRequest;</code> | ||
+ | |||
+ | <code>ip_mreq = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: Argument structure for IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP | ||
+ | |- | ||
+ | | <code>IMRMultiAddr : TInAddr;</code> | ||
+ | | IP multicast address of group | ||
+ | |- | ||
+ | | <code>IMRInterface : TInAddr;</code> | ||
+ | | local IP address of interface | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''WSA interface row''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>TWSAIfRow = WSA_IFROW;</code> | ||
+ | |||
+ | <code>PWSAIfRow = PWSA_IFROW;</code> | ||
+ | |||
+ | <code>PWSA_IFROW = ^WSA_IFROW;</code> | ||
+ | |||
+ | <code>WSA_IFROW = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: Structures for WsControlEx (Note: Must be same as IP Helper) | ||
+ | |- | ||
+ | | <code>wszName: array [0..WSA_MAX_INTERFACE_NAME_LEN - 1] of WideChar;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>dwIndex: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwType: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwMtu: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwSpeed: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwPhysAddrLen: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>bPhysAddr: array [0..WSA_MAXLEN_PHYSADDR - 1] of Byte;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwAdminStatus: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwOperStatus: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwLastChange: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwInOctets: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwInUcastPkts: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwInNUcastPkts: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwInDiscards: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwInErrors: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwInUnknownProtos: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwOutOctets: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwOutUcastPkts: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwOutNUcastPkts: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwOutDiscards: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwOutErrors: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwOutQLen: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwDescrLen: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>bDescr: array[0..WSA_MAXLEN_IFDESCR - 1] of Byte;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''WSA interface table''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>TWSAIftable = WSA_IFTABLE;</code> | ||
+ | |||
+ | <code>PWSAIftable = PWSA_IFTABLE;</code> | ||
+ | |||
+ | <code>PWSA_IFTABLE = ^WSA_IFTABLE;</code> | ||
+ | |||
+ | <code>WSA_IFTABLE = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>dwNumEntries: DWORD;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>table: array [0..WSA_ANY_SIZE - 1] of WSA_IFROW;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''WSA IP statistics''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>TWSAIpStats = WSA_IPSTATS;</code> | ||
+ | |||
+ | <code>PWSAIpStats = PWSA_IPSTATS;</code> | ||
+ | |||
+ | <code>PWSA_IPSTATS = ^WSA_IPSTATS;</code> | ||
+ | |||
+ | <code>WSA_IPSTATS = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>dwForwarding: DWORD;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>dwDefaultTTL: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwInReceives: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwInHdrErrors: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwInAddrErrors: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwForwDatagrams: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwInUnknownProtos: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwInDiscards: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwInDelivers: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwOutRequests: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwRoutingDiscards: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwOutDiscards: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwOutNoRoutes: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwReasmTimeout: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwReasmReqds: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwReasmOks: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwReasmFails: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwFragOks: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwFragFails: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwFragCreates: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwNumIf: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwNumAddr: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwNumRoutes: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''WSA IP address row''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>TWSAIpAddrRow = WSA_IPADDRROW;</code> | ||
+ | |||
+ | <code>PWSAIpAddrRow = PWSA_IPADDRROW;</code> | ||
+ | |||
+ | <code>PWSA_IPADDRROW = ^WSA_IPADDRROW;</code> | ||
+ | |||
+ | <code>WSA_IPADDRROW = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>dwAddr: DWORD;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>dwIndex: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwMask: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwBCastAddr: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>dwReasmSize: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>unused1: Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>unused2: Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''WSA IP address table''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>TWSAIpAddrTable = WSA_IPADDRTABLE;</code> | ||
+ | |||
+ | <code>PWSAIpAddrTable = PWSA_IPADDRTABLE;</code> | ||
+ | |||
+ | <code>PWSA_IPADDRTABLE = ^WSA_IPADDRTABLE;</code> | ||
+ | |||
+ | <code>WSA_IPADDRTABLE = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>dwNumEntries: DWORD;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>table: array [0..WSA_ANY_SIZE - 1] of WSA_IPADDRROW;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''WSA IP adapter index map''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>TWSAIpAdapterIndexMap = WSA_IP_ADAPTER_INDEX_MAP;</code> | ||
+ | |||
+ | <code>PWSAIpAdapterIndexMap = PWSA_IP_ADAPTER_INDEX_MAP;</code> | ||
+ | |||
+ | <code>PWSA_IP_ADAPTER_INDEX_MAP = ^WSA_IP_ADAPTER_INDEX_MAP;</code> | ||
+ | |||
+ | <code>WSA_IP_ADAPTER_INDEX_MAP = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>Index: ULONG;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>Name: array [0..WSA_MAX_ADAPTER_NAME - 1] of WideChar;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''WSA IP interface information''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>TWSAIpInterfaceInfo = WSA_IP_INTERFACE_INFO;</code> | ||
+ | |||
+ | <code>PWSAIpInterfaceInfo = PWSA_IP_INTERFACE_INFO;</code> | ||
+ | |||
+ | <code>PWSA_IP_INTERFACE_INFO = ^WSA_IP_INTERFACE_INFO;</code> | ||
+ | |||
+ | <code>WSA_IP_INTERFACE_INFO = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>NumAdapters: DWORD;</code> | ||
+ | | LongInt | ||
+ | |- | ||
+ | | <code>Adapter: array [0..0] of WSA_IP_ADAPTER_INDEX_MAP;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''WSA IP address string''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PWSA_IP_ADDRESS_STRING = ^WSA_IP_ADDRESS_STRING;</code> | ||
+ | |||
+ | <code>WSA_IP_MASK_STRING = WSA_IP_ADDRESS_STRING;</code> | ||
+ | |||
+ | <code>TWSAIpAddressString = WSA_IP_ADDRESS_STRING;</code> | ||
+ | |||
+ | <code>PWSAIpAddressString = PWSA_IP_MASK_STRING;</code> | ||
+ | |||
+ | <code>PWSA_IP_MASK_STRING = ^WSA_IP_MASK_STRING;</code> | ||
+ | |||
+ | <code>WSA_IP_ADDRESS_STRING = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>S: array [0..15] of Char;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''WSA IP address string''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>TWSAIpAddrString = WSA_IP_ADDR_STRING;</code> | ||
+ | |||
+ | <code>PWSAIpAddrString = PWSA_IP_ADDR_STRING;</code> | ||
+ | |||
+ | <code>PWSA_IP_ADDR_STRING = ^WSA_IP_ADDR_STRING;</code> | ||
+ | |||
+ | <code>WSA_IP_ADDR_STRING = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>Next: PWSA_IP_ADDR_STRING;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>IpAddress: WSA_IP_ADDRESS_STRING;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>IpMask: WSA_IP_MASK_STRING;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Context: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''WSA IP adapter information''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>TWSAIpAdapterInfo = WSA_IP_ADAPTER_INFO;</code> | ||
+ | |||
+ | <code>PWSAIpAdapterInfo = PWSA_IP_ADAPTER_INFO;</code> | ||
+ | |||
+ | <code>PWSA_IP_ADAPTER_INFO = ^WSA_IP_ADAPTER_INFO;</code> | ||
+ | |||
+ | <code>WSA_IP_ADAPTER_INFO = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>Next: PWSA_IP_ADAPTER_INFO;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>ComboIndex: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>AdapterName: array [0..WSA_MAX_ADAPTER_NAME_LENGTH + 3] of Char;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Description: array [0..WSA_MAX_ADAPTER_DESCRIPTION_LENGTH + 3] of Char;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>AddressLength: UINT;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Address: array [0..WSA_MAX_ADAPTER_ADDRESS_LENGTH - 1] of BYTE;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Index: DWORD;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Type_: UINT;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>DhcpEnabled: UINT;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>CurrentIpAddress: PWSA_IP_ADDR_STRING;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>IpAddressList: WSA_IP_ADDR_STRING;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>GatewayList: WSA_IP_ADDR_STRING;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>DhcpServer: WSA_IP_ADDR_STRING;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>HaveWins: BOOL;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>PrimaryWinsServer: WSA_IP_ADDR_STRING;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SecondaryWinsServer: WSA_IP_ADDR_STRING;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>LeaseObtained: LongInt;</code> | ||
+ | | time_t | ||
+ | |- | ||
+ | | <code>LeaseExpires: LongInt;</code> | ||
+ | | time_t | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''WSA fixed information''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>TWSAFixedInfo = WSA_FIXED_INFO;</code> | ||
+ | |||
+ | <code>PWSAFixedInfo = PWSA_FIXED_INFO;</code> | ||
+ | |||
+ | <code>PWSA_FIXED_INFO = ^WSA_FIXED_INFO;</code> | ||
+ | |||
+ | <code>WSA_FIXED_INFO = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>HostName: array [0..WSA_MAX_HOSTNAME_LEN + 3] of Char;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>DomainName: array[0..WSA_MAX_DOMAIN_NAME_LEN + 3] of Char;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>CurrentDnsServer: PWSA_IP_ADDR_STRING;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>DnsServerList: WSA_IP_ADDR_STRING;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>NodeType: UINT;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ScopeId: array [0..WSA_MAX_SCOPE_ID_LEN + 3] of Char;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>EnableRouting: UINT;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>EnableProxy: UINT;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>EnableDns: UINT;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Net to address''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>PNetToAddr = ^TNetToAddr;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | | <code>TNetToAddr = array[0..MAX_NAME_SIZE - 1] of Char;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''WSA binding''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>TWSABinding = WSABinding;</code> | ||
+ | |||
+ | <code>PWSABinding = ^TWSABinding;</code> | ||
+ | |||
+ | <code>WSABinding = record </code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: A network Binding (Address) | ||
+ | |- | ||
+ | | <code>Version: Word;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>ConfigType: Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ConfigServer: TInAddr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>BindingAddress: TInAddr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>BindingNetmask: TInAddr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>BindingGateway: TInAddr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>NextBinding: PWSABinding;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''WSA provider''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>TWSAProvider = WSAProvider;</code> | ||
+ | |||
+ | <code>PWSAProvider = ^TWSAProvider;</code> | ||
+ | |||
+ | <code>WSAProvider = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: A network Provider (Transport) | ||
+ | |- | ||
+ | | <code>Version: Word;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>TransportFamily: Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>TransportType: Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>TransportHandle: Pointer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ConfigType: Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ConfigServer: TInAddr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ProviderAddress: TInAddr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ProviderNetmask: TInAddr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ProviderGateway: TInAddr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ProviderName: array[0..MAX_NAME_SIZE] of Char;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>NextProvider: PWSAProvider;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''WSA interface''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>TWSAInterface = WSAInterface;</code> | ||
+ | |||
+ | <code>PWSAInterface = ^TWSAInterface;</code> | ||
+ | |||
+ | <code>WSAInterface = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: A network Interface (Adapter) | ||
+ | |- | ||
+ | | <code>Version: Word;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>AdapterType: Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>AdapterInt: Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>AdapterPort: Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>AdapterName: array[0..MAX_NAME_SIZE] of Char;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>AdapterHandle: Pointer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FirstProvider: PWSAProvider;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>NextInterface: PWSAInterface;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''WSA configuration''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>TWSAConfig = WSAConfig;</code> | ||
+ | |||
+ | <code>PWSAConfig = ^TWSAConfig;</code> | ||
+ | |||
+ | <code>WSAConfig = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: General Network Configuration | ||
+ | |- | ||
+ | | <code>Version: Word;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>Hostname: array[0..MAX_NAME_SIZE - 1] of Char;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Namesuffix: array[0..MAX_NAME_SIZE - 1] of Char;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Nameservers: array[0..MAX_NAME_SERVERS - 1] of TInAddr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FirstInterface: PWSAInterface;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''WSA network binding''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>TWSAExtendedBinding = WSAExtendedBinding;</code> | ||
+ | |||
+ | <code>PWSAExtendedBinding = ^TWSAExtendedBinding;</code> | ||
+ | |||
+ | <code>WSAExtendedBinding = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: A network Binding (Address) | ||
+ | |- | ||
+ | | <code>Size: LongWord;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>Version: Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ConfigType: Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ConfigServer: TInAddr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ConfigServer6: TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ConfigInitDelay: LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ConfigRetryCount: LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ConfigRetryTimeout: LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>BindingAddress: TInAddr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>BindingNetmask: TInAddr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>BindingGateway: TInAddr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>BindingAddress6: TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>BindingNetmask6: TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>BindingGateway6: TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Namesuffix: array[0..MAX_NAME_SIZE - 1] of Char;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Nameservers: array[0..MAX_NAME_SERVERS - 1] of TInAddr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Nameservers6: array[0..MAX_NAME_SERVERS - 1] of TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>NextBinding: PWSAExtendedBinding;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''WSA network provider''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>TWSAExtendedProvider = WSAExtendedProvider;</code> | ||
+ | |||
+ | <code>PWSAExtendedProvider = ^TWSAExtendedProvider;</code> | ||
+ | |||
+ | <code>WSAExtendedProvider = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: A network Provider (Transport) | ||
+ | |- | ||
+ | | <code>Size: LongWord;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>Version: Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>TransportFamily: Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>TransportType: Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>TransportHandle: Pointer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ProviderName: array[0..MAX_NAME_SIZE] of Char;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FirstBinding: PWSAExtendedBinding;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>NextProvider: PWSAExtendedProvider;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''WSA network interface''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>TWSAExtendedInterface = WSAExtendedInterface;</code> | ||
+ | |||
+ | <code>PWSAExtendedInterface = ^TWSAExtendedInterface;</code> | ||
+ | |||
+ | <code>WSAExtendedInterface = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: A network Interface (Adapter) | ||
+ | |- | ||
+ | | <code>Size: LongWord;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>Version: Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>AdapterType: Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>AdapterInt: Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>AdapterPort: Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>AdapterName: array[0..MAX_NAME_SIZE] of Char;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>AdapterHandle: Pointer;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FirstProvider: PWSAExtendedProvider;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>NextInterface: PWSAExtendedInterface;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''WSA network configuration''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>TWSAExtendedConfig = WSAExtendedConfig;</code> | ||
+ | |||
+ | <code>PWSAExtendedConfig = ^TWSAExtendedConfig;</code> | ||
+ | |||
+ | <code>WSAExtendedConfig = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: General Network Configuration | ||
+ | |- | ||
+ | | <code>Size: LongWord;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>Version: Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Hostname: array[0..MAX_NAME_SIZE - 1] of Char;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FirstInterface: PWSAExtendedInterface;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Address information''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PAddrInfo = ^TAddrInfo;</code> | ||
+ | |||
+ | <code>TAddrInfo = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: Structure used in getaddrinfo() call | ||
+ | |- | ||
+ | | <code>ai_flags:LongInt;</code> | ||
+ | | AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST | ||
+ | |- | ||
+ | | <code>ai_family:LongInt;</code> | ||
+ | | PF_xxx | ||
+ | |- | ||
+ | | <code>ai_socktype:LongInt;</code> | ||
+ | | SOCK_xxx | ||
+ | |- | ||
+ | | <code>ai_protocol:LongInt;</code> | ||
+ | | 0 or IPPROTO_xxx for IPv4 and IPv6 | ||
+ | |- | ||
+ | | <code>ai_addrlen:size_t;</code> | ||
+ | | Length of ai_addr | ||
+ | |- | ||
+ | | <code>ai_canonname:PChar;</code> | ||
+ | | Canonical name for nodename | ||
+ | |- | ||
+ | | <code>ai_addr:PSockAddr;</code> | ||
+ | | Binary address | ||
+ | |- | ||
+ | | <code>ai_next:PAddrInfo;</code> | ||
+ | | Next structure in linked list | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
=== Public variables === | === Public variables === |
Revision as of 00:26, 3 March 2017
Return to Unit Reference
Contents
[hide]Description
Ultibo Global Socket Definitions
To be documented
Constants
FD_*
IPPROTO_*
IPPORT_*
IP_*
SOCK_*
SO_*
TCP_*
UDP_*
AF_*
PF_*
MSG_*
WSAE*, EAI_*
SD_*
WSA_*
AI_*
NI_*
Type definitions
Integer types
tOS_INT = LongInt;
|
|
tOS_UINT = DWORD;
|
|
ptOS_INT = ^tOS_INT;
|
|
ptOS_UINT = ^tOS_UINT;
|
|
u_int = tOS_UINT;
|
|
pu_int = ^u_int;
|
Character types
u_char = Char;
|
|
pu_char = ^u_char;
|
Numeric types
u_short = Word;
|
|
pu_short = ^u_short;
|
|
u_long = DWORD;
|
|
pu_long = ^u_long;
|
Socket types
TSocket = GlobalTypes.TSocket;
|
WSA event
WSAEVENT = GlobalTypes.WSAEVENT;
|
|
PWSAEVENT = ^WSAEVENT;
|
|
LPWSAEVENT = PWSAEVENT;
|
MB character
PMBChar = PChar;
|
FD set
Time value
Host entry
Network entry
Service entry
Protocol entry
Address types
SunB = packed record
SunW = packed record
IPv4 address
IPv6 address
IPX address
Socket address in IPv4
Socket address in IPv6
Socket address IPX
Socket address
Note: Structure used by kernel to store most addresses. | |
PSOCKADDR = ^TSockAddr;
|
|
TSockAddr = sockaddr_in;
|
Socket address IPv6
PSOCKADDR6 = ^TSockAddr6;
|
|
TSockAddr6 = sockaddr_in6;
|
Socket protocol
Linger
WSA data
Transmit file buffers
TTransmitFileBuffers = _TRANSMIT_FILE_BUFFERS;
TRANSMIT_FILE_BUFFERS = _TRANSMIT_FILE_BUFFERS;
PTransmitFileBuffers = ^TTransmitFileBuffers;
_TRANSMIT_FILE_BUFFERS = record
Multicast request
WSA interface row
WSA interface table
TWSAIftable = WSA_IFTABLE;
PWSAIftable = PWSA_IFTABLE;
PWSA_IFTABLE = ^WSA_IFTABLE;
WSA_IFTABLE = record
WSA IP statistics
TWSAIpStats = WSA_IPSTATS;
PWSAIpStats = PWSA_IPSTATS;
PWSA_IPSTATS = ^WSA_IPSTATS;
WSA_IPSTATS = record
WSA IP address row
TWSAIpAddrRow = WSA_IPADDRROW;
PWSAIpAddrRow = PWSA_IPADDRROW;
PWSA_IPADDRROW = ^WSA_IPADDRROW;
WSA_IPADDRROW = record
WSA IP address table
TWSAIpAddrTable = WSA_IPADDRTABLE;
PWSAIpAddrTable = PWSA_IPADDRTABLE;
PWSA_IPADDRTABLE = ^WSA_IPADDRTABLE;
WSA_IPADDRTABLE = record
WSA IP adapter index map
TWSAIpAdapterIndexMap = WSA_IP_ADAPTER_INDEX_MAP;
PWSAIpAdapterIndexMap = PWSA_IP_ADAPTER_INDEX_MAP;
PWSA_IP_ADAPTER_INDEX_MAP = ^WSA_IP_ADAPTER_INDEX_MAP;
WSA_IP_ADAPTER_INDEX_MAP = record
WSA IP interface information
TWSAIpInterfaceInfo = WSA_IP_INTERFACE_INFO;
PWSAIpInterfaceInfo = PWSA_IP_INTERFACE_INFO;
PWSA_IP_INTERFACE_INFO = ^WSA_IP_INTERFACE_INFO;
WSA_IP_INTERFACE_INFO = record
WSA IP address string
PWSA_IP_ADDRESS_STRING = ^WSA_IP_ADDRESS_STRING;
WSA_IP_MASK_STRING = WSA_IP_ADDRESS_STRING;
TWSAIpAddressString = WSA_IP_ADDRESS_STRING;
PWSAIpAddressString = PWSA_IP_MASK_STRING;
PWSA_IP_MASK_STRING = ^WSA_IP_MASK_STRING;
WSA_IP_ADDRESS_STRING = record
WSA IP address string
TWSAIpAddrString = WSA_IP_ADDR_STRING;
PWSAIpAddrString = PWSA_IP_ADDR_STRING;
PWSA_IP_ADDR_STRING = ^WSA_IP_ADDR_STRING;
WSA_IP_ADDR_STRING = record
WSA IP adapter information
TWSAIpAdapterInfo = WSA_IP_ADAPTER_INFO;
PWSAIpAdapterInfo = PWSA_IP_ADAPTER_INFO;
PWSA_IP_ADAPTER_INFO = ^WSA_IP_ADAPTER_INFO;
WSA_IP_ADAPTER_INFO = record
WSA fixed information
TWSAFixedInfo = WSA_FIXED_INFO;
PWSAFixedInfo = PWSA_FIXED_INFO;
PWSA_FIXED_INFO = ^WSA_FIXED_INFO;
WSA_FIXED_INFO = record
Net to address
PNetToAddr = ^TNetToAddr;
|
|
TNetToAddr = array[0..MAX_NAME_SIZE - 1] of Char;
|
WSA binding
WSA provider
WSA interface
WSA configuration
WSA network binding
TWSAExtendedBinding = WSAExtendedBinding;
PWSAExtendedBinding = ^TWSAExtendedBinding;
WSAExtendedBinding = record
WSA network provider
TWSAExtendedProvider = WSAExtendedProvider;
PWSAExtendedProvider = ^TWSAExtendedProvider;
WSAExtendedProvider = record
WSA network interface
TWSAExtendedInterface = WSAExtendedInterface;
PWSAExtendedInterface = ^TWSAExtendedInterface;
WSAExtendedInterface = record
WSA network configuration
TWSAExtendedConfig = WSAExtendedConfig;
PWSAExtendedConfig = ^TWSAExtendedConfig;
WSAExtendedConfig = record
Address information
Public variables
None defined
Function declarations
Global socket functions
function FD_ISSET(Socket: TSocket; var FDSet: TFDSet): Boolean;
Return to Unit Reference