Description | Uses | Classes, Interfaces, Objects and Records | Functions and Procedures | Types | Constants | Variables |
WSA sockets wrapper classes
Name | Description |
---|---|
packed record FLOWSPEC |
|
packed record QOS |
In Bytes |
packed record TWSAProtocolChain |
|
packed record WSABUF |
|
packed record WSAPROTOCOL_INFO |
function WSAIoctl(s: tSocket; dwIoControlCode: DWORD; lpvInBuffer: pointer; cbInBuffer: DWORD; lpvOutBuffer: pointer; cbOutBuffer: DWORD; lpcbBytesReturned: LPDWORD; lpOverlapped: LPWSAOVERLAPPED; lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): int; stdcall; |
function WSASocket(af, iType, protocol: int; lpProtocolInfo: LPWSAPROTOCOL_INFO; g: GROUP; dwFlags: DWORD): tSocket; stdcall; |
function WSAConnect(s: tSocket; name: pSockAddr; namelen: int; lpCallerData, lpCalleeData: LPWSABUF; lpSQOS, lpGQOS: LPQOS): int; stdcall; |
function WSARecv(s: tSocket; lpBuffers: LPWSABUF; dwBufferCount: DWORD; lpNumberOfBytesRecvd: LPDWORD; lpFlags: LPDWORD; lpOverlapped: LPWSAOVERLAPPED; lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): int; stdcall; |
function WSASend(s: tSocket; lpBuffers: LPWSABUF; dwBufferCount: DWORD; lpNumberOfBytesSent: LPDWORD; dwFlags: DWORD; lpOverlapped: LPWSAOVERLAPPED; lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): int; stdcall; |
function WSASendTo(s: tSocket; lpBuffers: LPWSABUF; dwBufferCount: DWORD; lpNumberOfBytesSent: LPDWORD; dwFlags: DWORD; lpTo: pSockAddr; iTolen: int; lpOverlapped: LPWSAOVERLAPPED; lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): int; stdcall; |
function WSARecvFrom(s: tSocket; lpBuffers: LPWSABUF; dwBufferCount: DWORD; lpNumberOfBytesRecvd: LPDWORD; lpFlags: LPDWORD; lpFrom: pSockAddr; lpFromlen: LPINT; lpOverlapped: LPWSAOVERLAPPED; lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): int; stdcall; |
function WSAGetOverlappedResult(s: tSocket; lpOverlapped: LPWSAOVERLAPPED; lpcbTransfer: LPDWORD; fWait: BOOL; lpdwFlags: LPDWORD ): BOOL; stdcall; |
function WSAEventSelect(s: tSocket; hEventObject: WSAEVENT; lNetworkEvents: long): int; stdcall; |
function getWSAProcAddr(s: tSocket; const guid: tGuid): pointer; |
LPWSABUF = ˆWSABUF; |
LPWSAPROTOCOL_INFO = ˆWSAPROTOCOL_INFO; |
TServiceType = LongInt; |
PQOS = ˆQOS; |
LPQOS = PQOS; |
GROUP = DWORD; |
LPINT = ˆint; |
WSAOVERLAPPED = TOverlapped; |
LPWSAOVERLAPPED = POverlapped; |
WSAEVENT = THANDLE; |
LPWSAOVERLAPPED_COMPLETION_ROUTINE = procedure(const dwError, cbTransferred: DWORD; const lpOverlapped: LPWSAOVERLAPPED; const dwFlags: DWORD); stdcall; |
proc_acceptEx = function(sListenSocket, sAcceptSocket: tSocket; lpOutputBuffer: pointer; dwReceiveDataLength, dwLocalAddressLength, dwRemoteAddressLength: DWORD; lpdwBytesReceived: LPDWORD; lpOverlapped: POVERLAPPED): BOOL; stdcall; |
proc_getAcceptExSockaddrs = procedure(lpOutputBuffer: Pointer; dwReceiveDataLength, dwLocalAddressLength, dwRemoteAddressLength: DWORD; out localSockaddr: pSockAddr; out localSockaddrLength: int; out remoteSockaddr: pSockAddr; out remoteSockaddrLength: int); stdcall; |
function WSAIoctl(s: tSocket; dwIoControlCode: DWORD; lpvInBuffer: pointer; cbInBuffer: DWORD; lpvOutBuffer: pointer; cbOutBuffer: DWORD; lpcbBytesReturned: LPDWORD; lpOverlapped: LPWSAOVERLAPPED; lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): int; stdcall; |
– – |
function WSASocket(af, iType, protocol: int; lpProtocolInfo: LPWSAPROTOCOL_INFO; g: GROUP; dwFlags: DWORD): tSocket; stdcall; |
– – |
function WSAConnect(s: tSocket; name: pSockAddr; namelen: int; lpCallerData, lpCalleeData: LPWSABUF; lpSQOS, lpGQOS: LPQOS): int; stdcall; |
– – |
function WSARecv(s: tSocket; lpBuffers: LPWSABUF; dwBufferCount: DWORD; lpNumberOfBytesRecvd: LPDWORD; lpFlags: LPDWORD; lpOverlapped: LPWSAOVERLAPPED; lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): int; stdcall; |
– – |
function WSASend(s: tSocket; lpBuffers: LPWSABUF; dwBufferCount: DWORD; lpNumberOfBytesSent: LPDWORD; dwFlags: DWORD; lpOverlapped: LPWSAOVERLAPPED; lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): int; stdcall; |
– – |
function WSASendTo(s: tSocket; lpBuffers: LPWSABUF; dwBufferCount: DWORD; lpNumberOfBytesSent: LPDWORD; dwFlags: DWORD; lpTo: pSockAddr; iTolen: int; lpOverlapped: LPWSAOVERLAPPED; lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): int; stdcall; |
– – |
function WSARecvFrom(s: tSocket; lpBuffers: LPWSABUF; dwBufferCount: DWORD; lpNumberOfBytesRecvd: LPDWORD; lpFlags: LPDWORD; lpFrom: pSockAddr; lpFromlen: LPINT; lpOverlapped: LPWSAOVERLAPPED; lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): int; stdcall; |
– – |
function WSAGetOverlappedResult(s: tSocket; lpOverlapped: LPWSAOVERLAPPED; lpcbTransfer: LPDWORD; fWait: BOOL; lpdwFlags: LPDWORD ): BOOL; stdcall; |
– – |
function WSAEventSelect(s: tSocket; hEventObject: WSAEVENT; lNetworkEvents: long): int; stdcall; |
function getWSAProcAddr(s: tSocket; const guid: tGuid): pointer; |
– – |
LPWSABUF = ˆWSABUF; |
LPWSAPROTOCOL_INFO = ˆWSAPROTOCOL_INFO; |
a list of dwCatalogEntryIds |
TServiceType = LongInt; |
PQOS = ˆQOS; |
additional provider specific stuff |
LPQOS = PQOS; |
GROUP = DWORD; |
LPINT = ˆint; |
WSAOVERLAPPED = TOverlapped; |
LPWSAOVERLAPPED = POverlapped; |
WSAEVENT = THANDLE; |
LPWSAOVERLAPPED_COMPLETION_ROUTINE = procedure(const dwError, cbTransferred: DWORD; const lpOverlapped: LPWSAOVERLAPPED; const dwFlags: DWORD); stdcall; |
proc_acceptEx = function(sListenSocket, sAcceptSocket: tSocket; lpOutputBuffer: pointer; dwReceiveDataLength, dwLocalAddressLength, dwRemoteAddressLength: DWORD; lpdwBytesReceived: LPDWORD; lpOverlapped: POVERLAPPED): BOOL; stdcall; |
proc_getAcceptExSockaddrs = procedure(lpOutputBuffer: Pointer; dwReceiveDataLength, dwLocalAddressLength, dwRemoteAddressLength: DWORD; out localSockaddr: pSockAddr; out localSockaddrLength: int; out remoteSockaddr: pSockAddr; out remoteSockaddrLength: int); stdcall; |
IOC_PROTOCOL = $10000000; |
IOC_UNIX = $00000000; |
WinSock 2 extension – manifest constants for WSAIoctl() |
IOC_VENDOR = $18000000; |
IOC_WS2 = $08000000; |
MAX_PROTOCOL_CHAIN = 7; |
MSG_INTERRUPT = $10; |
WinSock 2 extension – new flags for WSASend(), WSASendTo(), WSARecv() and WSARecvFrom() |
MSG_MAXIOVLEN = $10; |
send/recv in the interrupt context |
SIO_ADDRESS_LIST_CHANGE = 23 OR IOC_WS2 OR IOC_VOID; |
see below SOCKET_ADDRESS_LIST |
SIO_ADDRESS_LIST_QUERY = 22 OR IOC_WS2 OR IOC_OUT; |
SIO_ADDRESS_LIST_SORT = 25 OR IOC_WS2 OR IOC_INOUT; |
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_GROUP_QOS = 8 OR IOC_WS2 OR IOC_INOUT; |
SIO_GET_QOS = 7 OR IOC_WS2 OR IOC_INOUT; |
SIO_MULTICAST_SCOPE = 10 OR IOC_WS2 OR IOC_IN; |
SIO_MULTIPOINT_LOOPBACK = 9 OR IOC_WS2 OR IOC_IN; |
SIO_QUERY_TARGET_PNP_HANDLE = 24 OR IOC_WS2 OR IOC_OUT; |
SIO_ROUTING_INTERFACE_CHANGE = 21 OR IOC_WS2 OR IOC_IN; |
SIO_ROUTING_INTERFACE_QUERY = 20 OR IOC_WS2 OR IOC_INOUT; |
SIO_SET_GROUP_QOS = 12 OR IOC_WS2 OR IOC_IN; |
SIO_SET_QOS = 11 OR IOC_WS2 OR IOC_IN; |
SIO_TRANSLATE_HANDLE = 13 OR IOC_WS2 OR IOC_INOUT; |
WSAID_ACCEPTEX : tGuid = (D1:$B5367DF1; D2:$CBAC; D3:$11CF; D4:($95, $CA, $00, $80, $5F, $48, $A1, $92)); |
WSAID_GETACCEPTEXSOCKADDRS : tGuid = (D1:$B5367DF2; D2:$CBAC; D3:$11CF; D4:($95, $CA, $00, $80, $5F, $48, $A1, $92)); |
WSAPROTOCOL_LEN = 255; |
WSA_FLAG_MULTIPOINT_C_LEAF = $04; |
WSA_FLAG_MULTIPOINT_C_ROOT = $02; |
WSA_FLAG_MULTIPOINT_D_LEAF = $10; |
WSA_FLAG_MULTIPOINT_D_ROOT = $08; |
WSA_FLAG_OVERLAPPED = $01; |
WinSock 2 extension – manifest constants for WSASocket() |
WSA_INVALID_PARAMETER = ERROR_INVALID_PARAMETER; |
WSA_IO_INCOMPLETE = ERROR_IO_INCOMPLETE; |
WSA_IO_PENDING = ERROR_IO_PENDING; |
(c) 2012 Lake of Soft