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