Función WSAPoll (winsock2.h)
La función WSAPoll determina el estado de uno o varios sockets.
Sintaxis
int WSAAPI WSAPoll(
[in, out] LPWSAPOLLFD fdArray,
[in] ULONG fds,
[in] INT timeout
);
Parámetros
[in, out] fdArray
Matriz de una o varias estructuras POLLFD que especifican el conjunto de sockets para los que se solicita el estado. La matriz debe contener al menos una estructura con un socket válido. Tras la devolución, este parámetro recibe los sockets actualizados con el miembro de marcas de estado revents establecido en cada uno que coincida con los criterios de consulta de estado.
[in] fds
Número de estructuras WSAPOLLFD en fdarray. No es necesariamente el número de sockets para los que se solicita el estado.
[in] timeout
Valor que especifica el comportamiento de espera, en función de los valores siguientes.
Valor | Significado |
---|---|
Mayor que cero | El tiempo, en milisegundos, que se esperará. |
Cero | Vuelva inmediatamente. |
Menor que cero | Espere indefinidamente. |
Valor devuelto
Devuelve uno de los valores siguientes.
Valor devuelto | Descripción |
---|---|
Cero | No hay sockets en el estado consultado antes de que el temporizador haya expirado. |
Mayor que cero | El número de elementos de fdarray para los que un miembro revents de la estructura POLLFD es distinto de cero. |
SOCKET_ERROR | Se produjo un error. Llame a la función WSAGetLastError para recuperar el código de error extendido. |
Código de error extendido | Significado |
---|---|
Error en el subsistema de red. | |
Se produjo una excepción al leer los parámetros de entrada del usuario. | |
Se pasó un parámetro no válido. Este error se devuelve si las estructuras WSAPOLLFD apuntadas por el parámetro fdarray al solicitar el estado del socket. Este error también se devuelve si ninguno de los sockets especificados en el miembro fd de cualquiera de las estructuras WSAPOLLFD a las que apunta el parámetro fdarray eran válidos. | |
La función no pudo asignar memoria suficiente. |
Comentarios
La función WSAPoll se define en Windows Vista y versiones posteriores.
Estructuras WSAPOLLFD . Una aplicación establece las marcas adecuadas en el miembro de eventos de la estructura WSAPOLLFD para especificar el tipo de estado solicitado para cada socket correspondiente. La función WSAPoll devuelve el estado de un socket en el miembro revents de la estructura WSAPOLLFD .
Para cada socket, un llamador puede solicitar información sobre el estado de lectura o escritura. Las condiciones de error siempre se devuelven, por lo que no es necesario solicitar información sobre ellas.
La estructura WSAPOLLFD apuntada por el parámetro fdarray . Todos los sockets que no cumplan estos criterios y que no tengan ninguna condición de error tendrán el miembro de revents correspondiente establecido en 0.
Una combinación de las marcas siguientes se puede establecer en la estructura WSAPOLLFD de un socket determinado al solicitar el estado de ese socket:
Marca | Descripción |
---|---|
POLLPRI | Los datos de prioridad se pueden leer sin bloqueo. Este indicador no es compatible con el proveedor de Microsoft Winsock. |
POLLRDBAND | Los datos de banda de prioridad (fuera de banda) se pueden leer sin bloquear. |
POLLRDNORM | Los datos normales se pueden leer sin bloqueo. |
POLLWRNORM | Los datos normales se pueden escribir sin bloqueo. |
La marca POLLIN se define como la combinación de los valores de marca POLLRDNORM y POLLRDBAND . La marca POLLOUT se define como la misma que el valor de la marca POLLWRNORM .
La estructura WSAPOLLFD solo debe contener una combinación de las marcas anteriores compatibles con el proveedor Winsock. Los demás valores se consideran errores y WSAPoll devolverá SOCKET_ERROR. Una llamada posterior a la función WSAGetLastError recuperará el código de error extendido de WSAEINVAL. Si la marca POLLPRI está establecida en un socket para el proveedor De Microsoft Winsock, se producirá un error en la función WSAPoll .
Cuando las estructuras WSAPOLLFD apuntadas por el parámetro fdarray para indicar el estado del socket:
Marca | Descripción |
---|---|
POLLERR | Se ha producido un error. |
POLLHUP | Una conexión orientada a secuencias se desconecta o anula. |
POLLNVAL | Se usó un socket no válido. |
POLLPRI | Los datos de prioridad se pueden leer sin bloqueo. El proveedor de Microsoft Winsock no devuelve esta marca. |
POLLRDBAND | Los datos de banda de prioridad (fuera de banda) se pueden leer sin bloquear. |
POLLRDNORM | Los datos normales se pueden leer sin bloqueo. |
POLLWRNORM | Los datos normales se pueden escribir sin bloqueo. |
Con respecto a los sockets TCP y UDP:
- Estructura WSAPOLLFD como datos normales como POLLRDNORM.
- Estructura WSAPOLLFD , se garantiza que una operación de recv posterior se complete sin bloqueo.
- Estructura WSAPOLLFD de POLLWRNORM.
- Estructura WSAPOLLFD por POLLRDNORM. Se garantiza que una llamada posterior a aceptar se complete sin bloqueo.
- Estructura WSAPOLLFD de POLLRDBAND.
- Estructura WSAPOLLFD cuando un par remoto cierra una operación de envío (se recibió un TCP FIN). Una solicitud de función recv posterior devolverá cero bytes.
- Estructura WSAPOLLFD cuando el par remoto inicia una desconexión correcta.
- Estructura WSAPOLLFD devuelta cuando un par remoto se desconecta repentinamente.
- Estructura WSAPOLLFD cuando se cierra el socket local.
El número de elementos (no sockets) en fdarray se indica mediante nfds. Los miembros de fdarray que tienen su miembro fd establecido en un valor negativo se omiten y sus reventes se establecerán en POLLNVAL tras la devolución. Este comportamiento es útil para una aplicación que mantiene una asignación de fdarray fija y no compactará la matriz para quitar entradas no utilizada o reasignar la memoria. No es necesario borrar reventes para ningún elemento antes de llamar a WSAPoll.
El argumento timeout especifica cuánto tiempo debe esperar la función antes de devolverla. Un valor positivo contiene el número de milisegundos que se deben esperar antes de devolver. Un valor cero obliga a WSAPoll a devolver inmediatamente y un valor negativo indica que WSAPoll debe esperar indefinidamente.
Windows 8.1 y Windows Server 2012 R2: esta función es compatible con las aplicaciones de la Tienda Windows en Windows 8.1, Windows Server 2012 R2 y versiones posteriores.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 8.1, Windows Vista [aplicaciones de escritorio | Aplicaciones para UWP] |
Servidor mínimo compatible | Windows Server 2008 [aplicaciones de escritorio | aplicaciones para UWP] |
Plataforma de destino | Windows |
Encabezado | winsock2.h (incluya Winsock2.h) |
Library | Ws2_32.lib |
Archivo DLL | Ws2_32.dll |