Función de devolución de llamada LPNSPLOOKUPSERVICENEXT (ws2spi.h)

Se llama a la función NSPLookupServiceNext después de obtener un identificador de una llamada anterior a NSPLookupServiceBegin para recuperar la información de servicio solicitada.

El proveedor pasará una estructura WSAQUERYSET en el búfer lpqsResults . El cliente debe llamar a esta función hasta que devuelva WSA_E_NOMORE, lo que indica que se han devuelto todos los WSAQUERYSET .

Sintaxis

LPNSPLOOKUPSERVICENEXT Lpnsplookupservicenext;

INT Lpnsplookupservicenext(
  [in]      HANDLE hLookup,
  [in]      DWORD dwControlFlags,
  [in, out] LPDWORD lpdwBufferLength,
  [out]     LPWSAQUERYSETW lpqsResults
)
{...}

Parámetros

[in] hLookup

Identificador devuelto de la llamada anterior a WSALookupServiceBegin.

[in] dwControlFlags

Marcas usadas para controlar la siguiente operación. Actualmente, solo LUP_FLUSHPREVIOUS se define como un medio para controlar un conjunto de resultados demasiado grande. Si una aplicación no puede proporcionar un búfer suficientemente grande, al establecer LUP_FLUSHPREVIOUS se indica al proveedor que descarte el último conjunto de resultados, que era demasiado grande y pase al siguiente conjunto para esta llamada.

[in, out] lpdwBufferLength

Tamaño, en bytes, en la entrada, contenido en el búfer al que apunta lpqsResults. En la salida, si se produce un error en la función y el error es WSAEFAULT, contiene el tamaño mínimo, en bytes para pasar para que lpqsResults recupere el registro.

[out] lpqsResults

Puntero a un bloque de memoria que contendrá, en la devolución, un conjunto de resultados en una estructura WSAQUERYSET .

Valor devuelto

La función debe devolver NO_ERROR (cero) si la rutina se realiza correctamente. Debe devolver SOCKET_ERROR (–1) si se produce un error en la rutina y debe establecer el código de error adecuado mediante WSASetLastError.

Código de error Significado
WSA_E_CANCELLED
Se realizó una llamada a NSPLookupServiceEnd mientras esta llamada seguía procesando. La llamada se ha cancelado. Los datos del búfer lpqsResults no están definidos.

En Windows Sockets 2, los códigos de error en conflicto se definen para WSAECANCELLED (10103) y WSA_E_CANCELLED (10111). El código de error WSAECANCELLED se quitará en una versión futura y solo permanecerán WSA_E_CANCELLED. Los proveedores de espacios de nombres deben usar el código de error WSA_E_CANCELLED para mantener la compatibilidad con la gama de aplicaciones más amplia posible.

WSA_E_NO_MORE
No hay más datos disponibles.

En Windows Sockets 2, los códigos de error en conflicto se definen para WSAENOMORE (10102) y WSA_E_NO_MORE (10110). El código de error WSAENOMORE se quitará en una versión futura y solo permanecerán WSA_E_NO_MORE. Los proveedores de espacios de nombres deben usar el código de error WSA_E_NO_MORE para mantener la compatibilidad con la gama de aplicaciones más amplia posible.

WSA_INVALID_HANDLE
El identificador de búsqueda especificado no es válido.
WSA_NOT_ENOUGH_MEMORY
No hay suficiente memoria disponible para realizar esta operación.
WSAEFAULT
El búfer lpqsResults era demasiado pequeño para contener un conjunto WSAQUERYSET .
WSAEINVAL
Uno o varios parámetros no son válidos o faltan para este proveedor.
WSAEOPNOTSUPP
La operación no es compatible. Este error se devuelve si el proveedor de espacios de nombres no implementa esta función.
WSANO_DATA
El nombre se encontró en la base de datos, pero no se encontró ningún dato que coincida con las restricciones especificadas.
WSASERVICE_NOT_FOUND
El servicio es desconocido. El servicio no se encuentra en el espacio de nombres especificado.

Comentarios

Los dwControlFlags especificados en esta función y los especificados en el momento de NSPLookupServiceBegin se controlan como "restricciones" para la combinación. Las restricciones se combinan entre las de NSPLookupServiceBegin y las de NSPLookupServiceNext . Por lo tanto, las marcas de NSPLookupServiceNext nunca pueden aumentar la cantidad de datos devueltos más allá de lo solicitado en NSPLookupServiceBegin, aunque no es un error especificar más o menos marcas. Las marcas especificadas en un NSPLookupServiceNext determinado solo se aplican a esa llamada.

El LUP_FLUSHPREVIOUSdwControlFlags y LUP_RES_SERVICE son excepciones a la regla de restricciones combinadas (porque son marcas de comportamiento en lugar de marcas de "restricción"). Si se usa cualquiera de las marcas en NSPLookupServiceNext, tienen su efecto definido independientemente de la configuración de las mismas marcas en NSPLookupServiceBegin.

Por ejemplo, si LUP_RETURN_VERSION se especifica en NSPLookupServiceBegin, el proveedor de servicios recupera registros, incluida la versión. Si no se especifica LUP_RETURN_VERSION en NSPLookupServiceNext, la información devuelta no incluye la versión, aunque estuviera disponible. No se genera ningún error.

Por ejemplo, si no se especifica LUP_RETURN_BLOB en NSPLookupServiceBegin, pero se especifica en NSPLookupServiceNext, la información devuelta no incluye los datos privados. No se genera ningún error.

Resultados de la consulta

En la tabla siguiente se enumeran WSAQUERYSET y se describe cómo se representan los resultados de la consulta en la estructura WSAQUERYSET . Para obtener más información, vea Estructuras de datos relacionadas con consultas.
Nombre del miembro WSAQUERYSET Interpretación de resultados
**dwSize** Se establecerá en sizeof(WSAQUERYSET). Se usa como mecanismo de control de versiones.
**dwOutputFlags** La marca **RESULT_IS_ALIAS** indica que se trata de un resultado de alias.
**lpszServiceInstanceName** Hace referencia a la cadena que contiene el nombre del servicio.
**lpServiceClassId** GUID correspondiente a la clase de servicio.
**lpVersion** Hace referencia al número de versión de la instancia de servicio determinada.
**lpszComment** Opcional. Cadena de comentario proporcionada por la instancia de servicio.
**dwNameSpace** Espacio de nombres en el que se encontró la instancia de servicio.
**lpNSProviderId** Identifica el proveedor de espacio de nombres específico que proporcionó este resultado de consulta.
**lpszContext** Especifica el punto de contexto de un espacio de nombres jerárquico en el que se encuentra el servicio.
**dwNumberOfProtocols** Sin definir para los resultados.
**lpafpProtocols** Sin definir para los resultados, toda la información de protocolo necesaria se encuentra en las estructuras de CSADDR_INFO .
**lpszQueryString** Cuando dwControlFlags incluye **LUP_RETURN_QUERY_STRING**, este miembro devuelve el resto no analizador de **lpszServiceInstanceName** especificado en la consulta original. Por ejemplo, en un espacio de nombres que identifica los servicios por nombres jerárquicos que especifican un nombre de host y una ruta de acceso de archivo dentro de ese host, la dirección devuelta podría ser la dirección de host y el resto sin análisis podría ser la ruta de acceso del archivo. Si se analiza completamente **lpszServiceInstanceName** y se usa **LUP_RETURN_QUERY_STRING**, este miembro es null o apunta a una cadena de longitud cero.
**dwNumberOfCsAddrs** Indica el número de elementos de la matriz de estructuras de CSADDR_INFO .
**lpcsaBuffer** Puntero a una matriz de estructuras de CSADDR_INFO , con una dirección de transporte completa incluida en cada elemento.
**lpBlob** Opcional. Puntero a una entidad específica del proveedor.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado ws2spi.h

Consulte también

CSADDR_INFO

NSPLookupServiceBegin

NSPLookupServiceEnd

NSP_ROUTINE

WSAQUERYSET

WSASetLastError