Función GetQueuedCompletionStatus (ioapiset.h)
Intenta quitar un paquete de finalización de E/S desde el puerto de finalización de E/S especificado. Si no hay ningún paquete de finalización en cola, la función espera a que se complete una operación de E/S pendiente asociada al puerto de finalización.
Para quitar varios paquetes de finalización de E/S a la vez, use la función
Sintaxis
BOOL GetQueuedCompletionStatus(
[in] HANDLE CompletionPort,
LPDWORD lpNumberOfBytesTransferred,
[out] PULONG_PTR lpCompletionKey,
[out] LPOVERLAPPED *lpOverlapped,
[in] DWORD dwMilliseconds
);
Parámetros
[in] CompletionPort
Identificador del puerto de finalización. Para crear un puerto de finalización, use la función CreateIoCompletionPort.
lpNumberOfBytesTransferred
Puntero a una variable que recibe el número de bytes transferidos en una operación de E/S completada.
[out] lpCompletionKey
Puntero a una variable que recibe el valor de clave de finalización asociado al identificador de archivo cuya operación de E/S se ha completado. Una clave de finalización es una clave por archivo especificada en una llamada a CreateIoCompletionPort.
[out] lpOverlapped
Puntero a una variable que recibe la dirección del estructura de SUPERPUESTA que se especificó cuando se inició la operación de E/S completada.
Incluso si ha pasado la función un identificador de archivo asociado a un puerto de finalización y una estructura de superpuesta válida
[in] dwMilliseconds
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, devuelve FALSEy establece *lpOverlapped en NULL.
Si dwMilliseconds es INFINITE, la función nunca agotará el tiempo de espera. Si dwMilliseconds es cero y no hay ninguna operación de E/S para desqueue, 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 dwMilliseconds valor incluye el tiempo invertido en estados de baja potencia. Por ejemplo, el tiempo de espera continúa contando mientras el equipo está dormido.
Windows 8 y versiones más recientes, Windows Server 2012 y versiones posteriores: El dwMilliseconds valor no incluye el tiempo invertido en estados de baja potencia. Por ejemplo, el tiempo de espera no continúa contando mientras el equipo está dormido.
Valor devuelto
Devuelve un valor distinto de cero (TRUE) si es correcto o cero (FALSE) de lo contrario.
Para obtener información de error extendida, llame a GetLastError.
Para obtener más información, vea la sección Comentarios.
Observaciones
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.
Si se produce un error en una llamada a GetQueuedCompletionStatus porque el identificador de puerto de finalización asociado a él está cerrado mientras la llamada está pendiente, la función devuelve FALSE, *lpOverlapped será nully GetLastError devolverá ERROR_ABANDONED_WAIT_0.
Windows Server 2003 y Windows XP: Cerrar el identificador de puerto de finalización mientras una llamada está pendiente no dará lugar al comportamiento indicado anteriormente. La función seguirá esperando hasta que se quite una entrada del puerto o hasta que se produzca un tiempo de espera, si se especifica como un valor distinto de INFINITE.
Si la función GetQueuedCompletionStatus
- Si *lpOverlapped es NULL, la función no desconocía un paquete de finalización del puerto de finalización. En este caso, la función no almacena información en las variables a las que apunta el lpNumberOfBytes y parámetros lpCompletionKey y sus valores son indeterminados.
- Si *lpOverlapped no es NULL y la función desqueue un paquete de finalización para una operación de E/S con error desde el puerto de finalización, la función almacena información sobre la operación con errores en las variables a las que apunta lpNumberOfBytes, lpCompletionKeyy lpOverlapped. Para obtener información de error extendida, llame a GetLastError.
En Windows 8 y Windows Server 2012, esta función es compatible con las siguientes tecnologías.
Tecnología | Soportado |
---|---|
Protocolo bloque de mensajes del servidor (SMB) 3.0 | Sí |
Conmutación por error transparente (TFO) de SMB 3.0 | Sí |
SMB 3.0 con recursos compartidos de archivos de escalabilidad horizontal (SO) | Sí |
Sistema de archivos de volumen compartido de clúster (CsvFS) | Sí |
Sistema de archivos resistente (ReFS) | Sí |
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Windows XP [aplicaciones de escritorio | Aplicaciones para UWP] |
servidor mínimo admitido | Windows Server 2003 [aplicaciones de escritorio | Aplicaciones para UWP] |
de la plataforma de destino de |
Windows |
encabezado de |
ioapiset.h (incluya Windows.h) |
biblioteca de |
Kernel32.lib |
DLL de |
Kernel32.dll |
Consulte también
funciones de administración de archivos
funciones de
de puertos de finalización de E/S de
LockFileEx de
Temas de información general de