Compartilhar via


Função de retorno de chamada LPNSPLOOKUPSERVICENEXT (ws2spi.h)

A função NSPLookupServiceNext é chamada depois de obter um identificador de uma chamada anterior para NSPLookupServiceBegin para recuperar as informações de serviço solicitadas.

O provedor passará uma estrutura de WSAQUERYSET no buffer lpqsResults. O cliente deve chamar essa função até retornar WSA_E_NOMORE, indicando que todos os WSAQUERYSET foram retornados.

Sintaxe

LPNSPLOOKUPSERVICENEXT Lpnsplookupservicenext;

INT Lpnsplookupservicenext(
  [in]      HANDLE hLookup,
  [in]      DWORD dwControlFlags,
  [in, out] LPDWORD lpdwBufferLength,
  [out]     LPWSAQUERYSETW lpqsResults
)
{...}

Parâmetros

[in] hLookup

Um identificador retornado da chamada anterior para WSALookupServiceBegin .

[in] dwControlFlags

Os sinalizadores usados para controlar a próxima operação. Atualmente, apenas LUP_FLUSHPREVIOUS é definido como um meio de lidar com um conjunto de resultados muito grande. Se um aplicativo não puder fornecer um buffer grande o suficiente, a configuração LUP_FLUSHPREVIOUS instrui o provedor a descartar o último conjunto de resultados, que era muito grande, e mover para o próximo conjunto para essa chamada.

[in, out] lpdwBufferLength

O tamanho, em bytes, na entrada, contido no buffer apontado por lpqsResults. Na saída, se a função falhar e o erro for WSAEFAULT, ele conterá o tamanho mínimo, em bytes a serem passados para o lpqsResults recuperar o registro.

[out] lpqsResults

Um ponteiro para um bloco de memória que conterá, no retorno, um conjunto de resultados em uma estrutura de WSAQUERYSET .

Valor de retorno

A função deverá retornar NO_ERROR (zero) se a rotina for bem-sucedida. Ele deverá retornar SOCKET_ERROR (–1) se a rotina falhar e precisar definir o código de erro apropriado usando WSASetLastError.

Código de erro Significado
WSA_E_CANCELLED
Uma chamada para NSPLookupServiceEnd foi feita enquanto essa chamada ainda estava sendo processada. A chamada foi cancelada. Os dados no buffer lpqsResults são indefinidos.

No Windows Sockets 2, códigos de erro conflitantes são definidos para WSAECANCELLED (10103) e WSA_E_CANCELLED (10111). O código de erro WSAECANCELLED será removido em uma versão futura e somente WSA_E_CANCELLED permanecerá. Os provedores de namespace devem usar o código de erro WSA_E_CANCELLED para manter a compatibilidade com o intervalo de aplicativos mais amplo possível.

WSA_E_NO_MORE
Não há mais dados disponíveis.

No Windows Sockets 2, códigos de erro conflitantes são definidos para WSAENOMORE (10102) e WSA_E_NO_MORE (10110). O código de erro WSAENOMORE será removido em uma versão futura e somente WSA_E_NO_MORE permanecerá. Os provedores de namespace devem usar o código de erro WSA_E_NO_MORE para manter a compatibilidade com o maior intervalo possível de aplicativos.

WSA_INVALID_HANDLE
O identificador de pesquisa especificado é inválido.
WSA_NOT_ENOUGH_MEMORY
Não há memória suficiente disponível para executar essa operação.
WSAEFAULT
O buffer lpqsResults era muito pequeno para conter um conjunto de WSAQUERYSET .
WSAEINVAL
Um ou mais parâmetros são inválidos ou ausentes para esse provedor.
WSAEOPNOTSUPP
Não há suporte para a operação. Esse erro será retornado se o provedor de namespace não implementar essa função.
WSANO_DATA
O nome foi encontrado no banco de dados, mas nenhum dado, que corresponde às restrições determinadas, foi localizado.
WSASERVICE_NOT_FOUND
O serviço é desconhecido. O serviço não pode ser encontrado no namespace especificado.

Observações

Os dwControlFlags especificados nesta função e os especificados no momento do NSPLookupServiceBegin são tratados como "restrições" para fins de combinação. As restrições são combinadas entre as de NSPLookupServiceBegin e as do NSPLookupServiceNext. Portanto, os sinalizadores em NSPLookupServiceNext nunca podem aumentar a quantidade de dados retornados além do que foi solicitado em NSPLookupServiceBegin, embora não seja um erro especificar mais ou menos sinalizadores. Os sinalizadores especificados em um determinado NSPLookupServiceNext se aplicam somente a essa chamada.

Os dwControlFlagsLUP_FLUSHPREVIOUS e LUP_RES_SERVICE são exceções à regra de restrições combinadas (porque são sinalizadores de comportamento em vez de sinalizadores de "restrição"). Se um dos sinalizadores for usado em NSPLookupServiceNext, eles terão seu efeito definido independentemente da configuração dos mesmos sinalizadores em NSPLookupServiceBegin.

Por exemplo, se LUP_RETURN_VERSION for especificado em NSPLookupServiceBegin, o provedor de serviços recuperará registros, incluindo a versão. Se LUP_RETURN_VERSION não for especificado em NSPLookupServiceNext, as informações retornadas não incluirão a versão, mesmo que ela estivesse disponível. Nenhum erro é gerado.

Além disso, por exemplo, se LUP_RETURN_BLOB não for especificado em NSPLookupServiceBegin, mas for especificado em NSPLookupServiceNext, as informações retornadas não incluirão os dados privados. Nenhum erro é gerado.

Resultados da consulta

A tabela a seguir lista WSAQUERYSET e descreve como os resultados da consulta são representados na estrutura de WSAQUERYSET . Para obter mais informações, consulteestruturas de dados do Query-Related.
Nome do membro WSAQUERYSET Interpretação de resultado
**dwSize** Será definido como sizeof(WSAQUERYSET). Isso é usado como um mecanismo de controle de versão.
**dwOutputFlags** O sinalizador **RESULT_IS_ALIAS** indica que esse é um resultado de alias.
**lpszServiceInstanceName** Faz referência à cadeia de caracteres que contém o nome do serviço.
**lpServiceClassId** GUID correspondente à classe de serviço.
**lpVersion** Faz referência ao número de versão da instância de serviço específica.
**lpszComment** Opcional. Cadeia de caracteres de comentário fornecida pela instância de serviço.
**dwNameSpace** Namespace no qual a instância de serviço foi encontrada.
**lpNSProviderId** Identifica o provedor de namespace específico que forneceu esse resultado de consulta.
**lpszContext** Especifica o ponto de contexto em um namespace hierárquico no qual o serviço está localizado.
**dwNumberOfProtocols** Indefinido para resultados.
**lpafpProtocols** Indefinido para resultados, todas as informações de protocolo necessárias estão nas estruturas de CSADDR_INFO.
**lpszQueryString** Quando dwControlFlags inclui **LUP_RETURN_QUERY_STRING**, esse membro retorna o restante não preparado do **lpszServiceInstanceName** especificado na consulta original. Por exemplo, em um namespace que identifica serviços por nomes hierárquicos que especificam um nome de host e um caminho de arquivo dentro desse host, o endereço retornado pode ser o endereço do host e o restante não preparado pode ser o caminho do arquivo. Se o **lpszServiceInstanceName** for totalmente analisado e **LUP_RETURN_QUERY_STRING** for usado, esse membro será nulo ou apontará para uma cadeia de caracteres de comprimento zero.
**dwNumberOfCsAddrs** Indica o número de elementos na matriz de estruturas CSADDR_INFO.
**lpcsaBuffer** Um ponteiro para uma matriz de estruturas de CSADDR_INFO, com um endereço de transporte completo contido em cada elemento.
**lpBlob** Opcional. Um ponteiro para uma entidade específica do provedor.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows 2000 Professional [somente aplicativos da área de trabalho]
servidor com suporte mínimo Windows 2000 Server [somente aplicativos da área de trabalho]
da Plataforma de Destino Windows
cabeçalho ws2spi.h

Consulte também

CSADDR_INFO

NSPLookupServiceBegin

NSPLookupServiceEnd

NSP_ROUTINE

WSAQUERYSET

WSASetLastError