Compartir a través de


Función WSAGetOverlappedResult (winsock2.h)

La función WSAGetOverlappedResult recupera los resultados de una operación superpuesta en el socket especificado.

Sintaxis

BOOL WSAAPI WSAGetOverlappedResult(
  [in]  SOCKET          s,
  [in]  LPWSAOVERLAPPED lpOverlapped,
  [out] LPDWORD         lpcbTransfer,
  [in]  BOOL            fWait,
  [out] LPDWORD         lpdwFlags
);

Parámetros

[in] s

Descriptor que identifica el socket.

Este es el mismo socket que se especificó cuando se inició la operación superpuesta mediante una llamada a cualquiera de las funciones winsock que admiten operaciones superpuestas. Estas funciones incluyen AcceptEx, ConnectEx, DisconnectEx, TransmitFile, TransmitPackets, WSARecv, WSARecvFrom, LPFN_WSARECVMSG (WSARecvMsg),WSASend, WSASendMsg, WSASendMsg, WSASendTo y WSAIoctl.

[in] lpOverlapped

Puntero a una estructura WSAOVERLAPPED que se especificó cuando se inició la operación superpuesta. Este parámetro no debe ser un puntero NULL .

[out] lpcbTransfer

Puntero a una variable de 32 bits que recibe el número de bytes transferidos realmente por una operación de envío o recepción, o por la función WSAIoctl . Este parámetro no debe ser un puntero NULL .

[in] fWait

Marca que especifica si la función debe esperar a que se complete la operación superpuesta pendiente. Si es TRUE, la función no devuelve hasta que se haya completado la operación. Si ES FALSE y la operación sigue pendiente, la función devuelve FALSE y la función WSAGetLastError devuelve WSA_IO_INCOMPLETE. El parámetro fWait solo se puede establecer en TRUE si la operación superpuesta seleccionó la notificación de finalización basada en eventos.

[out] lpdwFlags

Puntero a una variable de 32 bits que recibirá una o varias marcas que complementan el estado de finalización. Si la operación superpuesta se inició a través de WSARecv o WSARecvFrom, este parámetro contendrá el valor de resultados para el parámetro lpFlags . Este parámetro no debe ser un puntero NULL .

Valor devuelto

Si WSAGetOverlappedResult se realiza correctamente, el valor devuelto es TRUE. Esto significa que la operación superpuesta se ha completado correctamente y que se ha actualizado el valor al que apunta lpcbTransfer .

Si WSAGetOverlappedResult devuelve FALSE, esto significa que la operación superpuesta no se ha completado, la operación superpuesta se completó, pero con errores o no se pudo determinar el estado de finalización de la operación superpuesta debido a errores en uno o varios parámetros de WSAGetOverlappedResult. Si se produce un error, el valor al que apunta lpcbTransfer no se actualizará. Use WSAGetLastError para determinar la causa del error (ya sea por la función WSAGetOverlappedResult o por la operación superpuesta asociada).

Código de error Significado
WSANOTINITIALISED
Debe producirse una llamada de WSAStartup correcta antes de usar esta función.
WSAENETDOWN
Error en el subsistema de red.
WSAENOTSOCK
El descriptor no es un socket.
WSA_INVALID_HANDLE
El parámetro hEvent de la estructura WSAOVERLAPPED no contiene un identificador de objeto de evento válido.
WSA_INVALID_PARAMETER
Uno de los parámetros es inaceptable.
WSA_IO_INCOMPLETE
El parámetro fWait es FALSE y la operación de E/S aún no se ha completado.
WSAEFAULT
Uno o varios de los parámetros lpOverlapped, lpcbTransfer o lpdwFlags no están en una parte válida del espacio de direcciones del usuario. Este error se devuelve si el parámetro lpOverlapped, lpcbTransfer o lpdwFlags era un puntero NULL en Windows Server 2003 y versiones anteriores.

Comentarios

La función WSAGetOverlappedResult informa de los resultados de la operación superpuesta especificada en el parámetro lpOverlapped para el socket especificado en el parámetro s . La función WSAGetOverlappedResult se pasa al descriptor de socket y a la estructura WSAOVERLAPPED que se especificó cuando se llamó a la función superpuesta. Se indica una operación pendiente cuando la función que inició la operación devuelve FALSE y la función WSAGetLastError devuelve WSA_IO_PENDING. Cuando está pendiente una operación de E/S como WSARecv , la función que inició la operación restablece el miembro hEvent de la estructura WSAOVERLAPPED al estado no asignado. Después, cuando se haya completado la operación pendiente, el sistema establece el objeto de evento en el estado señalado.

Si el parámetro fWait es TRUE, WSAGetOverlappedResult determina si la operación pendiente se ha completado esperando a que el objeto de evento esté en estado señalado. Un cliente puede establecer el parámetro fWait en TRUE, pero solo si seleccionó la notificación de finalización basada en eventos cuando se solicitó la operación de E/S. Si se seleccionó otra forma de notificación, el uso del parámetro hEvent de la estructura WSAOVERLAPPED es diferente y establecer fWait en TRUE provoca resultados impredecibles.

Si se llama a la función WSAGetOverlappedResult con el parámetro lpOverlapped, lpcbTransfer o lpdwFlags establecido en un puntero NULL en Windows Vista, se producirá una infracción de acceso. Si se llama a la función WSAGetOverlappedResult con el parámetro lpOverlapped, lpcbTransfer o lpdwFlags establecido en un puntero NULL en Windows Server 2003 y versiones anteriores, se devolverá el código de error de WSAEFAULT .

Nota Todas las E/S se cancelan cuando se cierra un subproceso. En el caso de los sockets superpuestos, las operaciones asincrónicas pendientes pueden producir un error si el subproceso se cierra antes de que se completen las operaciones. Consulte ExitThread para obtener más información.
 
Windows Phone 8: esta función es compatible con las aplicaciones de Windows Phone Store en Windows Phone 8 y versiones posteriores.

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 2003 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado winsock2.h
Library Ws2_32.lib
Archivo DLL Ws2_32.dll

Consulte también

WSAAccept

WSAConnect

WSACreateEvent

WSAIoctl

WSARecv

WSARecvFrom

WSASend

WSASendTo

WSAWaitForMultipleEvents

Funciones winsock

Referencia de Winsock