WSALookupServiceNext
The Windows
Sockets WSALookupServiceNext function is called after obtaining a handle
from a previous call to WSALookupServiceBegin in order to retrieve the
requested service information.
The provider
will pass back a WSAQUERYSET structure in the lpqsResults buffer.
The client should continue to call this function until it returns WSA_E_NOMORE,
indicating that all of WSAQUERYSET has been returned.
INT WSALookupServiceNext (
HANDLE hLookup, |
|
DWORD dwControlFlags, |
|
LPDWORD lpdwBufferLength, |
|
LPWSAQUERYSET lpqsResults |
|
); |
|
Parameters
hLookup
[in] Handle
returned from the previous call to WSALookupServiceBegin.
dwControlFlags
[in] Flags to
control the next operation. This is currently used to indicate to the provider
what to do if the result set is too big for the buffer. If on the previous call
to WSALookupServiceNext the result set was too large for the buffer, the
application can choose to do one of two things on this call. First, it can
choose to pass a bigger buffer and try again. Second, if it cannot or is
unwilling to allocate a larger buffer, it can pass LUP_FLUSHPREVIOUS to tell
the provider to throw away the last result set, which was too large, and move
on to the next set for this call.
lpdwBufferLength
[in/out] On
input, the number of bytes contained in the buffer pointed to by lpresResults.
On output, if the function fails and the error is WSAEFAULT, then it contains
the minimum number of bytes to pass for the lpqsResults to retrieve the
record.
lpqsResults
[out] A
pointer to a block of memory, which will contain one result set in a WSAQUERYSET
structure on return.
Query Results
The following
table describes how the query results are represented in the WSAQUERYSET
structure.
WSAQUERYSET
Field Name |
Result
Interpretation |
dwSize |
Will be set
to sizeof(WSAQUERYSET). This is used as a versioning mechanism. |
dwOuputFlags |
RESULT_IS_ALIAS
flag indicates this is an alias result. |
lpszServiceInstanceName |
Referenced
string contains service name. |
lpServiceClassId |
The GUID
corresponding to the service class. |
lpVersion |
References
version number of the particular service instance. |
lpszComment |
Optional
comment string supplied by service instance. |
dwNameSpace |
Name space
in which the service instance was found. |
lpNSProviderId |
Identifies
the specific name space provider that supplied this query result. |
lpszContext |
Specifies
the context point in a hierarchical name space at which the service is
located. |
dwNumberOfProtocols |
Undefined
for results. |
lpafpProtocols |
Undefined
for results, all needed protocol information is in the CSADDR_INFO
structures. |
lpszQueryString |
Undefined
for results. |
dwNumberOfCsAddrs |
Indicates
the number of elements in the array of CSADDR_INFO structures. |
lpcsaBuffer |
A pointer
to an array of CSADDR_INFO structures, with one complete transport address
contained within each element. |
lpBlob |
(Optional)
This is a pointer to a
provider-specific entity. |
Return Values
The return
value is zero if the operation was successful. Otherwise, the value
SOCKET_ERROR is returned, and a specific error number may be retrieved by
calling WSAGetLastError.
Error Codes
WSA_E_NO_MORE |
There is no
more data available. |
WSA_E_CANCELLED |
A call to
WSALookupServiceEnd was made while this call was still processing. The call
has been canceled. The data in the lpqsResults buffer is undefined. |
WSAEFAULT |
The lpqsResults
buffer was too small to contain a WSAQUERYSET set. |
WSA_INVALID_HANDLE |
The specified
Lookup handle is invalid. |
WSANOTINITIALIZED |
The Windows
Sockets 2 DLL has not been initialized. The application must first call WSAStartup
before calling any Windows Sockets functions. |
WSANO_DATA |
The name
was ound in the database, but no data matching the given restrictions was
located. |
WSASERVICE_NOT_FOUND |
No such
service is known. The service cannot be found in the specified name space. |
See Also