2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS WinSock 2 DLL
6 * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
8 * CSH 01/09-2000 Created
19 getpeername(IN SOCKET s
,
21 IN OUT INT FAR
* namelen
)
25 PCATALOG_ENTRY Provider
;
29 WSASetLastError(WSANOTINITIALISED
);
33 if (!ReferenceProviderByHandle((HANDLE
)s
, &Provider
))
35 WSASetLastError(WSAENOTSOCK
);
39 Error
= Provider
->ProcTable
.lpWSPGetPeerName(s
,
44 DereferenceProviderByPointer(Provider
);
46 if (Error
== SOCKET_ERROR
)
48 WSASetLastError(Errno
);
61 getsockname(IN SOCKET s
,
63 IN OUT INT FAR
* namelen
)
67 PCATALOG_ENTRY Provider
;
71 WSASetLastError(WSANOTINITIALISED
);
75 if (!ReferenceProviderByHandle((HANDLE
)s
,
78 WSASetLastError(WSAENOTSOCK
);
82 Error
= Provider
->ProcTable
.lpWSPGetSockName(s
,
87 DereferenceProviderByPointer(Provider
);
89 if (Error
== SOCKET_ERROR
)
91 WSASetLastError(Errno
);
103 getsockopt(IN SOCKET s
,
106 OUT CHAR FAR
* optval
,
107 IN OUT INT FAR
* optlen
)
109 PCATALOG_ENTRY Provider
;
115 WSASetLastError(WSANOTINITIALISED
);
119 if (!ReferenceProviderByHandle((HANDLE
)s
,
122 WSASetLastError(WSAENOTSOCK
);
126 Error
= Provider
->ProcTable
.lpWSPGetSockOpt(s
,
133 DereferenceProviderByPointer(Provider
);
135 if (Error
== SOCKET_ERROR
)
137 WSASetLastError(Errno
);
149 setsockopt(IN SOCKET s
,
152 IN CONST CHAR FAR
* optval
,
155 PCATALOG_ENTRY Provider
;
161 WSASetLastError(WSANOTINITIALISED
);
165 if(IS_INTRESOURCE(optval
))
167 SetLastError(WSAEFAULT
);
171 if (!ReferenceProviderByHandle((HANDLE
)s
, &Provider
))
173 WSASetLastError(WSAENOTSOCK
);
177 Error
= Provider
->ProcTable
.lpWSPSetSockOpt(s
,
184 DereferenceProviderByPointer(Provider
);
186 if (Error
== SOCKET_ERROR
)
188 WSASetLastError(Errno
);
200 shutdown(IN SOCKET s
,
203 PCATALOG_ENTRY Provider
;
209 WSASetLastError(WSANOTINITIALISED
);
213 if (!ReferenceProviderByHandle((HANDLE
)s
, &Provider
))
215 WSASetLastError(WSAENOTSOCK
);
219 Error
= Provider
->ProcTable
.lpWSPShutdown(s
,
223 DereferenceProviderByPointer(Provider
);
225 if (Error
== SOCKET_ERROR
)
227 WSASetLastError(Errno
);
239 WSAAsyncSelect(IN SOCKET s
,
244 PCATALOG_ENTRY Provider
;
250 WSASetLastError(WSANOTINITIALISED
);
254 if (!ReferenceProviderByHandle((HANDLE
)s
, &Provider
))
256 WSASetLastError(WSAENOTSOCK
);
260 Error
= Provider
->ProcTable
.lpWSPAsyncSelect(s
,
266 DereferenceProviderByPointer(Provider
);
268 if (Error
== SOCKET_ERROR
)
270 WSASetLastError(Errno
);
282 WSACancelBlockingCall(VOID
)
287 PCATALOG_ENTRY Provider
;
291 WSASetLastError(WSANOTINITIALISED
);
295 if (!ReferenceProviderByHandle((HANDLE
)s
, &Provider
))
297 WSASetLastError(WSAENOTSOCK
);
301 Error
= Provider
->ProcTable
.lpWSPCancelBlockingCall(&Errno
);
303 DereferenceProviderByPointer(Provider
);
305 if (Error
== SOCKET_ERROR
)
307 WSASetLastError(Errno
);
315 WSASetLastError(WSASYSCALLFAILURE
);
325 WSADuplicateSocketA(IN SOCKET s
,
326 IN DWORD dwProcessId
,
327 OUT LPWSAPROTOCOL_INFOA lpProtocolInfo
)
330 WSAPROTOCOL_INFOA ProtocolInfoU
;
332 Error
= WSADuplicateSocketW(s
,
336 if (Error
== NO_ERROR
)
338 UnicodeToAnsi(lpProtocolInfo
,
349 WSASetLastError(WSASYSCALLFAILURE
);
360 WSADuplicateSocketW(IN SOCKET s
,
361 IN DWORD dwProcessId
,
362 OUT LPWSAPROTOCOL_INFOW lpProtocolInfo
)
366 PCATALOG_ENTRY Provider
;
370 WSASetLastError(WSANOTINITIALISED
);
374 if (!ReferenceProviderByHandle((HANDLE
)s
, &Provider
))
376 WSASetLastError(WSAENOTSOCK
);
380 Error
= Provider
->ProcTable
.lpWSPDuplicateSocket(s
,
384 DereferenceProviderByPointer(Provider
);
386 if (Error
== SOCKET_ERROR
)
388 WSASetLastError(Errno
);
400 WSAEnumProtocolsA(IN LPINT lpiProtocols
,
401 OUT LPWSAPROTOCOL_INFOA lpProtocolBuffer
,
402 IN OUT LPDWORD lpdwBufferLength
)
406 WSASetLastError(WSASYSCALLFAILURE
);
416 WSAEnumProtocolsW(IN LPINT lpiProtocols
,
417 OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer
,
418 IN OUT LPDWORD lpdwBufferLength
)
422 WSASetLastError(WSASYSCALLFAILURE
);
432 WSAGetOverlappedResult(IN SOCKET s
,
433 IN LPWSAOVERLAPPED lpOverlapped
,
434 OUT LPDWORD lpcbTransfer
,
436 OUT LPDWORD lpdwFlags
)
440 PCATALOG_ENTRY Provider
;
444 WSASetLastError(WSANOTINITIALISED
);
448 if (!ReferenceProviderByHandle((HANDLE
)s
, &Provider
))
450 WSASetLastError(WSAENOTSOCK
);
454 Success
= Provider
->ProcTable
.lpWSPGetOverlappedResult(s
,
460 DereferenceProviderByPointer(Provider
);
462 if (Success
== FALSE
)
464 WSASetLastError(Errno
);
476 WSAGetQOSByName(IN SOCKET s
,
477 IN OUT LPWSABUF lpQOSName
,
482 WSASetLastError(WSASYSCALLFAILURE
);
492 WSAHtonl(IN SOCKET s
,
494 OUT ULONG FAR
* lpnetlong
)
498 WSASetLastError(WSASYSCALLFAILURE
);
508 WSAHtons(IN SOCKET s
,
510 OUT USHORT FAR
* lpnetshort
)
512 PCATALOG_ENTRY provider
;
515 WSASetLastError(WSANOTINITIALISED
);
519 if (!ReferenceProviderByHandle((HANDLE
)s
, &provider
))
521 WSASetLastError(WSAENOTSOCK
);
525 switch (provider
->ProtocolInfo
.iNetworkByteOrder
)
528 *lpnetshort
= htons(hostshort
);
532 *lpnetshort
= hostshort
;
534 *lpnetshort
= (((hostshort
& 0xFF00) >> 8) | ((hostshort
& 0x00FF) << 8));
560 WSAJoinLeaf(IN SOCKET s
,
561 IN CONST
struct sockaddr
*name
,
563 IN LPWSABUF lpCallerData
,
564 OUT LPWSABUF lpCalleeData
,
571 WSASetLastError(WSASYSCALLFAILURE
);
572 return INVALID_SOCKET
;
581 WSANtohl(IN SOCKET s
,
583 OUT ULONG FAR
* lphostlong
)
587 WSASetLastError(WSASYSCALLFAILURE
);
597 WSANtohs(IN SOCKET s
,
599 OUT USHORT FAR
* lphostshort
)
601 PCATALOG_ENTRY provider
;
604 WSASetLastError(WSANOTINITIALISED
);
608 if (!ReferenceProviderByHandle((HANDLE
)s
, &provider
))
610 WSASetLastError(WSAENOTSOCK
);
614 switch (provider
->ProtocolInfo
.iNetworkByteOrder
)
617 *lphostshort
= ntohs(netshort
);
621 *lphostshort
= netshort
;
623 *lphostshort
= (((netshort
& 0xFF00) >> 8) | ((netshort
& 0x00FF) << 8));
636 WSASetBlockingHook(IN FARPROC lpBlockFunc
)
649 WSAUnhookBlockingHook(VOID
)
662 WSAProviderConfigChange(IN OUT LPHANDLE lpNotificationHandle
,
663 IN LPWSAOVERLAPPED lpOverlapped
,
664 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
)
668 WSASetLastError(WSASYSCALLFAILURE
);
678 WSACancelAsyncRequest(IN HANDLE hAsyncTaskHandle
)
682 WSASetLastError(WSASYSCALLFAILURE
);
686 /* WinSock Service Provider support functions */
693 WPUCompleteOverlappedRequest(IN SOCKET s
,
694 IN LPWSAOVERLAPPED lpOverlapped
,
696 IN DWORD cbTransferred
,
701 WSASetLastError(WSASYSCALLFAILURE
);
711 WSCDeinstallProvider(IN LPGUID lpProviderId
,
716 WSASetLastError(WSASYSCALLFAILURE
);
726 WSCEnumProtocols(IN LPINT lpiProtocols
,
727 OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer
,
728 IN OUT LPDWORD lpdwBufferLength
,
733 WSASetLastError(WSASYSCALLFAILURE
);
743 WSCGetProviderPath(IN LPGUID lpProviderId
,
744 OUT LPWSTR lpszProviderDllPath
,
745 IN OUT LPINT lpProviderDllPathLen
,
750 WSASetLastError(WSASYSCALLFAILURE
);
760 WSCInstallProvider(IN LPGUID lpProviderId
,
761 IN CONST WCHAR
* lpszProviderDllPath
,
762 IN CONST LPWSAPROTOCOL_INFOW lpProtocolInfoList
,
763 IN DWORD dwNumberOfEntries
,
768 WSASetLastError(WSASYSCALLFAILURE
);
778 WSCEnableNSProvider(IN LPGUID lpProviderId
,
783 WSASetLastError(WSASYSCALLFAILURE
);
793 WSCInstallNameSpace(IN LPWSTR lpszIdentifier
,
794 IN LPWSTR lpszPathName
,
795 IN DWORD dwNameSpace
,
797 IN LPGUID lpProviderId
)
801 WSASetLastError(WSASYSCALLFAILURE
);
811 WSCUnInstallNameSpace(IN LPGUID lpProviderId
)
815 WSASetLastError(WSASYSCALLFAILURE
);
825 WSCWriteProviderOrder(IN LPDWORD lpwdCatalogEntryId
,
826 IN DWORD dwNumberOfEntries
)
830 return WSASYSCALLFAILURE
;
838 WSANSPIoctl(HANDLE hLookup
,
844 LPDWORD lpcbBytesReturned
,
845 LPWSACOMPLETION lpCompletion
)
849 WSASetLastError(WSASYSCALLFAILURE
);
859 WSCUpdateProvider(LPGUID lpProviderId
,
860 const WCHAR FAR
* lpszProviderDllPath
,
861 const LPWSAPROTOCOL_INFOW lpProtocolInfoList
,
862 DWORD dwNumberOfEntries
,
867 WSASetLastError(WSASYSCALLFAILURE
);
876 WSCWriteNameSpaceOrder(LPGUID lpProviderId
,
877 DWORD dwNumberOfEntries
)
881 return WSASYSCALLFAILURE
;
889 getnameinfo(const struct sockaddr FAR
* sa
,
899 WSASetLastError(WSASYSCALLFAILURE
);
914 BOOL EXPORT
WSApSetPostRoutine(PVOID Routine
)
926 GetAddrInfoW(IN PCWSTR pszNodeName
,
927 IN PCWSTR pszServiceName
,
928 IN
const ADDRINFOW
*ptHints
,
929 OUT PADDRINFOW
*pptResult
)
933 WSASetLastError(EAI_FAIL
);