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 al puerto de finalización especificado.
Para quitar paquetes de finalización de E/S de cola 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]
-
Identificador del 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 asignada previamente de estructuras de OVERLAPPED_ENTRY .
En la salida, recibe una matriz de OVERLAPPED_ENTRY estructuras que contienen las entradas. El número de elementos de 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 usada en cada E/S original se devuelven en la matriz lpCompletionPortEntries .
-
ulCount [in]
-
Número máximo de entradas que se van a quitar.
-
ulNumEntriesRemoved [out]
-
Puntero a una variable que recibe el número de entradas que realmente se han quitado.
-
dwMilliseconds [in]
-
Número de milisegundos que el autor de la llamada está dispuesto a esperar a 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 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 dwMilliseconds incluye el tiempo invertido en estados de baja potencia. Por ejemplo, el tiempo de espera sigue contando mientras el equipo está dormido.
Windows 8, Windows Server 2012, Windows 8.1, Windows Server 2012 R2, Windows 10 y Windows Server 2016: el valor dwMilliseconds no incluye el tiempo invertido en baja potencia Estados. Por ejemplo, el tiempo de espera no sigue contando mientras el equipo está dormido.
-
fAlertable [in]
-
Si este parámetro es FALSE, la función no devuelve 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 de alerta. El subproceso devuelve cuando el sistema pone en cola una rutina de finalización de E/S o APC al 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 que realiza la 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 es correcto o cero (FALSE) en caso contrario.
Para obtener información de error extendida, llame a GetLastError.
Comentarios
Esta función asocia un subproceso al puerto de finalización especificado. Un subproceso se puede asociar como máximo a un puerto de finalización.
Esta función devuelve TRUE cuando se completa al menos una E/S pendiente, pero es posible que se produzca un error en una o varias operaciones de E/S. Tenga en cuenta que el usuario de esta función debe comprobar la lista de entradas devueltas en el parámetro lpCompletionPortEntries para determinar cuál de ellas corresponde a las posibles operaciones de E/S con errores examinando el estado contenido en el miembro lpOverlapped en cada OVERLAPPED_ENTRY.
Esta función devuelve FALSE cuando no se ha quitado ninguna operación de E/S. Normalmente, esto significa que se produjo un error al procesar los parámetros en esta llamada, o que el identificador CompletionPort se cerró o no es válido. La función GetLastError proporciona información de error extendida.
Si se produce un error en una llamada a GetQueuedCompletionStatusEx porque el identificador asociado a él 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 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 del puerto 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.
Technology | Compatible |
---|---|
Protocolo bloque de mensajes del servidor (SMB) 3.0 |
Yes |
Conmutación por error transparente (TFO) de SMB 3.0 |
Yes |
SMB 3.0 con recursos compartidos de archivos de escalabilidad horizontal (SO) |
Yes |
Sistema de archivos de volumen compartido de clúster (CsvFS) |
Yes |
Sistema de archivos resistente a errores (ReFS) |
Yes |
Requisitos
Requisito | Value |
---|---|
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] |
Encabezado |
|
Biblioteca |
|
Archivo DLL |
|
Vea también
-
Temas de información general
-
Funciones