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. |
Temas relacionados