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
)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(IS_INTRESOURCE(optval
))
168 SetLastError(WSAEFAULT
);
172 if (!ReferenceProviderByHandle((HANDLE
)s
, &Provider
))
174 WSASetLastError(WSAENOTSOCK
);
178 Error
= Provider
->ProcTable
.lpWSPSetSockOpt(s
,
185 DereferenceProviderByPointer(Provider
);
187 if (Error
== SOCKET_ERROR
)
189 WSASetLastError(Errno
);
201 shutdown(IN SOCKET s
,
204 PCATALOG_ENTRY Provider
;
210 WSASetLastError(WSANOTINITIALISED
);
214 if (!ReferenceProviderByHandle((HANDLE
)s
, &Provider
))
216 WSASetLastError(WSAENOTSOCK
);
220 Error
= Provider
->ProcTable
.lpWSPShutdown(s
,
224 DereferenceProviderByPointer(Provider
);
226 if (Error
== SOCKET_ERROR
)
228 WSASetLastError(Errno
);
240 WSAAsyncSelect(IN SOCKET s
,
245 PCATALOG_ENTRY Provider
;
251 WSASetLastError(WSANOTINITIALISED
);
255 if (!ReferenceProviderByHandle((HANDLE
)s
, &Provider
))
257 WSASetLastError(WSAENOTSOCK
);
261 Error
= Provider
->ProcTable
.lpWSPAsyncSelect(s
,
267 DereferenceProviderByPointer(Provider
);
269 if (Error
== SOCKET_ERROR
)
271 WSASetLastError(Errno
);
283 WSACancelBlockingCall(VOID
)
288 PCATALOG_ENTRY Provider
;
292 WSASetLastError(WSANOTINITIALISED
);
296 if (!ReferenceProviderByHandle((HANDLE
)s
, &Provider
))
298 WSASetLastError(WSAENOTSOCK
);
302 Error
= Provider
->ProcTable
.lpWSPCancelBlockingCall(&Errno
);
304 DereferenceProviderByPointer(Provider
);
306 if (Error
== SOCKET_ERROR
)
308 WSASetLastError(Errno
);
316 WSASetLastError(WSASYSCALLFAILURE
);
326 WSADuplicateSocketA(IN SOCKET s
,
327 IN DWORD dwProcessId
,
328 OUT LPWSAPROTOCOL_INFOA lpProtocolInfo
)
331 WSAPROTOCOL_INFOA ProtocolInfoU
;
333 Error
= WSADuplicateSocketW(s
,
337 if (Error
== NO_ERROR
)
339 UnicodeToAnsi(lpProtocolInfo
,
350 WSASetLastError(WSASYSCALLFAILURE
);
361 WSADuplicateSocketW(IN SOCKET s
,
362 IN DWORD dwProcessId
,
363 OUT LPWSAPROTOCOL_INFOW lpProtocolInfo
)
367 PCATALOG_ENTRY Provider
;
371 WSASetLastError(WSANOTINITIALISED
);
375 if (!ReferenceProviderByHandle((HANDLE
)s
, &Provider
))
377 WSASetLastError(WSAENOTSOCK
);
381 Error
= Provider
->ProcTable
.lpWSPDuplicateSocket(s
,
385 DereferenceProviderByPointer(Provider
);
387 if (Error
== SOCKET_ERROR
)
389 WSASetLastError(Errno
);
401 WSAEnumProtocolsA(IN LPINT lpiProtocols
,
402 OUT LPWSAPROTOCOL_INFOA lpProtocolBuffer
,
403 IN OUT LPDWORD lpdwBufferLength
)
407 WSASetLastError(WSASYSCALLFAILURE
);
417 WSAEnumProtocolsW(IN LPINT lpiProtocols
,
418 OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer
,
419 IN OUT LPDWORD lpdwBufferLength
)
423 WSASetLastError(WSASYSCALLFAILURE
);
433 WSAGetOverlappedResult(IN SOCKET s
,
434 IN LPWSAOVERLAPPED lpOverlapped
,
435 OUT LPDWORD lpcbTransfer
,
437 OUT LPDWORD lpdwFlags
)
441 PCATALOG_ENTRY Provider
;
445 WSASetLastError(WSANOTINITIALISED
);
449 if (!ReferenceProviderByHandle((HANDLE
)s
, &Provider
))
451 WSASetLastError(WSAENOTSOCK
);
455 Success
= Provider
->ProcTable
.lpWSPGetOverlappedResult(s
,
461 DereferenceProviderByPointer(Provider
);
463 if (Success
== FALSE
)
465 WSASetLastError(Errno
);
477 WSAGetQOSByName(IN SOCKET s
,
478 IN OUT LPWSABUF lpQOSName
,
483 WSASetLastError(WSASYSCALLFAILURE
);
493 WSAHtonl(IN SOCKET s
,
495 OUT ULONG FAR
* lpnetlong
)
499 WSASetLastError(WSASYSCALLFAILURE
);
509 WSAHtons(IN SOCKET s
,
511 OUT USHORT FAR
* lpnetshort
)
515 WSASetLastError(WSASYSCALLFAILURE
);
538 WSAJoinLeaf(IN SOCKET s
,
539 IN CONST
struct sockaddr
*name
,
541 IN LPWSABUF lpCallerData
,
542 OUT LPWSABUF lpCalleeData
,
549 WSASetLastError(WSASYSCALLFAILURE
);
550 return INVALID_SOCKET
;
559 WSANtohl(IN SOCKET s
,
561 OUT ULONG FAR
* lphostlong
)
565 WSASetLastError(WSASYSCALLFAILURE
);
575 WSANtohs(IN SOCKET s
,
577 OUT USHORT FAR
* lphostshort
)
581 WSASetLastError(WSASYSCALLFAILURE
);
591 WSASetBlockingHook(IN FARPROC lpBlockFunc
)
604 WSAUnhookBlockingHook(VOID
)
617 WSAProviderConfigChange(IN OUT LPHANDLE lpNotificationHandle
,
618 IN LPWSAOVERLAPPED lpOverlapped
,
619 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
)
623 WSASetLastError(WSASYSCALLFAILURE
);
633 WSACancelAsyncRequest(IN HANDLE hAsyncTaskHandle
)
637 WSASetLastError(WSASYSCALLFAILURE
);
641 /* WinSock Service Provider support functions */
648 WPUCompleteOverlappedRequest(IN SOCKET s
,
649 IN LPWSAOVERLAPPED lpOverlapped
,
651 IN DWORD cbTransferred
,
656 WSASetLastError(WSASYSCALLFAILURE
);
666 WSPStartup(IN WORD wVersionRequested
,
667 OUT LPWSPDATA lpWSPData
,
668 IN LPWSAPROTOCOL_INFOW lpProtocolInfo
,
669 IN WSPUPCALLTABLE UpcallTable
,
670 OUT LPWSPPROC_TABLE lpProcTable
)
674 return WSASYSCALLFAILURE
;
683 WSCDeinstallProvider(IN LPGUID lpProviderId
,
688 WSASetLastError(WSASYSCALLFAILURE
);
698 WSCEnumProtocols(IN LPINT lpiProtocols
,
699 OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer
,
700 IN OUT LPDWORD lpdwBufferLength
,
705 WSASetLastError(WSASYSCALLFAILURE
);
715 WSCGetProviderPath(IN LPGUID lpProviderId
,
716 OUT LPWSTR lpszProviderDllPath
,
717 IN OUT LPINT lpProviderDllPathLen
,
722 WSASetLastError(WSASYSCALLFAILURE
);
732 WSCInstallProvider(IN CONST LPGUID lpProviderId
,
733 IN CONST LPWSTR lpszProviderDllPath
,
734 IN CONST LPWSAPROTOCOL_INFOW lpProtocolInfoList
,
735 IN DWORD dwNumberOfEntries
,
740 WSASetLastError(WSASYSCALLFAILURE
);
750 WSCEnableNSProvider(IN LPGUID lpProviderId
,
755 WSASetLastError(WSASYSCALLFAILURE
);
765 WSCInstallNameSpace(IN LPWSTR lpszIdentifier
,
766 IN LPWSTR lpszPathName
,
767 IN DWORD dwNameSpace
,
769 IN LPGUID lpProviderId
)
773 WSASetLastError(WSASYSCALLFAILURE
);
783 WSCUnInstallNameSpace(IN LPGUID lpProviderId
)
787 WSASetLastError(WSASYSCALLFAILURE
);
797 WSCWriteProviderOrder(IN LPDWORD lpwdCatalogEntryId
,
798 IN DWORD dwNumberOfEntries
)
802 return WSASYSCALLFAILURE
;
810 WSANSPIoctl(HANDLE hLookup
,
816 LPDWORD lpcbBytesReturned
,
817 LPWSACOMPLETION lpCompletion
)
821 WSASetLastError(WSASYSCALLFAILURE
);
831 WSCUpdateProvider(LPGUID lpProviderId
,
832 const WCHAR FAR
* lpszProviderDllPath
,
833 const LPWSAPROTOCOL_INFOW lpProtocolInfoList
,
834 DWORD dwNumberOfEntries
,
839 WSASetLastError(WSASYSCALLFAILURE
);
848 WSCWriteNameSpaceOrder(LPGUID lpProviderId
,
849 DWORD dwNumberOfEntries
)
853 return WSASYSCALLFAILURE
;
861 getnameinfo(const struct sockaddr FAR
* sa
,
871 WSASetLastError(WSASYSCALLFAILURE
);
886 BOOL EXPORT
WSApSetPostRoutine(PVOID Routine
)