PNRP y WSASetService
PNRP usa la función WSASetService para registrar o quitar nombres del mismo nivel.
Registro de un nombre
El registro incluye un nombre del mismo nivel y un conjunto de puntos de conexión en los que se puede ponerse en contacto con un servicio. Un registro es específico de una nube PNRP. Una vez registrado un elemento del mismo nivel, hay un retraso entre el registro y la propagación de la información de registro a otros nodos. Durante este tiempo, es posible que otros nodos no puedan resolver un mismo nivel recién registrado.
El registro del servicio no es persistente.
- Si un proceso de cliente que registra un nombre del mismo nivel sale o llama a WSACleanup, el nombre del mismo nivel no se registra.
- Si el proceso actual ya ha registrado un nombre del mismo nivel especificado en la misma nube, se reemplaza por nuevos valores de registro.
Al registrar un nombre del mismo nivel, se deben indicar los siguientes valores de parámetro:
- El parámetro essOperation debe tener un valor de RNRSERVICE_REGISTER.
- el parámetro dwControlFlags debe ser cero (0).
Al registrar un nombre del mismo nivel, la estructura LPWSAQUERYSET a la que hace referencia el parámetro lpqsRegInfo debe contener los valores siguientes:
-
dwSize
-
Especifica el tamaño de esta estructura.
-
lpszServiceInstanceName
-
Especifica un nombre del mismo nivel que se va a registrar. Si el nombre del mismo nivel no está seguro, la identidad es opcional. Si la identidad se especifica como NULL, PNRP usa la identidad local del equipo, de forma predeterminada.
-
lpServiceClassID
-
Debe ser SVCID_PNRPNAME.
-
lpVersion
-
ignorado. Establezca en NULL.
-
lpszComment
-
ignorado. Sin embargo, la cadena sigue siendo necesaria para tener menos de 40 caracteres, incluido el terminador NULL .
-
dwNameSpace
-
Debe ser NS_PNRPNAME o NS_ALL.
-
lpNSProviderID
-
Debe ser NS_PROVIDER_PNRPNAME o NULL.
-
lpszContext
-
Debe ser un nombre en la nube, una cadena vacía o NULL. Si este valor es NULL o una cadena vacía, se usa la nube predeterminada, "Global". De lo contrario, debe apuntar a un nombre de nube válido.
-
dwNumberOfProtocols
-
ignorado. Establezca en cero (0).
-
lpszQueryString
-
ignorado. Establezca en NULL.
-
dwNumberOfCsAddrs
-
Especifica el número de direcciones registradas por un servicio. El número máximo de direcciones que se pueden registrar para un único nombre es 10.
-
lpcsaBuffer
-
Puntero a una lista de direcciones que se van a registrar.
-
dwOutputFlags
-
ignorado. Establezca en cero (0).
-
lpBlob
-
Puntero a una estructura BLOB que apunta a una estructura PNRPINFO . Se deben establecer parámetros específicos en la estructura PNRPINFO . Para obtener más información, consulte la siguiente sección sobre la estructura PNRPINFO .
Estructura PNRPINFO
Si se establece el miembro lpBlob de la estructura LPWSAQUERYSET , se deben establecer los siguientes miembros de la estructura PNRPINFO :
-
dwSize
-
Especifica el tamaño de esta estructura.
-
lpwszIdentity
-
Especifica la identidad del nombre del mismo nivel que se crea mediante PeerIdentityCreate. Si un nombre del mismo nivel no está seguro, la identidad es opcional. Si la identidad se especifica como NULL, PNRP usa la identidad local del equipo, de forma predeterminada.
-
nMaxResolve
-
ignorado. Establezca en cero (0).
-
dwTimeout
-
ignorado. Establezca en cero (0).
-
dwLifetime
-
Especifica el número de segundos entre las operaciones de actualización.
-
enResolveCriteria
-
ignorado. Establezca en cero (0).
-
dwFlags
-
Debe ser cero (0) o PNRPINFO_HINT. El valor predeterminado es cero (0). Esto significa que la parte de ubicación del servicio del id. de PNRP se crea mediante la dirección IP en saHint. De lo contrario, la ubicación del servicio se crea mediante la primera dirección IP de la primera entrada IPv6 del miembro lpcsaBuffer .
-
saHint
-
Especifica la dirección IPv6 de la sugerencia.
-
enNameState
-
ignorado. Establezca en cero (0).
Anulación del registro de un nombre del mismo nivel
En la lista siguiente se identifica la información importante sobre cómo anular el registro de un nombre del mismo nivel.
- Solo una aplicación que registra un nombre del mismo nivel puede anular su registro.
- Se anula el registro de un nombre del mismo nivel automáticamente si se llama a WSACleanup .
- PNRP siempre quita todo el registro del nombre del servicio. No permite la eliminación de direcciones individuales.
- Al anular el registro de un nombre, el parámetro essOperation debe tener un valor de RNRSERVICE_DELETE.
- PNRP no admite el valor RNRSERVICE_DEREGISTER.
- El parámetro dwControlFlags debe ser cero (0).
Al anular el registro de un nombre, la estructura LPWSAQUERYSET a la que hace referencia el parámetro lpqsRegInfo debe contener los valores siguientes:
-
dwSize
-
Especifica el tamaño de esta estructura.
-
lpszServiceInstanceName
-
Especifica un nombre del mismo nivel que se va a anular el registro.
-
lpServiceClassID
-
Debe ser SVCID_PNRPNAME.
-
lpVersion
-
ignorado. Establezca en NULL.
-
lpszComment
-
ignorado. Establezca en NULL.
-
dwNameSpace
-
Debe ser NS_PNRPNAME o NS_ALL.
-
lpNSProviderID
-
Debe ser NS_PROVIDER_PNRPNAME o NULL.
-
lpszContext
-
Debe ser un nombre en la nube, una cadena vacía o NULL. Si este valor es NULL o una cadena vacía, se usa la nube predeterminada" "Global". De lo contrario, debe apuntar a un nombre de nube válido.
-
dwNumberOfProtocols
-
ignorado. Establezca en cero (0).
-
lpszQueryString
-
ignorado. Establezca en NULL.
-
dwNumberOfCsAddrs
-
ignorado. Establezca en NULL.
-
lpcsaBuffer
-
ignorado. Establezca en NULL.
-
dwOutputFlags
-
ignorado. Establezca en cero (0).
-
lpBlob
-
Puntero a una estructura BLOB que apunta a una estructura PNRPINFO . El miembro lpszIdentity de la estructura lpBlob identifica el nombre de la identidad que se usa para registrar un nombre del mismo nivel. Los miembros restantes deben establecerse en los mismos valores que se usan al registrar un nombre.
Temas relacionados