Compartilhar via


PNRP e WSALookupServiceBegin

O PNRP usa a funçãoWSALookupServiceBegin para iniciar o processo que permite que um aplicativo faça o seguinte:

Os clientes que tentam executar uma das funções usam as funções WSALookupServiceBegin, WSALookupServiceNexte funções de WSALookupServiceEnd.

Usando WSANSPIoctl, o serviço de pesquisa pode ser usado de forma assíncrona. Para obter informações sobre como usar as funções do serviço de pesquisa de forma assíncrona, consulte PNRP e WSANSPIoctl.

O processo para trabalhar com nomes de pares é diferente de trabalhar com nuvens. Cada processo é descrito separadamente neste tópico.

Resolvendo um nome

Um aplicativo usa WSALookupServiceBegin para obter o endereço IP, a porta e o protocolo para um serviço par registrado em outro computador. A função WSALookupServiceBegin é usada para iniciar o processo de resolução de nomes e configurar os parâmetros e restrições. Um identificador é retornado e deve ser usado ao chamar WSALookupServiceNext e WSANSPIoctl.

lpqsRestrictions

Ao resolver um nome de par, a estrutura de LPWSAQUERYSET que as referências de parâmetro lpqsRestrictions devem conter os seguintes valores:

dwSize

Especifica o tamanho dessa estrutura.

lpszServiceInstanceName

Especifica um nome de par a ser resolvido.

lpServiceClassID

Deve ser SVCID_PNRPNAME.

lpVersion

Reservado, deve ser NULL.

lpszComment

Reservado, deve ser NULL.

dwNameSpace

Deve ser NS_PNRPNAME ou NS_ALL.

lpNSProviderID

Deve ser NS_PROVIDER_PNRPNAME ou NULL.

lpszContext

Deve ser um nome de nuvem, uma cadeia de caracteres vazia ou NULL. Se esse valor for NULL ou uma cadeia de caracteres vazia, a nuvem padrão, "Global_" será usada. Caso contrário, ele deve apontar para um nome de nuvem válido.

dwNumberOfProtocols

Reservado, deve ser zero (0).

lpszQueryString

Reservado, deve ser NULL.

dwNumberOfCsAddrs

Reservado, deve ser zero (0).

lpcsaBuffer

Reservado, deve ser NULL.

dwOutputFlags

Reservado, deve ser zero (0).

lpBlob

Deve ser um ponteiro para uma estrutura dede BLOBou NULL. Se for NULL, os valores padrão serão usados. Se estiver definido, lpBlob aponta para uma estrutura dePNRPINFOe parâmetros específicos na estrutura de PNRPINFO devem ser definidos. Para obter mais informações, consulte as descrições a seguir para a estrutura PNRPINFO.

Estrutura PNRPINFO

Se o lpBlob membro da estrutura deLPWSAQUERYSETestiver definida, os seguintes membros da estrutura dePNRPINFOdeverão ser definidos:

dwSize

Especifica o tamanho dessa estrutura.

lpwszIdentity

Reservado, deve ser NULL.

nMaxResolve

Especifica o número de resoluções solicitado.

dwTimeout

Especifica o período de tempo limite solicitado para aguardar respostas. O padrão é 30 segundos. O máximo é de 600 segundos (10 minutos).

dwLifetime

Reservado, deve ser zero (0).

enResolveCriteria

Deve ser um dos valores permitidos. O padrão é PNRP_RESOLVE_CRITERIA_NON_CURRENT_PROCESS_PEER_NAME. Os valores válidos são especificados por PNRP_RESOLVE_CRITERIA.

dwFlags

Deve ser zero (0) ou PNRPINFO_HINT. O padrão é zero (0).

saHint

Especifica o endereço IP da dica. A dica é usada ao tentar localizar o nome do par mais próximo. O formato da dica é um endereço IPv6. Se saHint não for especificado ao localizar o nome do par mais próximo, um endereço IPv6 do computador local será usado. Esse membro será ignorado se dwFlags não estiver definido.

enNameState

Reservado, deve ser zero (0).

dwControlFlags

Os seguintes sinalizadores LUP_RETURN_* têm suporte do PNRP:

Valor Descrição
LUP_RETURN_NAME Retorna um nome e um contexto.
LUP_RETURN_COMMENT Retorna um comentário associado a um nome.
LUP_RETURN_ADDR Retorna um endereço associado a um nome.

 

Enumerando nuvens de rede

lpqsRestrictions

Ao enumerar nuvens, a estrutura deLPWSAQUERYSETque as referências de parâmetro lpqsRestrictions devem conter os seguintes valores:

dwSize

Especifica o tamanho dessa estrutura.

lpszServiceInstanceName

Deve ser NULL.

lpServiceClassID

Deve ser SVCID_PNRPCLOUD.

lpVersion

Reservado, deve ser NULL.

lpszComment

Reservado, deve ser NULL.

dwNameSpace

Deve ser NS_PNRPCLOUD.

lpNSProviderID

Deve ser NS_PROVIDER_PNRPCLOUD ou NULL.

lpszContext

Reservado, deve ser NULL.

dwNumberOfProtocols

Reservado, deve ser zero (0).

lpszQueryString

Reservado, deve ser NULL.

dwNumberOfCsAddrs

Reservado, deve ser zero (0).

lpcsaBuffer

Reservado, deve ser NULL.

dwOutputFlags

Reservado, deve ser zero (0).

lpBlob

Ponteiro para uma estruturade BLOBque aponta para uma estrutura dePNRPCLOUDINFO. Se lpBlob for NULL, todas as nuvens serão enumeradas.

Estrutura PNRPCLOUDINFO

Ao enumerar nuvens, os seguintes membros da estrutura dePNRPCLOUDINFOdevem ser definidos:

dwSize

Especifica o tamanho dessa estrutura.

cloud

Aponta para uma estrutura que especifica os critérios que você pode usar para filtrar os resultados da pesquisa. O membro Cloud.Scope pode ser PNRP_SCOPE_ANY, PNRP_GLOBAL_SCOPE, PNRP_SITE_LOCAL_SCOPEou PNRP_LINK_LOCAL_SCOPE. Se PNRP_SCOPE_ANY for especificado, todas as nuvens serão retornadas. Caso contrário, somente as nuvens que correspondem ao cloud.scope serão retornadas.

enCloudState

Reservado, deve ser zero (0).

dwControlFlags

Os seguintes sinalizadores LUP_RETURN_* têm suporte do PNRP:

Valor Descrição
LUP_RETURN_NAME Retorna um nome e um contexto.
LUP_RETURN_BLOB Retorna o blob associado a essa nuvem.

 

PNRP e BLOB

PNRP e WSALookupServiceEnd

PNRP e WSALookupServiceNext

PNRP e WSANSPIoctl

PNRP e WSAQUERYSET

PNRPCLOUDINFO

PNRPINFO

códigos de erro NSP PNRP