PNRP e WSASetService
O PNRP usa a função WSASetService para registrar ou remover nomes de pares.
Registrando um nome
O registro inclui um nome de par e um conjunto de pontos de extremidade em que um serviço pode ser contatado. Um registro é específico para uma nuvem PNRP. Depois que um par é registrado, há um atraso entre o registro e a propagação das informações de registro para outros nós. Durante esse tempo, outros nós podem não ser capazes de resolve um par recém-registrado.
O registro de serviço não é persistente.
- Se um processo de cliente que registra um nome de par sair ou chamar WSACleanup, o nome do par não será registrado.
- Se um nome de par especificado já estiver registrado na mesma nuvem pelo processo atual, ele será substituído por novos valores de registro.
Ao registrar um nome de par, os seguintes valores de parâmetro devem ser indicados:
- O parâmetro essOperation deve ter um valor de RNRSERVICE_REGISTER.
- O parâmetro dwControlFlags deve ser zero (0).
Ao registrar um nome de par, a estrutura LPWSAQUERYSET referenciada pelo parâmetro lpqsRegInfo deve conter os seguintes valores:
-
Dwsize
-
Especifica o tamanho dessa estrutura.
-
Lpszserviceinstancename
-
Especifica um nome de par a ser registrado. Se o nome do par não estiver seguro, a identidade será opcional. Se a identidade for especificada como NULL, o PNRP usará a identidade local do computador por padrão.
-
lpServiceClassID
-
Deve ser SVCID_PNRPNAME.
-
lpVersion
-
Ignorado. Defina como NULL.
-
lpszComment
-
Ignorado. No entanto, a cadeia de caracteres ainda precisa ter menos de 40 caracteres, incluindo o terminador 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 deverá apontar para um nome de nuvem válido.
-
dwNumberOfProtocols
-
Ignorado. Defina como zero (0).
-
lpszQueryString
-
Ignorado. Defina como NULL.
-
dwNumberOfCsAddrs
-
Especifica o número de endereços registrados por um serviço. O número máximo de endereços que podem ser registrados para um único nome é 10.
-
Lpcsabuffer
-
Ponteiro para uma lista de endereços a serem registrados.
-
dwOutputFlags
-
Ignorado. Defina como zero (0).
-
Lpblob
-
Ponteiro para uma estrutura BLOB que aponta para uma estrutura PNRPINFO . Parâmetros específicos na estrutura PNRPINFO devem ser definidos. Para obter mais informações, consulte a seção estrutura PNRPINFO a seguir.
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
-
Especifica a identidade do nome do par que é criado usando PeerIdentityCreate. Se um nome de par não estiver seguro, a identidade será opcional. Se a identidade for especificada como NULL, o PNRP usará a identidade local do computador por padrão.
-
nMaxResolve
-
Ignorado. Defina como zero (0).
-
Dwtimeout
-
Ignorado. Defina como zero (0).
-
dwLifetime
-
Especifica o número de segundos entre as operações de atualização.
-
enResolveCriteria
-
Ignorado. Defina como zero (0).
-
dwFlags
-
Deve ser zero (0) ou PNRPINFO_HINT. O padrão é zero (0). Isso significa que a parte do local do serviço da ID PNRP é criada usando o endereço IP em saHint. Caso contrário, o local do serviço será criado usando o primeiro endereço IP na primeira entrada IPv6 do membro lpcsaBuffer .
-
saHint
-
Especifica o endereço IPv6 para a dica.
-
enNameState
-
Ignorado. Defina como zero (0).
Cancelar o registro de um nome de par
A lista a seguir identifica as informações importantes sobre o cancelamento do registro de um nome de par.
- Somente um aplicativo que registra um nome de par pode cancelá-lo.
- Um nome de par será cancelado automaticamente se WSACleanup for chamado.
- O PNRP sempre remove todo o registro de nome de serviço. Ele não permite a remoção de endereços individuais.
- Ao cancelar o registro de um nome, o parâmetro essOperation deve ter um valor de RNRSERVICE_DELETE.
- O PNRP não dá suporte ao valor RNRSERVICE_DEREGISTER.
- O parâmetro dwControlFlags deve ser zero (0).
Ao cancelar o registro de um nome, a estrutura LPWSAQUERYSET que o parâmetro lpqsRegInfo referencia deve conter os seguintes valores:
-
Dwsize
-
Especifica o tamanho dessa estrutura.
-
Lpszserviceinstancename
-
Especifica um nome de par para cancelar o registro.
-
lpServiceClassID
-
Deve ser SVCID_PNRPNAME.
-
lpVersion
-
Ignorado. Defina como NULL.
-
lpszComment
-
Ignorado. Defina como 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
-
Ignorado. Defina como zero (0).
-
lpszQueryString
-
Ignorado. Defina como NULL.
-
dwNumberOfCsAddrs
-
Ignorado. Defina como NULL.
-
Lpcsabuffer
-
Ignorado. Defina como NULL.
-
dwOutputFlags
-
Ignorado. Defina como zero (0).
-
Lpblob
-
Ponteiro para uma estrutura BLOB que aponta para uma estrutura PNRPINFO . O membro lpszIdentity da estrutura lpBlob identifica o nome da identidade usada para registrar um nome de par. Os membros restantes devem ser definidos com os mesmos valores usados ao registrar um nome.
Tópicos relacionados
-
Wsasetservice