Important The GetService function is a Microsoft-specific extension to the Windows Sockets 1.1 specification. This function is obsolete. For the convenience of Windows Sockets 1.1 developers, the reference material is below..
The functions detailed in Protocol-Independent Name Resolution provide equivalent functionality in Windows Sockets 2.
The GetService function obtains information about a network service in the context of a set of default name spaces or a specified name space. The network service is specified by its type and name. The information about the service is obtained as a set of NS_SERVICE_INFO data structures.
INT GetService(
DWORD dwNameSpace, // specifies name space or spaces to search
PGUID lpGuid, // points to a GUID service type
LPTSTR lpServiceName,
// points to a service name
DWORD dwProperties, // specifies service information to be
// obtained
LPVOID lpBuffer, // points to buffer to receive service
// information
LPDWORD lpdwBufferSize, // points to size of buffer, size of
// service information
LPSERVICE_ASYNC_INFO lpServiceAsyncInfo
// reserved for future use, must be NULL
);
Use one of the following constants to specify a name space:
Value | Name Space |
---|---|
NS_DEFAULT | A set of default name spaces. The operating system will query each name space within this set. The set of default name spaces typically includes all the name spaces installed on the system. System administrators, however, can exclude particular name spaces from the set. NS_DEFAULT is the value that most applications should use for dwNameSpace. |
NS_DNS | The Domain Name System used in the Internet for host name resolution. |
NS_NETBT | The NetBIOS over TCP/IP layer. All Windows NT systems register their computer names with NetBIOS. This name space is used to resolve a computer name into an IP address using this registration. Note that NS_NETBT can access a WINS server to perform the resolution. |
NS_SAP | The Netware Service Advertising Protocol. This can access the Netware bindery if appropriate. NS_SAP is a dynamic name space that allows registration of services. |
NS_TCPIP_HOSTS | Looks up host names and IP addresses in the <systemroot>\system32\drivers\etc\hosts file. |
NS_TCPIP_LOCAL | Local TCP/IP name resolution mechanisms, including comparisons against the local host name and looks up host names and IP addresses in cache of host to IP address mappings. |
Most calls to GetService should use the special value NS_DEFAULT. This lets a client get by with no knowledge of which name spaces are available on an internetwork. The system administrator determines name space access. Name spaces can come and go without the client having to be aware of the changes.
Value | Name Space |
---|---|
PROP_COMMENT | If this flag is set, the function stores data in the lpComment member of the data structures stored in *lpBuffer. |
PROP_LOCALE | If this flag is set, the function stores data in the lpLocale member of the data structures stored in *lpBuffer. |
PROP_DISPLAY_HINT | If this flag is set, the function stores data in the dwDisplayHint member of the data structures stored in *lpBuffer. |
PROP_VERSION | If this flag is set, the function stores data in the dwVersion member of the data structures stored in *lpBuffer. |
PROP_START_TIME | If this flag is set, the function stores data in the dwTime member of the data structures stored in *lpBuffer. |
PROP_MACHINE | If this flag is set, the function stores data in the lpMachineName member of the data structures stored in *lpBuffer. |
PROP_ADDRESSES | If this flag is set, the function stores data in the lpServiceAddress member of the data structures stored in *lpBuffer. |
PROP_SD | If this flag is set, the function stores data in the ServiceSpecificInfo member of the data structures stored in *lpBuffer. |
PROP_ALL | If this flag is set, the function stores data in all of the members of the data structures stored in *lpBuffer. |
Each NS_SERVICE_INFO structure contains a SERVICE_INFO structure. The members of these SERVICE_INFO structures will contain valid data based on the bit flags that are set in the dwProperties parameter. If a member's corresponding bit flag is not set in dwProperties, the member's value is undefined.
The function stores the NS_SERVICE_INFO structures in a consecutive array, starting at the beginning of the buffer. The pointers in the contained SERVICE_INFO structures point to information that is stored in the buffer between the end of the NS_SERVICE_INFO structures and the end of the buffer.
If the function succeeds, the return value is the number of NS_SERVICE_INFO structures stored in *lpBuffer. Zero indicates that no structures were stored.
If the function fails, the return value is SOCKET_ERROR ( – 1). To get extended error information, call GetLastError. GetLastError can return one of the following extended error values:
Value | Meaning |
---|---|
ERROR_INSUFFICIENT_BUFFER | The buffer pointed to by lpBuffer is too small to receive all of the requested information. Call the function with a buffer at least as large as the value returned in *lpdwBufferSize. |
ERROR_SERVICE_NOT_FOUND | The specified service was not found, or the specified name space is not in use. The function return value is zero in this case. |
Windows NT: Yes
Windows CE: Unsupported.
Header: Declared in nspapi.h.
Import Library: Link with wsock32.lib.
SetService, NS_SERVICE_INFO, SERVICE_INFO