Compatible Name Resolution for TCP/IP in the Windows Sockets 1.1 SPI

Windows Sockets 1.1 defined a number of routines that were used for IPv4 name resolution with TCP/IP networks. These are customarily called the GetXbyY functions and include the following.

gethostname

gethostbyaddr

gethostbyname

getprotobyname

getprotobynumber

getservbyname

getservbyport

Asynchronous versions of these functions were also defined.

WSAAsyncGetHostByAddr

WSAAsyncGetHostByName

WSAAsyncGetProtoByName

WSAAsyncGetProtoByNumber

WSAAsyncGetServByName

WSAAsyncGetServByPort

These functions are specific to TCP/IP networks; developers of protocol-independent applications are discouraged from continuing to utilize these transport-specific functions. However, to retain strict backward compatibility with Windows Sockets 1.1, the preceding functions continue to be supported as long as at least one namespace provider is present that supports the AF_INET address family.

The Ws2_32.dll implements these compatibility functions in terms of the new, protocol-independent name resolution facilities using an appropriate sequence of WSALookupServiceBegin, WSALookupServiceNext, WSALookupServiceEnd function calls. The details of how the GetXbyY functions are mapped to name resolution functions are provided below. The Ws2_32.dll handles the differences between the asynchronous and synchronous versions of the GetXbyY functions, so that only the implementation of the synchronous GetXbyY functions are discussed.