Compartir a través de


PNRP y WSALookupServiceBegin

PNRP usa la función WSALookupServiceBegin para iniciar el proceso que permite a una aplicación hacer lo siguiente:

Los clientes que intentan realizar una de las funciones usan las funciones WSALookupServiceBegin, WSALookupServiceNext y WSALookupServiceEnd .

Mediante WSANSPIoctl, el servicio de búsqueda se puede usar de forma asincrónica. Para obtener información sobre cómo usar las funciones del servicio de búsqueda de forma asincrónica, consulte PNRP y WSANSPIoctl.

El proceso para trabajar con nombres del mismo nivel es diferente del trabajo con nubes. Cada proceso se describe por separado en este tema.

Resolución de un nombre

Una aplicación usa WSALookupServiceBegin para obtener la dirección IP, el puerto y el protocolo de un servicio del mismo nivel registrado en otro equipo. La función WSALookupServiceBegin se usa para iniciar el proceso de resolución de nombres y configurar los parámetros y restricciones. Se devuelve un identificador y se debe usar al llamar a WSALookupServiceNext y WSANSPIoctl.

lpqsRestrictions

Al resolver un nombre del mismo nivel, la estructura LPWSAQUERYSET a la que hace referencia el parámetro lpqsRestrictions debe contener los valores siguientes:

dwSize

Especifica el tamaño de esta estructura.

lpszServiceInstanceName

Especifica un nombre del mismo nivel que se va a resolver.

lpServiceClassID

Debe ser SVCID_PNRPNAME.

lpVersion

Reservado, debe ser NULL.

lpszComment

Reservado, debe ser 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

Reservado, debe ser cero (0).

lpszQueryString

Reservado, debe ser NULL.

dwNumberOfCsAddrs

Reservado, debe ser cero (0).

lpcsaBuffer

Reservado, debe ser NULL.

dwOutputFlags

Reservado, debe ser cero (0).

lpBlob

Debe ser un puntero a una estructura BLOB o NULL. Si es NULL, se usan valores predeterminados. Si se establece, lpBlob apunta a una estructura PNRPINFO y se deben establecer parámetros específicos en la estructura PNRPINFO . Para obtener más información, vea las siguientes descripciones de 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

Reservado, debe ser NULL.

nMaxResolve

Especifica el número solicitado de resoluciones.

dwTimeout

Especifica el período de tiempo de espera solicitado para esperar las respuestas. El valor predeterminado es 30 segundos. El máximo es de 600 segundos (10 minutos).

dwLifetime

Reservado, debe ser cero (0).

enResolveCriteria

Debe ser uno de los valores permitidos. El valor predeterminado es PNRP_RESOLVE_CRITERIA_NON_CURRENT_PROCESS_PEER_NAME. Los valores válidos se especifican mediante PNRP_RESOLVE_CRITERIA.

dwFlags

Debe ser cero (0) o PNRPINFO_HINT. El valor predeterminado es cero (0).

saHint

Especifica la dirección IP de la sugerencia. La sugerencia se usa al intentar buscar el nombre del mismo nivel más cercano. El formato de la sugerencia es una dirección IPv6. Si no se especifica saHint al buscar el nombre del mismo nivel más cercano, se usa en su lugar una dirección IPv6 del equipo local. Este miembro se omite si no se ha establecido dwFlags .

enNameState

Reservado, debe ser cero (0).

dwControlFlags

PNRP admite las siguientes marcas LUP_RETURN_*:

Valor Descripción
LUP_RETURN_NAME Devuelve un nombre y un contexto.
LUP_RETURN_COMMENT Devuelve un comentario asociado a un nombre.
LUP_RETURN_ADDR Devuelve una dirección asociada a un nombre.

 

Enumeración de nubes de red

lpqsRestrictions

Al enumerar nubes, la estructura LPWSAQUERYSET a la que hace referencia el parámetro lpqsRestrictions debe contener los valores siguientes:

dwSize

Especifica el tamaño de esta estructura.

lpszServiceInstanceName

Debe ser NULL.

lpServiceClassID

Debe ser SVCID_PNRPCLOUD.

lpVersion

Reservado, debe ser NULL.

lpszComment

Reservado, debe ser NULL.

dwNameSpace

Debe ser NS_PNRPCLOUD.

lpNSProviderID

Debe ser NS_PROVIDER_PNRPCLOUD o NULL.

lpszContext

Reservado, debe ser NULL.

dwNumberOfProtocols

Reservado, debe ser cero (0).

lpszQueryString

Reservado, debe ser NULL.

dwNumberOfCsAddrs

Reservado, debe ser cero (0).

lpcsaBuffer

Reservado, debe ser NULL.

dwOutputFlags

Reservado, debe ser cero (0).

lpBlob

Puntero a una estructura BLOB que apunta a una estructura PNRPCLOUDINFO . Si lpBlob es NULL, se enumeran todas las nubes.

Estructura PNRPCLOUDINFO

Al enumerar nubes, se deben establecer los siguientes miembros de la estructura PNRPCLOUDINFO :

dwSize

Especifica el tamaño de esta estructura.

Nube

Apunta a una estructura que especifica los criterios que puede usar para filtrar los resultados de la búsqueda. El miembro Cloud.Scope puede ser PNRP_SCOPE_ANY, PNRP_GLOBAL_SCOPE, PNRP_SITE_LOCAL_SCOPE o PNRP_LINK_LOCAL_SCOPE. Si se especifica PNRP_SCOPE_ANY , se devuelven todas las nubes. De lo contrario, solo se devuelven las nubes que coinciden con Cloud.Scope .

enCloudState

Reservado, debe ser cero (0).

dwControlFlags

PNRP admite las siguientes marcas LUP_RETURN_*:

Valor Descripción
LUP_RETURN_NAME Devuelve un nombre y un contexto.
LUP_RETURN_BLOB Devuelve el BLOB asociado a esta nube.

 

PNRP y BLOB

PNRP y WSALookupServiceEnd

PNRP y WSALookupServiceNext

PNRP y WSANSPIoctl

PNRP y WSAQUERYSET

PNRPCLOUDINFO

PNRPINFO

Códigos de error de NSP de PNRP