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. |
Tópicos relacionados