Compartir a través de


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.

PNRP y BLOB

PNRP y WSAQUERYSET

PNRPINFO

Códigos de error de NSP de PNRP

WSACleanup

WSASetService