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
20 getpeername(IN SOCKET s
,
22 IN OUT INT FAR
* namelen
)
26 PCATALOG_ENTRY Provider
;
30 WSASetLastError(WSANOTINITIALISED
);
34 if (!ReferenceProviderByHandle((HANDLE
)(ULONG_PTR
)(s
), &Provider
))
36 WSASetLastError(WSAENOTSOCK
);
40 Error
= Provider
->ProcTable
.lpWSPGetPeerName(s
,
45 DereferenceProviderByPointer(Provider
);
47 if (Error
== SOCKET_ERROR
)
49 WSASetLastError(Errno
);
62 getsockname(IN SOCKET s
,
64 IN OUT INT FAR
* namelen
)
68 PCATALOG_ENTRY Provider
;
72 WSASetLastError(WSANOTINITIALISED
);
76 if (!ReferenceProviderByHandle((HANDLE
)s
,
79 WSASetLastError(WSAENOTSOCK
);
83 Error
= Provider
->ProcTable
.lpWSPGetSockName(s
,
88 DereferenceProviderByPointer(Provider
);
90 if (Error
== SOCKET_ERROR
)
92 WSASetLastError(Errno
);
104 getsockopt(IN SOCKET s
,
107 OUT CHAR FAR
* optval
,
108 IN OUT INT FAR
* optlen
)
110 PCATALOG_ENTRY Provider
;
116 WSASetLastError(WSANOTINITIALISED
);
120 if (!ReferenceProviderByHandle((HANDLE
)s
,
123 WSASetLastError(WSAENOTSOCK
);
127 Error
= Provider
->ProcTable
.lpWSPGetSockOpt(s
,
134 DereferenceProviderByPointer(Provider
);
136 if (Error
== SOCKET_ERROR
)
138 WSASetLastError(Errno
);
150 setsockopt(IN SOCKET s
,
153 IN CONST CHAR FAR
* optval
,
156 PCATALOG_ENTRY Provider
;
162 WSASetLastError(WSANOTINITIALISED
);
166 if (!ReferenceProviderByHandle((HANDLE
)s
, &Provider
))
168 WSASetLastError(WSAENOTSOCK
);
172 Error
= Provider
->ProcTable
.lpWSPSetSockOpt(s
,
179 DereferenceProviderByPointer(Provider
);
181 if (Error
== SOCKET_ERROR
)
183 WSASetLastError(Errno
);
195 shutdown(IN SOCKET s
,
198 PCATALOG_ENTRY Provider
;
204 WSASetLastError(WSANOTINITIALISED
);
208 if (!ReferenceProviderByHandle((HANDLE
)s
, &Provider
))
210 WSASetLastError(WSAENOTSOCK
);
214 Error
= Provider
->ProcTable
.lpWSPShutdown(s
,
218 DereferenceProviderByPointer(Provider
);
220 if (Error
== SOCKET_ERROR
)
222 WSASetLastError(Errno
);
234 WSAAsyncSelect(IN SOCKET s
,
239 PCATALOG_ENTRY Provider
;
245 WSASetLastError(WSANOTINITIALISED
);
249 if (!ReferenceProviderByHandle((HANDLE
)s
, &Provider
))
251 WSASetLastError(WSAENOTSOCK
);
255 Error
= Provider
->ProcTable
.lpWSPAsyncSelect(s
,
261 DereferenceProviderByPointer(Provider
);
263 if (Error
== SOCKET_ERROR
)
265 WSASetLastError(Errno
);
277 WSACancelBlockingCall(VOID
)
282 PCATALOG_ENTRY Provider
;
286 WSASetLastError(WSANOTINITIALISED
);
290 if (!ReferenceProviderByHandle((HANDLE
)s
, &Provider
))
292 WSASetLastError(WSAENOTSOCK
);
296 Error
= Provider
->ProcTable
.lpWSPCancelBlockingCall(&Errno
);
298 DereferenceProviderByPointer(Provider
);
300 if (Error
== SOCKET_ERROR
)
302 WSASetLastError(Errno
);
310 WSASetLastError(WSASYSCALLFAILURE
);
320 WSADuplicateSocketA(IN SOCKET s
,
321 IN DWORD dwProcessId
,
322 OUT LPWSAPROTOCOL_INFOA lpProtocolInfo
)
325 WSAPROTOCOL_INFOA ProtocolInfoU
;
327 Error
= WSADuplicateSocketW(s
,
331 if (Error
== NO_ERROR
)
333 UnicodeToAnsi(lpProtocolInfo
,
344 WSASetLastError(WSASYSCALLFAILURE
);
355 WSADuplicateSocketW(IN SOCKET s
,
356 IN DWORD dwProcessId
,
357 OUT LPWSAPROTOCOL_INFOW lpProtocolInfo
)
361 PCATALOG_ENTRY Provider
;
365 WSASetLastError(WSANOTINITIALISED
);
369 if (!ReferenceProviderByHandle((HANDLE
)s
, &Provider
))
371 WSASetLastError(WSAENOTSOCK
);
375 Error
= Provider
->ProcTable
.lpWSPDuplicateSocket(s
,
379 DereferenceProviderByPointer(Provider
);
381 if (Error
== SOCKET_ERROR
)
383 WSASetLastError(Errno
);
395 WSAEnumProtocolsA(IN LPINT lpiProtocols
,
396 OUT LPWSAPROTOCOL_INFOA lpProtocolBuffer
,
397 IN OUT LPDWORD lpdwBufferLength
)
401 WSASetLastError(WSASYSCALLFAILURE
);
411 WSAEnumProtocolsW(IN LPINT lpiProtocols
,
412 OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer
,
413 IN OUT LPDWORD lpdwBufferLength
)
417 WSASetLastError(WSASYSCALLFAILURE
);
427 WSAGetOverlappedResult(IN SOCKET s
,
428 IN LPWSAOVERLAPPED lpOverlapped
,
429 OUT LPDWORD lpcbTransfer
,
431 OUT LPDWORD lpdwFlags
)
435 PCATALOG_ENTRY Provider
;
439 WSASetLastError(WSANOTINITIALISED
);
443 if (!ReferenceProviderByHandle((HANDLE
)s
, &Provider
))
445 WSASetLastError(WSAENOTSOCK
);
449 Success
= Provider
->ProcTable
.lpWSPGetOverlappedResult(s
,
455 DereferenceProviderByPointer(Provider
);
457 if (Success
== FALSE
)
459 WSASetLastError(Errno
);
471 WSAGetQOSByName(IN SOCKET s
,
472 IN OUT LPWSABUF lpQOSName
,
477 WSASetLastError(WSASYSCALLFAILURE
);
487 WSAHtonl(IN SOCKET s
,
489 OUT ULONG FAR
* lpnetlong
)
493 WSASetLastError(WSASYSCALLFAILURE
);
503 WSAHtons(IN SOCKET s
,
505 OUT USHORT FAR
* lpnetshort
)
509 WSASetLastError(WSASYSCALLFAILURE
);
532 WSAJoinLeaf(IN SOCKET s
,
533 IN CONST
struct sockaddr
*name
,
535 IN LPWSABUF lpCallerData
,
536 OUT LPWSABUF lpCalleeData
,
543 WSASetLastError(WSASYSCALLFAILURE
);
544 return INVALID_SOCKET
;
553 WSANtohl(IN SOCKET s
,
555 OUT ULONG FAR
* lphostlong
)
559 WSASetLastError(WSASYSCALLFAILURE
);
569 WSANtohs(IN SOCKET s
,
571 OUT USHORT FAR
* lphostshort
)
575 WSASetLastError(WSASYSCALLFAILURE
);
585 WSASetBlockingHook(IN FARPROC lpBlockFunc
)
598 WSAUnhookBlockingHook(VOID
)
611 WSAProviderConfigChange(IN OUT LPHANDLE lpNotificationHandle
,
612 IN LPWSAOVERLAPPED lpOverlapped
,
613 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
)
617 WSASetLastError(WSASYSCALLFAILURE
);
627 WSACancelAsyncRequest(IN HANDLE hAsyncTaskHandle
)
631 WSASetLastError(WSASYSCALLFAILURE
);
635 /* WinSock Service Provider support functions */
642 WPUCompleteOverlappedRequest(IN SOCKET s
,
643 IN LPWSAOVERLAPPED lpOverlapped
,
645 IN DWORD cbTransferred
,
650 WSASetLastError(WSASYSCALLFAILURE
);
660 WSPStartup(IN WORD wVersionRequested
,
661 OUT LPWSPDATA lpWSPData
,
662 IN LPWSAPROTOCOL_INFOW lpProtocolInfo
,
663 IN WSPUPCALLTABLE UpcallTable
,
664 OUT LPWSPPROC_TABLE lpProcTable
)
668 return WSASYSCALLFAILURE
;
677 WSCDeinstallProvider(IN LPGUID lpProviderId
,
682 WSASetLastError(WSASYSCALLFAILURE
);
692 WSCEnumProtocols(IN LPINT lpiProtocols
,
693 OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer
,
694 IN OUT LPDWORD lpdwBufferLength
,
699 WSASetLastError(WSASYSCALLFAILURE
);
709 WSCGetProviderPath(IN LPGUID lpProviderId
,
710 OUT LPWSTR lpszProviderDllPath
,
711 IN OUT LPINT lpProviderDllPathLen
,
716 WSASetLastError(WSASYSCALLFAILURE
);
726 WSCInstallProvider(IN CONST LPGUID lpProviderId
,
727 IN CONST LPWSTR lpszProviderDllPath
,
728 IN CONST LPWSAPROTOCOL_INFOW lpProtocolInfoList
,
729 IN DWORD dwNumberOfEntries
,
734 WSASetLastError(WSASYSCALLFAILURE
);
744 WSCEnableNSProvider(IN LPGUID lpProviderId
,
749 WSASetLastError(WSASYSCALLFAILURE
);
759 WSCInstallNameSpace(IN LPWSTR lpszIdentifier
,
760 IN LPWSTR lpszPathName
,
761 IN DWORD dwNameSpace
,
763 IN LPGUID lpProviderId
)
767 WSASetLastError(WSASYSCALLFAILURE
);
777 WSCUnInstallNameSpace(IN LPGUID lpProviderId
)
781 WSASetLastError(WSASYSCALLFAILURE
);
791 WSCWriteProviderOrder(IN LPDWORD lpwdCatalogEntryId
,
792 IN DWORD dwNumberOfEntries
)
796 return WSASYSCALLFAILURE
;
804 WSANSPIoctl(HANDLE hLookup
,
810 LPDWORD lpcbBytesReturned
,
811 LPWSACOMPLETION lpCompletion
)
815 WSASetLastError(WSASYSCALLFAILURE
);
825 WSCUpdateProvider(LPGUID lpProviderId
,
826 const WCHAR FAR
* lpszProviderDllPath
,
827 const LPWSAPROTOCOL_INFOW lpProtocolInfoList
,
828 DWORD dwNumberOfEntries
,
833 WSASetLastError(WSASYSCALLFAILURE
);
842 WSCWriteNameSpaceOrder(LPGUID lpProviderId
,
843 DWORD dwNumberOfEntries
)
847 return WSASYSCALLFAILURE
;
855 getnameinfo(const struct sockaddr FAR
* sa
,
865 WSASetLastError(WSASYSCALLFAILURE
);
880 BOOL EXPORT
WSApSetPostRoutine(PVOID Routine
)