Skip to content

A compatibility layer of Winsock 2 for Winsock 1.1 systems

License

Notifications You must be signed in to change notification settings

DaniElectra/winsock351

Repository files navigation

winsock351

This is a reimplementation of ws2_32.dll (Winsock 2) around wsock32.dll (Winsock 1.1) in order to support Winsock 2 applications under operating systems that don't support it, such as Windows NT 3.51.

What's supported

The following is the list of Winsock 2 exclusive functions that are supported by this library. Not all functions may be listed, since there are functions which target interaction with the network drivers directly which isn't a priority:

  • ✔️ Full support
  • ⚠️ Partial support
  • Not supported yet
Ordinal Function Support Notes
7 getsockopt ⚠️ May have Winsock2-exclusive opts
10 ioctlsocket ⚠️ May have Winsock2-exclusive cmds
21 setsockopt ⚠️ May have Winsock2-exclusive opts
24 WSApSetPostRoutine
25 FreeAddrInfoEx
26 FreeAddrInfoExW
27 FreeAddrInfoW
28 GetAddrInfoExA
29 GetAddrInfoExCancel
30 GetAddrInfoExOverlappedResult
31 GetAddrInfoExW
32 GetAddrInfoW
33 GetHostNameW
34 GetNameInfoW
35 InetNtopW
36 InetPtonW
37 SetAddrInfoExA
38 SetAddrInfoExW
41 WSAAccept
42 WSAAddressToStringA
43 WSAAddressToStringW
45 WSACloseEvent ✔️
46 WSAConnect
47 WSAConnectByList
48 WSAConnectByNameA
49 WSAConnectByNameW
50 WSACreateEvent ✔️
64 WSAEnumNetworkEvents ✔️
67 WSAEventSelect ✔️ Implemented around WSAAsyncSelect
74 WSAHtonl
75 WSAHtons
78 WSAIoctl Stubbed
86 WSANtohl
87 WSANtohs
88 WSAPoll
91 WSARecv
92 WSARecvDisconnect
93 WSARecvFrom
95 WSAResetEvent ✔️
96 WSASend
97 WSASendDisconnect
98 WSASendMsg
99 WSASendTo
100 WSASetEvent ✔️
119 WSASocketA
119 WSASocketw
120 WSAAddressToStringA
121 WSAStringToAddressW
124 WSAWaitForMultipleEvents ✔️
175 freeaddrinfo Stubbed
176 getaddrinfo Stubbed
177 getnameinfo

Usage

In order to use this library, you can simply drop it on the same path as the target application. Alternatively if you want to install the library globally, you can drop it along the rest of the libraries on your system on %WINDIR%\system32.

Build requirements

At the moment Visual C++ 6.0 is required to build the project, but Visual C++ 4.2 support may be considered in the future.

Supported systems

winsock351 has only been tested under Windows NT 3.51, but other systems such as early versions of Windows 95 may work too.

Credits

This project has been partly inspired by MattKC's backport of .NET to Windows 9x. The MSVC workflows have been adapted from there.