Compartir a través de


Función GetQueuedCompletionStatusEx

Recupera varias entradas de puerto de finalización simultáneamente. Espera a que se completen las operaciones de E/S pendientes asociadas con el puerto de finalización especificado.

Para quitar de la cola los paquetes de finalización de E/S de uno en uno, use la función GetQueuedCompletionStatus .

Sintaxis

BOOL WINAPI GetQueuedCompletionStatusEx(
  _In_  HANDLE             CompletionPort,
  _Out_ LPOVERLAPPED_ENTRY lpCompletionPortEntries,
  _In_  ULONG              ulCount,
  _Out_ PULONG             ulNumEntriesRemoved,
  _In_  DWORD              dwMilliseconds,
  _In_  BOOL               fAlertable
);

Parámetros

CompletionPort[in]

Un identificador para el puerto de finalización. Para crear un puerto de finalización, use la función CreateIoCompletionPort .

lpCompletionPortEntries[out]

En la entrada, apunta a una matriz preasignada de estructuras OVERLAPPED_ENTRY .

En la salida, recibe una matriz de estructuras OVERLAPPED_ENTRY que contienen las entradas. El número de elementos de la matriz lo proporciona ulNumEntriesRemoved.

El número de bytes transferidos durante cada E/S, la clave de finalización que indica en qué archivo se produjo cada E/S y la dirección de estructura superpuesta utilizada en cada E/S original se devuelven en la matriz lpCompletionPortEntradas .

ulCount[in]

El número máximo de entradas que se van a eliminar.

ulNumEntriesRemoved[out]

Puntero a una variable que recibe el número de entradas que se han quitado realmente.

dwMilisegundos[in]

El número de milisegundos que el autor de la llamada está dispuesto a esperar para que aparezca un paquete de finalización en el puerto de finalización. Si un paquete de finalización no aparece dentro del tiempo especificado, la función agota el tiempo de espera y devuelve FALSE.

Si dwMilliseconds es INFINITE (0xFFFFFFFF), la función nunca agotará el tiempo de espera. Si dwMilliseconds es cero y no hay ninguna operación de E/S para quitar de la cola, la función agotará el tiempo de espera inmediatamente.

Windows XP, Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 y Windows Server 2008 R2: El valor de dwMilliseconds incluye el tiempo empleado en estados de bajo consumo. Por ejemplo, el tiempo de espera sigue contando hacia atrás mientras el equipo está en suspensión.

Windows 8, Windows Server 2012, Windows 8.1, Windows Server 2012 R2, Windows 10 y Windows Server 2016: El valor de dwMilliseconds no incluye el tiempo empleado en estados de bajo consumo. Por ejemplo, el tiempo de espera no sigue contando hacia atrás mientras el equipo está en suspensión.

fAlertable[in]

Si este parámetro es FALSE, la función no vuelve hasta que haya transcurrido el período de tiempo de espera o se recupere una entrada.

Si el parámetro es TRUE y no hay entradas disponibles, la función realiza una espera alertable. El subproceso se devuelve cuando el sistema pone en cola una rutina de finalización de E/S o APC en el subproceso y el subproceso ejecuta la función.

Una rutina de finalización se pone en cola cuando se ha completado la función ReadFileEx o WriteFileEx en la que se especificó y el subproceso de llamada es el subproceso que inició la operación. Un APC se pone en cola cuando se llama a QueueUserAPC.

Valor devuelto

Devuelve un valor distinto de cero TRUE si se realiza correctamente o de cero FALSE en caso contrario.

Para obtener información de error extendida, llame a GetLastError.

Observaciones

Esta función asocia un subproceso con el puerto de finalización especificado. Un subproceso se puede asociar con un máximo de un puerto de finalización.

Esta función se devuelve TRUE cuando se completa al menos una E/S pendiente, pero es posible que se haya producido un error en una o varias operaciones de E/S. Tenga en cuenta que depende del usuario de esta función comprobar la lista de entradas devueltas en el parámetro lpCompletionPortEntries para determinar cuáles de ellas corresponden a cualquier posible operación de E/S fallida examinando el estado contenido en el miembro lpOverlapped en cada OVERLAPPED_ENTRY.

Esta función se devuelve FALSE cuando no se ha eliminado de la cola ninguna operación de E/S. Normalmente, esto significa que se ha producido un error al procesar los parámetros de esta llamada, o que el identificador CompletionPort se ha cerrado o no es válido. La función GetLastError proporciona información de error ampliada.

Si se produce un error en una llamada a GetQueuedCompletionStatusEx porque el identificador asociado a ella está cerrado, la función devuelve FALSE y GetLastError devolverá ERROR_ABANDONED_WAIT_0.

Las aplicaciones de servidor pueden tener varios subprocesos que llaman a la función GetQueuedCompletionStatusEx para el mismo puerto de finalización. A medida que se completan las operaciones de E/S, se ponen en cola en este puerto en orden de primero en entrar, primero en salir. Si un subproceso está esperando activamente esta llamada, una o varias solicitudes en cola completan la llamada solo para ese subproceso.

Para obtener más información sobre la teoría de puertos de finalización de E/S, el uso y las funciones asociadas, consulte Puertos de finalización de E/S.

En Windows 8 y Windows Server 2012, esta función es compatible con las siguientes tecnologías.

Tecnología Compatible
Protocolo bloque de mensajes del servidor (SMB) 3.0
Conmutación por error transparente (TFO) de SMB 3.0
SMB 3.0 con recursos compartidos de archivos de escalabilidad horizontal (SO)
Sistema de archivos de volumen compartido de clúster (CsvFS)
Sistema de archivos resistente (ReFS)

Requisitos

Requisito Importancia
Cliente mínimo compatible Windows Vista [aplicaciones de escritorio | Aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2008 [aplicaciones de escritorio | Aplicaciones para UWP]
Cabecera IoAPI.h (incluir Windows.h)
WinBase.h en Windows Server 2008 R2, Windows 7, Windows Server 2008 y Windows Vista (incluidos Windows.h)
Biblioteca Kernel32.lib
DLL Kernel32.dll

Consulte también

Temas generales

funciones de administración de archivos

Puertos de finalización de E/S

Uso de los encabezados de Windows

Funciones

ConnectNamedPipe

CreateIoCompletionPort

DeviceIoControl

LockFileEx

Archivo de lectura

PostQueuedCompletionStatus

TransactNamedPipe

WaitCommEvent

Archivo de escritura