Función GetOverlappedResult (ioapiset.h)

Recupera los resultados de una operación superpuesta en el archivo especificado, la canalización con nombre o el dispositivo de comunicaciones. Para especificar un intervalo de tiempo de espera o una espera en un subproceso de alerta, use GetOverlappedResultEx.

Sintaxis

BOOL GetOverlappedResult(
  [in]  HANDLE       hFile,
  [in]  LPOVERLAPPED lpOverlapped,
  [out] LPDWORD      lpNumberOfBytesTransferred,
  [in]  BOOL         bWait
);

Parámetros

[in] hFile

Identificador del archivo, canalización con nombre o dispositivo de comunicaciones. Este es el mismo identificador que se especificó cuando se inició la operación superpuesta mediante una llamada a cualquiera de las funciones siguientes:

[in] lpOverlapped

Puntero a una estructura SUPERPUESTA que se especificó cuando se inició la operación superpuesta.

[out] lpNumberOfBytesTransferred

Puntero a una variable que recibe el número de bytes transferidos realmente por una operación de lectura o escritura. Para una operación TransactNamedPipe , este es el número de bytes leídos desde la canalización. Para una operación DeviceIoControl , este es el número de bytes de datos de salida devueltos por el controlador de dispositivo. Para una operación ConnectNamedPipe o WaitCommEvent , este valor no está definido.

[in] bWait

Si este parámetro es TRUE y el miembro Interno de la estructura lpOverlapped es STATUS_PENDING, la función no devuelve hasta que se haya completado la operación. Si este parámetro es FALSE y la operación sigue pendiente, la función devuelve FALSE y la función GetLastError devuelve ERROR_IO_INCOMPLETE.

Valor devuelto

Si la función se realiza correctamente, el valor devuelto es distinto de cero.

Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.

Comentarios

Los resultados notificados por la función GetOverlappedResult son los de la última operación superpuesta del identificador especificado a la que se proporcionó la estructura SUPERPUESTA especificada y para la que estaban pendientes los resultados de la operación. Se indica una operación pendiente cuando la función que inició la operación devuelve FALSE y la función GetLastError devuelve ERROR_IO_PENDING. Cuando hay una operación de E/S pendiente, la función que inició la operación restablece el miembro hEvent de la estructura SUPERPUESTA 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 bWait es TRUE, GetOverlappedResult determina si la operación pendiente se ha completado esperando a que el objeto de evento esté en estado señalado.

Si el miembro hEvent de la estructura SUPERPUESTA es NULL, el sistema usa el estado del controlador hFile para indicar cuándo se ha completado la operación. No se recomienda el uso de identificadores de archivo, canalización con nombre o dispositivos de comunicaciones para este propósito. Es más seguro usar un objeto de evento debido a la confusión que puede producirse cuando se realizan varias operaciones superpuestas simultáneas en el mismo archivo, canalización con nombre o dispositivo de comunicaciones. En esta situación, no hay ninguna manera de saber qué operación provocó que se señalizara el estado del objeto.

Ejemplos

Para obtener un ejemplo que usa GetOverlappedResult, consulte Testing for the End of a File (Pruebas para el final de un archivo).

Requisitos

   
Cliente mínimo compatible Windows XP [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado ioapiset.h (incluye Windows.h en Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2)
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también

CancelIo, CreateEvent, GetOverlappedResultEx, SUPERPUESTA, entrada y salida superpuestas, funciones de sincronización