Функция обратного вызова 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 2 конфликтующие коды ошибок определяются для WSAECANCELLED (10103) и WSA_E_CANCELLED (10111). Код ошибки WSAECANCELLED будет удален в будущей версии и останется только WSA_E_CANCELLED. Поставщики пространств имен должны использовать код ошибки WSA_E_CANCELLED для обеспечения совместимости с самым широким спектром приложений. |
|
Больше данных нет.
В Сокетах Windows 2 конфликтующие коды ошибок определены для WSAENOMORE (10102) и WSA_E_NO_MORE (10110). Код ошибки WSAENOMORE будет удален в будущей версии и останется только WSA_E_NO_MORE. Поставщики пространств имен должны использовать код ошибки WSA_E_NO_MORE для обеспечения совместимости с самым широким спектром приложений. |
|
Указанный дескриптор подстановки недопустим. | |
Для выполнения этой операции недостаточно памяти. | |
Буфер |
|
Один или несколько параметров недопустимы или отсутствуют для этого поставщика. | |
Операция не поддерживается. Эта ошибка возвращается, если поставщик пространства имен не реализует эту функцию. | |
Имя было найдено в базе данных, но данные, соответствующие заданным ограничениям, не были найдены. | |
Служба неизвестна. Служба не может находиться в указанном пространстве имен. |
Замечания
dwControlFlagsLUP_FLUSHPREVIOUS и LUP_RES_SERVICE являются исключениями из правила объединенных ограничений (так как они являются флагами поведения вместо флагов ограничений). Если любой флаг используется в NSPLookupServiceNext, они имеют определенный эффект независимо от параметра одних и того же флага в NSPLookupServiceBegin.
Например, если LUP_RETURN_VERSION указан в NSPLookupServiceBegin, поставщик услуг получает записи, включая версию. Если LUP_RETURN_VERSION не указан в NSPLookupServiceNext, возвращенная информация не включает версию, даже если она была доступна. Ошибка не создается.
Например, если LUP_RETURN_BLOB не указан в NSPLookupServiceBegin, но указан в NSPLookupServiceNext, возвращаемые сведения не включают частные данные. Ошибка не создается.
Результаты запроса
В следующей таблице перечислены WSAQUERYSET и описывается, как результаты запроса представлены в структуре WSAQUERYSET. Дополнительные сведения см. в Query-Related структурах данных.Имя члена 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 Профессиональный [только классические приложения] |
минимальный поддерживаемый сервер | Windows 2000 Server [только классические приложения] |
целевая платформа | Виндоус |
заголовка | ws2spi.h |