#  
#         File: winsock.def 
#       System: MS-Windows 3.x 
#      Summary: Module definition file for Windows Sockets DLL.  
#  
name	winsock
id	9
length	155

1   pascal accept(long ptr ptr) Winsock_accept(1 2 3)
2   pascal bind(long ptr word) Winsock_bind(1 2 3)
3   pascal closesocket(long) Winsock_closesocket(1)
4   pascal connect(long ptr word) Winsock_connect(1 2 3)
5   pascal getpeername(long ptr ptr) Winsock_getpeername(1 2 3)
6   pascal getsockname(long ptr ptr) Winsock_getsockname(1 2 3)
7   pascal getsockopt(long word word ptr ptr)
           Winsock_getsockopt(1 2 3 4 5)
8   pascal htonl(long) Winsock_htonl(1)
9   pascal htons(word) Winsock_htons(1)
10  pascal inet_addr(ptr) Winsock_inet_addr(1)
11  pascal inet_ntoa(long) Winsock_inet_ntoa(1)
12  pascal ioctlsocket(long long ptr) Winsock_ioctlsocket(1 2 3)
13  pascal listen(long word) Winsock_listen(1 2)
14  pascal ntohl(long) Winsock_ntohl(1)
15  pascal ntohs(word) Winsock_ntohs(1)
16  pascal recv(long ptr word word) Winsock_recv(1 2 3 4)
17  pascal recvfrom(long ptr word word ptr ptr)
           Winsock_recvfrom(1 2 3 4 5 6)
18  pascal select(word ptr ptr ptr ptr word)
           Winsock_select(1 2 3 4 5 6)
19  pascal send(long ptr word word) Winsock_send(1 2 3 4)
20  pascal sendto(long ptr word word ptr ptr)
           Winsock_sendto(1 2 3 4 5 6)
21  pascal setsockopt(long word word ptr word)
           Winsock_setsockopt(1 2 3 4 5)
22  pascal shutdown(long word) Winsock_shutdown(1 2)
23  pascal socket(word word word) Winsock_socket(1 2 3)

51  pascal gethostbyaddr(ptr word word) Winsock_gethostbyaddr(1 2 3)
52  pascal gethostbyname(ptr) Winsock_gethostbyname(1)
53  pascal getprotobyname(ptr) Winsock_getprotobyname(1)
54  pascal getprotobynumber(word) Winsock_getprotobynumber(1)
55  pascal getservbyname(ptr) Winsock_getservbyname(1)
56  pascal getservbyport(word ptr) Winsock_getservbyport(1 2)
57  pascal gethostname(ptr word) Winsock_gethostname(1 2)

101 pascal WSAAsyncSelect(long word word long)
           WSAAsyncSelect(1 2 3 4)
102 pascal WSAAsyncGetHostByAddr(word word ptr word word ptr word)
           WSAAsyncGetHostByAddr(1 2 3 4 5 6 7)
103 pascal WSAAsyncGetHostByName(word word ptr ptr word)
           WSAAsyncGetHostByName(1 2 3 4 5)
104 pascal WSAAsyncGetProtoByNumber(word word word ptr word)
           WSAAsyncGetProtoByNumber(1 2 3 4 5)
105 pascal WSAAsyncGetProtoByName(word word ptr ptr word)
           WSAAsyncGetProtoByName(1 2 3 4 5)
106 pascal WSAAsyncGetServByPort(word word word ptr ptr word)
           WSAAsyncGetServByPort(1 2 3 4 5 6)
107 pascal WSAAsyncGetServByName(word word ptr ptr ptr word)
           WSAAsyncGetServByName(1 2 3 4 5 6)
108 pascal WSACancelAsyncRequest(word) WSACancelAsyncRequest(1)
109 pascal WSASetBlockingHook() WSASetBlockingHook()
110 pascal WSAUnhookBlockingHook() WSAUnhookBlockingHook()
111 pascal WSAGetLastError() WSAGetLastError()
112 pascal WSASetLastError(word) WSASetLastError(1)
113 pascal WSACancelBlockingCall() WSACancelBlockingCall()
114 pascal WSAIsBlocking() WSAIsBlocking()
115 pascal WSAStartup(word ptr) WSAStartup(1 2)
116 pascal WSACleanup() WSACleanup()

151 pascal __WSAFDIsSet(long ptr) WSAFDIsSet(1 2)
