Compartilhar via


PNRP e WSALookupServiceBegin

O PNRP usa a função WSALookupServiceBegin 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, WSALookupServiceNext e 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 de 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 LPWSAQUERYSET que o parâmetro lpqsRestrictions referencia deve conter os seguintes valores:

Dwsize

Especifica o tamanho dessa estrutura.

Lpszserviceinstancename

Especifica um nome de par para resolve.

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 BLOB ou NULL. Se for NULL, os valores padrão serão usados. Se estiver definido, lpBlob apontará para uma estrutura PNRPINFO e parâmetros específicos na estrutura PNRPINFO deverão ser definidos. Para obter mais informações, consulte as descrições a seguir para a estrutura PNRPINFO.

Estrutura PNRPINFO

Se o membro lpBlob da estrutura LPWSAQUERYSET estiver definido, os seguintes membros da estrutura PNRPINFO deverão ser definidos:

Dwsize

Especifica o tamanho dessa estrutura.

lpwszIdentity

Reservado, deve ser NULL.

nMaxResolve

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

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 LPWSAQUERYSET que o parâmetro lpqsRestrictions referencia deve 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 estrutura BLOB que aponta para uma estrutura PNRPCLOUDINFO . Se lpBlob for NULL, todas as nuvens serão enumeradas.

Estrutura PNRPCLOUDINFO

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

Dwsize

Especifica o tamanho dessa estrutura.

Nuvem

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_SCOPE ou 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