Функция обратного вызова LPNSPLOOKUPSERVICENEXT (ws2spi.h)
Функция NSPLookupServiceNext вызывается после получения дескриптора из предыдущего вызова NSPLookupServiceBegin для получения запрошенных сведений о службе.
Поставщик передает структуру WSAQUERYSET в буфер lpqsResults . Клиент должен вызывать эту функцию до тех пор, пока она не вернет WSA_E_NOMORE, указывая, что все WSAQUERYSET были возвращены.
Синтаксис
LPNSPLOOKUPSERVICENEXT Lpnsplookupservicenext;
INT Lpnsplookupservicenext(
[in] HANDLE hLookup,
[in] DWORD dwControlFlags,
[in, out] LPDWORD lpdwBufferLength,
[out] LPWSAQUERYSETW lpqsResults
)
{...}
Параметры
[in] hLookup
Дескриптор, возвращенный из предыдущего вызова WSALookupServiceBegin.
[in] dwControlFlags
Флаги, используемые для управления следующей операцией. В настоящее время только LUP_FLUSHPREVIOUS определяется как средство обработки слишком большого результирующих наборов. Если приложение не может предоставить достаточно большой буфер, задание LUP_FLUSHPREVIOUS указывает поставщику отменить последний результирующий набор, который был слишком большим, и перейти к следующему набору для этого вызова.
[in, out] lpdwBufferLength
Размер входных данных в байтах, который содержится в буфере, на который указывает lpqsResults. В выходных данных, если функция завершается сбоем и возникает ошибка WSAEFAULT, она содержит минимальный размер в байтах, который необходимо передать для извлечения записи lpqsResults .
[out] lpqsResults
Указатель на блок памяти, который при возврате будет содержать один результирующий набор в структуре WSAQUERYSET .
Возвращаемое значение
Функция должна возвращать NO_ERROR (ноль), если подпрограмма завершается успешно. Он должен вернуть SOCKET_ERROR (–1), если подпрограмма завершается сбоем, и она должна задать соответствующий код ошибки с помощью WSASetLastError.
Код ошибки | Значение |
---|---|
Во время обработки этого вызова был выполнен вызов NSPLookupServiceEnd . Звонок отменен. Данные в буфере lpqsResults не заданы.
В Windows Sockets 2 конфликтующие коды ошибок определяются для WSAECANCELLED (10103) и WSA_E_CANCELLED (10111). Код ошибки WSAECANCELLED будет удален в следующей версии и останется только WSA_E_CANCELLED. Поставщики пространств имен должны использовать код ошибки WSA_E_CANCELLED для обеспечения совместимости с максимально широким диапазоном приложений. |
|
Больше нет доступных данных.
В Windows Sockets 2 конфликтующие коды ошибок определяются для WSAENOMORE (10102) и WSA_E_NO_MORE (10110). Код ошибки WSAENOMORE будет удален в следующей версии и останется только WSA_E_NO_MORE. Поставщики пространств имен должны использовать код ошибки WSA_E_NO_MORE для обеспечения совместимости с максимально широким спектром приложений. |
|
Указанный дескриптор подстановки недопустим. | |
Недостаточно памяти для выполнения этой операции. | |
Буфер lpqsResults был слишком мал, чтобы содержать набор WSAQUERYSET . | |
Один или несколько параметров недопустимы или отсутствуют для этого поставщика. | |
Операция не поддерживается. Эта ошибка возвращается, если поставщик пространства имен не реализует эту функцию. | |
Имя было найдено в базе данных, но не было найдено данных, соответствующих заданным ограничениям. | |
Служба неизвестна. Служба не найдена в указанном пространстве имен. |
Комментарии
Объекты dwControlFlags, указанные в этой функции, и те, которые указаны во время NSPLookupServiceBegin , обрабатываются как ограничения для объединения. Ограничения объединяются между ограничениями во времени NSPLookupServiceBegin и ограничениями на NSPLookupServiceNext . Таким образом, флаги в NSPLookupServiceNext никогда не могут увеличить объем возвращаемых данных, превышающий запрошенный в NSPLookupServiceBegin, хотя указание большего или меньшего числа флагов не является ошибкой. Флаги, указанные в заданном NSPLookupServiceNext, применяются только к данному вызову.
LUP_FLUSHPREVIOUS и LUP_RES_SERVICEdwControlFlags являются исключениями из правила объединенных ограничений (так как они являются флагами поведения, а не флагами ограничений). Если в NSPLookupServiceNext используется любой из флагов, они имеют определенный эффект независимо от установки одинаковых флагов в NSPLookupServiceBegin.
Например, если LUP_RETURN_VERSION указано в NSPLookupServiceBegin, поставщик услуг извлекает записи, включая версию. Если LUP_RETURN_VERSION не указан в NSPLookupServiceNext, возвращаемые сведения не включают версию, даже если она была доступна. Ошибка не возникает.
Кроме того, если LUP_RETURN_BLOB не указан в NSPLookupServiceBegin, но указан в NSPLookupServiceNext, возвращаемые сведения не включают частные данные. Ошибка не возникает.
Результаты запроса
В следующей таблице приведен список WSAQUERYSET и описано, как результаты запроса представлены в структуре 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 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | ws2spi.h |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по