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(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
)
513 PCATALOG_ENTRY provider
;
516 WSASetLastError(WSANOTINITIALISED
);
520 if (!ReferenceProviderByHandle((HANDLE
)s
, &provider
))
522 WSASetLastError(WSAENOTSOCK
);
526 switch (provider
->ProtocolInfo
.iNetworkByteOrder
)
529 *lpnetshort
= htons(hostshort
);
533 *lpnetshort
= hostshort
;
535 *lpnetshort
= (((hostshort
& 0xFF00) >> 8) | ((hostshort
& 0x00FF) << 8));
561 WSAJoinLeaf(IN SOCKET s
,
562 IN CONST
struct sockaddr
*name
,
564 IN LPWSABUF lpCallerData
,
565 OUT LPWSABUF lpCalleeData
,
572 WSASetLastError(WSASYSCALLFAILURE
);
573 return INVALID_SOCKET
;
582 WSANtohl(IN SOCKET s
,
584 OUT ULONG FAR
* lphostlong
)
588 WSASetLastError(WSASYSCALLFAILURE
);
598 WSANtohs(IN SOCKET s
,
600 OUT USHORT FAR
* lphostshort
)
602 PCATALOG_ENTRY provider
;
605 WSASetLastError(WSANOTINITIALISED
);
609 if (!ReferenceProviderByHandle((HANDLE
)s
, &provider
))
611 WSASetLastError(WSAENOTSOCK
);
615 switch (provider
->ProtocolInfo
.iNetworkByteOrder
)
618 *lphostshort
= ntohs(netshort
);
622 *lphostshort
= netshort
;
624 *lphostshort
= (((netshort
& 0xFF00) >> 8) | ((netshort
& 0x00FF) << 8));
637 WSASetBlockingHook(IN FARPROC lpBlockFunc
)
650 WSAUnhookBlockingHook(VOID
)
663 WSAProviderConfigChange(IN OUT LPHANDLE lpNotificationHandle
,
664 IN LPWSAOVERLAPPED lpOverlapped
,
665 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
)
669 WSASetLastError(WSASYSCALLFAILURE
);
679 WSACancelAsyncRequest(IN HANDLE hAsyncTaskHandle
)
683 WSASetLastError(WSASYSCALLFAILURE
);
687 /* WinSock Service Provider support functions */
694 WPUCompleteOverlappedRequest(IN SOCKET s
,
695 IN LPWSAOVERLAPPED lpOverlapped
,
697 IN DWORD cbTransferred
,
702 WSASetLastError(WSASYSCALLFAILURE
);
712 WSPStartup(IN WORD wVersionRequested
,
713 OUT LPWSPDATA lpWSPData
,
714 IN LPWSAPROTOCOL_INFOW lpProtocolInfo
,
715 IN WSPUPCALLTABLE UpcallTable
,
716 OUT LPWSPPROC_TABLE lpProcTable
)
720 return WSASYSCALLFAILURE
;
729 WSCDeinstallProvider(IN LPGUID lpProviderId
,
734 WSASetLastError(WSASYSCALLFAILURE
);
744 WSCEnumProtocols(IN LPINT lpiProtocols
,
745 OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer
,
746 IN OUT LPDWORD lpdwBufferLength
,
751 WSASetLastError(WSASYSCALLFAILURE
);
761 WSCGetProviderPath(IN LPGUID lpProviderId
,
762 OUT LPWSTR lpszProviderDllPath
,
763 IN OUT LPINT lpProviderDllPathLen
,
768 WSASetLastError(WSASYSCALLFAILURE
);
778 WSCInstallProvider(IN LPGUID lpProviderId
,
779 IN CONST WCHAR
* lpszProviderDllPath
,
780 IN CONST LPWSAPROTOCOL_INFOW lpProtocolInfoList
,
781 IN DWORD dwNumberOfEntries
,
786 WSASetLastError(WSASYSCALLFAILURE
);
796 WSCEnableNSProvider(IN LPGUID lpProviderId
,
801 WSASetLastError(WSASYSCALLFAILURE
);
811 WSCInstallNameSpace(IN LPWSTR lpszIdentifier
,
812 IN LPWSTR lpszPathName
,
813 IN DWORD dwNameSpace
,
815 IN LPGUID lpProviderId
)
819 WSASetLastError(WSASYSCALLFAILURE
);
829 WSCUnInstallNameSpace(IN LPGUID lpProviderId
)
833 WSASetLastError(WSASYSCALLFAILURE
);
843 WSCWriteProviderOrder(IN LPDWORD lpwdCatalogEntryId
,
844 IN DWORD dwNumberOfEntries
)
848 return WSASYSCALLFAILURE
;
856 WSANSPIoctl(HANDLE hLookup
,
862 LPDWORD lpcbBytesReturned
,
863 LPWSACOMPLETION lpCompletion
)
867 WSASetLastError(WSASYSCALLFAILURE
);
877 WSCUpdateProvider(LPGUID lpProviderId
,
878 const WCHAR FAR
* lpszProviderDllPath
,
879 const LPWSAPROTOCOL_INFOW lpProtocolInfoList
,
880 DWORD dwNumberOfEntries
,
885 WSASetLastError(WSASYSCALLFAILURE
);
894 WSCWriteNameSpaceOrder(LPGUID lpProviderId
,
895 DWORD dwNumberOfEntries
)
899 return WSASYSCALLFAILURE
;
907 getnameinfo(const struct sockaddr FAR
* sa
,
917 WSASetLastError(WSASYSCALLFAILURE
);
932 BOOL EXPORT
WSApSetPostRoutine(PVOID Routine
)