Функция WSALookupServiceNextA (winsock2.h)
Функция WSALookupServiceNex t вызывается после получения дескриптора из предыдущего вызова WSALookupServiceBegin, чтобы получить запрошенные сведения о службе.
Поставщик передает структуру WSAQUERYSET в буфере lpqsResults. Клиент должен продолжать вызывать эту функцию, пока она не возвращает WSA_E_NO_MORE, указывая на то, что возвращается все WSAQUERYSET.
Синтаксис
INT WSAAPI WSALookupServiceNextA(
[in] HANDLE hLookup,
[in] DWORD dwControlFlags,
[in, out] LPDWORD lpdwBufferLength,
[out] LPWSAQUERYSETA lpqsResults
);
Параметры
[in] hLookup
Дескриптор, возвращенный из предыдущего вызова WSALookupServiceBegin.
[in] dwControlFlags
Набор флагов, которые управляют операцией. Значения, передаваемые в параметре dwControlFlags функции WSALookupServiceBegin, определяют возможные критерии. Все значения, передаваемые в параметре dwControlFlagsфункции WSALookupServiceNext, дополнительно ограничивают критерии поиска службы.
В настоящее время LUP_FLUSHPREVIOUS определяется как средство для решения результирующий набор, который слишком велик. Если приложение не (или не может) предоставить достаточно большой буфер, установка LUP_FLUSHPREVIOUS указывает поставщику отменить последний результирующий набор ( который был слишком большим) и перейти к следующему набору для этого вызова.
Поддерживаемые значения для параметра dwControlFlags определены в файле заголовка Winsock2.h и могут быть сочетанием следующих параметров.
Флаг | Значение |
---|---|
|
Запросы глубоко, а не только на первом уровне. |
|
Возвращает только контейнеры. |
|
Не возвращайте контейнеры. |
|
Если это возможно, возвращает результаты в порядке расстояния. Мера расстояния является конкретной поставщиком. |
|
Извлекает имя как lpszServiceInstanceName. |
|
Извлекает тип как lpServiceClassId. |
|
Извлекает версию как lpVersion. |
|
Извлекает комментарий как lpszComment. |
|
Извлекает адреса как lpcsaBuffer. |
|
Извлекает частные данные как lpBlob. |
|
Все доступные сведения о псевдониме должны быть возвращены в последующих вызовах WSALookupServiceNext, а каждый псевдоним, возвращенный, будет иметь набор флагов RESULT_IS_ALIAS. |
|
Извлекает строку запроса, используемую для запроса. |
|
Набор флагов, извлекающих все значения LUP_RETURN_*. |
|
Используется в качестве значения для параметра dwControlFlags в WSALookupServiceNext. Задание этого флага указывает поставщику отменить последний результирующий набор, который был слишком большим для указанного буфера, и перейти к следующему результирующем набору. |
|
Если поставщик кэширует сведения, игнорирует кэш и запрашивает само пространство имен. |
|
Это указывает, находится ли основной ответ в удаленной или локальной части структуры CSADDR_INFO. Другая часть должна быть пригодной для использования в любом случае. |
[in, out] lpdwBufferLength
Во входных данных число байтов, содержащихся в буфере, на которое указывает lpqsResults. Если функция завершается ошибкой, и ошибка WSAEFAULT, то она содержит минимальное количество байтов, которые необходимо передать для lpqsResults для получения записи.
[out] lpqsResults
Указатель на блок памяти, который будет содержать один результирующий набор в структуре WSAQUERYSET при возврате.
Возвращаемое значение
Возвращаемое значение равно нулю, если операция выполнена успешно. В противном случае возвращается значение SOCKET_ERROR, а определенный номер ошибки можно получить путем вызова WSAGetLastError.
Код ошибки | Значение |
---|---|
Вызов WSALookupServiceEnd был выполнен во время обработки этого вызова. Звонок был отменен. Данные в буфере lpqsResults не определены. В Сокетах Windows версии 2 конфликтующие коды ошибок определены для WSAECANCELLED (10103) и WSA_E_CANCELLED (10111). Код ошибки WSAECANCELLED будет удален в будущей версии и останется только WSA_E_CANCELLED. Однако для сокетов Windows версии 2 приложения должны проверять наличие WSAECANCELLED и WSA_E_CANCELLED для обеспечения максимальной совместимости с поставщиками пространств имен, которые используют любой из них. | |
Больше данных нет. В Сокетах Windows версии 2 конфликтующие коды ошибок определяются для WSAENOMORE (10102) и WSA_E_NO_MORE (10110). Код ошибки WSAENOMORE будет удален в будущей версии и останется только WSA_E_NO_MORE. Однако для сокетов Windows версии 2 приложения должны проверять наличие WSAENOMORE и WSA_E_NO_MORE для обеспечения максимальной совместимости с поставщиками пространства имен, которые используют один из них. | |
Буфер |
|
Один или несколько обязательных параметров были недопустимыми или отсутствуют. | |
Указанный дескриптор подстановки недопустим. | |
WS2_32.DLL не инициализирована. Приложение должно сначала вызвать WSAStartup перед вызовом функций сокетов Windows. | |
Имя было найдено в базе данных, но данные, соответствующие заданным ограничениям, не были найдены. | |
Для выполнения операции недостаточно памяти. |
Замечания
Параметр dwControlFlags
dwControlFlags LUP_FLUSHPREVIOUS и LUP_RES_SERVICE являются исключениями из правила объединенных ограничений (так как они являются флагами поведения вместо флагов ограничений). Если любой из этих флагов используется в WSALookupServiceNext они имеют определенный эффект независимо от настройки одних и того же флага в WSALookupServiceBegin.
Например, если LUP_RETURN_VERSION указан в WSALookupServiceBegin поставщик услуг получает записи, включая версию. Если LUP_RETURN_VERSION не указан в WSALookupServiceNext, возвращаемые сведения не включают версию, даже если она была доступна. Ошибка не создается.
Например, если LUP_RETURN_BLOB не указан в WSALookupServiceBegin, но указан в WSALookupServiceNext, возвращаемые сведения не включают частные данные. Ошибка не создается.
Если функция WSALookupServiceNext завершается ошибкой
Результаты запроса
В следующей таблице описывается, как результаты запроса представлены в структуре WSAQUERYSET.Член WSAQUERYSET | Интерпретация результатов |
---|---|
dwSize | Будет задано значение sizeof( WSAQUERYSET). Это используется в качестве механизма управления версиями. |
dwOutputFlags |
RESULT_IS_ALIAS флаг указывает, что это результат псевдонима. |
lpszServiceInstanceName | Ссылка на строку содержит имя службы. |
lpServiceClassId | GUID, соответствующий классу службы. |
lpVersion | Ссылается на номер версии конкретного экземпляра службы. |
lpszComment | Необязательная строка комментария, указанная экземпляром службы. |
dwNameSpace | Пространство имен, в котором найден экземпляр службы. |
lpNSProviderId | Определяет конкретный поставщик пространства имен, который предоставил этот результат запроса. |
lpszContext | Указывает точку контекста в иерархическом пространстве имен, в котором находится служба. |
dwNumberOfProtocols | Не определено для результатов. |
lpafpProtocols | Не определено для результатов, все необходимые сведения о протоколе хранятся в CSADDR_INFO структурах. |
lpszQueryString | Если dwControlFlags включает LUP_RETURN_QUERY_STRING, этот параметр возвращает необратимую оставшуюся часть lpszServiceInstanceName, указанной в исходном запросе. Например, в пространстве имен, определяющем службы по иерархическим именам, указывающим имя узла и путь к файлу в этом узле, возвращаемый адресом может быть адрес узла, а остальные элементы непарассированного файла могут быть пути к файлу. Если lpszServiceInstanceName полностью анализируется и используется LUP_RETURN_QUERY_STRING, этот параметр null или указывает на строку нулевой длины. |
dwNumberOfCsAddrs | Указывает количество элементов в массиве CSADDR_INFO структур. |
lpcsaBuffer | Указатель на массив структур CSADDR_INFO с одним полным адресом транспорта, содержащимся в каждом элементе. |
lpBlob | (Необязательно) Это указатель на сущность для конкретного поставщика. |
Windows Phone 8: функция WSALookupServiceNext W поддерживается для приложений Магазина Windows Phone в Windows Phone 8 и более поздних версиях.
Windows 8.1 и Windows Server 2012 R2: функция WSALookupServiceNextW поддерживается для приложений Магазина Windows в Windows 8.1, Windows Server 2012 R2 и более поздних версий.
Заметка
Заголовок winsock2.h определяет WSALookupServiceNext как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows 8.1, Windows Vista [классические приложения | Приложения UWP] |
минимальный поддерживаемый сервер | Windows Server 2003 [классические приложения | Приложения UWP] |
целевая платформа | Виндоус |
заголовка | winsock2.h |
библиотеки |
Ws2_32.lib |
DLL | Ws2_32.dll |
См. также
Bluetooth и WSALookupServiceNext
Справочник