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

1   pascal16 accept(word ptr ptr) WINSOCK_accept(1 2 3)
2   pascal16 bind(word ptr word) WINSOCK_bind(1 2 3)
3   pascal16 closesocket(word) WINSOCK_closesocket(1)
4   pascal16 connect(word ptr word) WINSOCK_connect(1 2 3)
5   pascal16 getpeername(word ptr ptr) WINSOCK_getpeername(1 2 3)
6   pascal16 getsockname(word ptr ptr) WINSOCK_getsockname(1 2 3)
7   pascal16 getsockopt(word word word ptr ptr) WINSOCK_getsockopt(1 2 3 4 5)
8   pascal   htonl(long) WINSOCK_htonl(1)
9   pascal16 htons(word) WINSOCK_htons(1)
10  pascal   inet_addr(long) WINSOCK_inet_addr(1)
11  pascal   inet_ntoa(long) WINSOCK_inet_ntoa(1)
12  pascal16 ioctlsocket(word long ptr) WINSOCK_ioctlsocket(1 2 3)
13  pascal16 listen(word word) WINSOCK_listen(1 2)
14  pascal   ntohl(long) WINSOCK_ntohl(1)
15  pascal16 ntohs(word) WINSOCK_ntohs(1)
16  pascal16 recv(word ptr word word) WINSOCK_recv(1 2 3 4)
17  pascal16 recvfrom(word ptr word word ptr ptr)
             WINSOCK_recvfrom(1 2 3 4 5 6)
18  pascal16 select(word ptr ptr ptr ptr word)
             WINSOCK_select(1 2 3 4 5 6)
19  pascal16 send(word ptr word word) WINSOCK_send(1 2 3 4)
20  pascal16 sendto(word ptr word word ptr ptr)
             WINSOCK_sendto(1 2 3 4 5 6)
21  pascal16 setsockopt(word word word ptr word)
             WINSOCK_setsockopt(1 2 3 4 5)
22  pascal16 shutdown(word word) WINSOCK_shutdown(1 2)
23  pascal16 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 ptr) WINSOCK_getservbyname(1 2)
56  pascal   getservbyport(word ptr) WINSOCK_getservbyport(1 2)
57  pascal   gethostname(ptr word) WINSOCK_gethostname(1 2)
101 pascal16 WSAAsyncSelect(word word word long)
             WSAAsyncSelect(1 2 3 4)
102 pascal16 WSAAsyncGetHostByAddr(word word ptr word word ptr word)
             WSAAsyncGetHostByAddr(1 2 3 4 5 6 7)
103 pascal16 WSAAsyncGetHostByName(word word ptr ptr word)
             WSAAsyncGetHostByName(1 2 3 4 5)
104 pascal16 WSAAsyncGetProtoByNumber(word word word ptr word)
             WSAAsyncGetProtoByNumber(1 2 3 4 5)
105 pascal16 WSAAsyncGetProtoByName(word word ptr ptr word)
             WSAAsyncGetProtoByName(1 2 3 4 5)
106 pascal16 WSAAsyncGetServByPort(word word word ptr ptr word)
             WSAAsyncGetServByPort(1 2 3 4 5 6)
107 pascal16 WSAAsyncGetServByName(word word ptr ptr ptr word)
             WSAAsyncGetServByName(1 2 3 4 5 6)
108 pascal16 WSACancelAsyncRequest(word) WSACancelAsyncRequest(1)
109 pascal16 WSASetBlockingHook() WSASetBlockingHook()
110 pascal16 WSAUnhookBlockingHook() WSAUnhookBlockingHook()
111 pascal16 WSAGetLastError() WSAGetLastError()
112 pascal   WSASetLastError(word) WSASetLastError(1)
113 pascal16 WSACancelBlockingCall() WSACancelBlockingCall()
114 pascal16 WSAIsBlocking() WSAIsBlocking()
115 pascal   WSAStartup(word ptr) WSAStartup(1 2)
116 pascal   WSACleanup() WSACleanup()
151 pascal16 __WSAFDIsSet(word ptr) WSAFDIsSet(1 2)
