Función BindIoCompletionCallback (winbase.h)
Asocia el puerto de finalización de E/S que pertenece al grupo de subprocesos con el identificador de archivo especificado. Al finalizar una solicitud de E/S que implique este archivo, un subproceso de trabajo que no sea de E/S ejecutará la función de devolución de llamada especificada.
Sintaxis
BOOL BindIoCompletionCallback(
[in] HANDLE FileHandle,
[in] LPOVERLAPPED_COMPLETION_ROUTINE Function,
[in] ULONG Flags
);
Parámetros
[in] FileHandle
Identificador del archivo abierto para la finalización de E/S superpuesta. La función CreateFile devuelve este identificador, con la marca FILE_FLAG_OVERLAPPED .
[in] Function
Puntero a la función de devolución de llamada que se va a ejecutar en un subproceso de trabajo que no es de E/S cuando se completa la operación de E/S. Esta función de devolución de llamada no debe llamar a la función TerminateThread .
Para obtener más información sobre la rutina de finalización, vea FileIOCompletionRoutine.
[in] Flags
Este parámetro debe ser cero.
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 la función GetLastError .
Comentarios
Es posible que la función de devolución de llamada no se ejecute si el proceso emite una solicitud asincrónica en el archivo especificado por el parámetro FileHandle , pero la solicitud devuelve inmediatamente con un código de error distinto de ERROR_IO_PENDING.
Asegúrese de que el subproceso que inicia la solicitud de E/S asincrónica no finaliza antes de que se complete la solicitud. Además, si una función de un archivo DLL se pone en cola en un subproceso de trabajo, asegúrese de que la función del archivo DLL ha completado la ejecución antes de descargar el archivo DLL.
El grupo de subprocesos mantiene un puerto de finalización de E/S. Al llamar a BindIoCompletionCallback, asocia el archivo especificado con el puerto de finalización de E/S del grupo de subprocesos. Las solicitudes asincrónicas en ese objeto de archivo se completarán publicando en el puerto de finalización, donde los subprocesos de trabajo del grupo de subprocesos los recogerán. En el caso de las devoluciones de llamada que deben emitir una solicitud de E/S que se completa como una llamada de procedimiento asincrónico, el grupo de subprocesos proporciona un grupo de trabajo de E/S. Los subprocesos de trabajo de E/S no esperan en el puerto de finalización; duermen en un estado de espera alertable para que los paquetes de solicitud de E/S que se completen puedan reactivarlos. Ambos tipos de subprocesos de trabajo comprueban si hay E/S pendientes en ellos y, si hay, no salen. Para obtener más información, vea Llamadas asincrónicas a procedimientos.
Para compilar una aplicación que use esta función, defina _WIN32_WINNT como 0x0500 o posterior. Para obtener más información, vea Usar los encabezados de Windows.
Requisitos
Cliente mínimo compatible | Windows XP [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2003 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | winbase.h (incluye Windows.h) |
Library | Kernel32.lib |
Archivo DLL | Kernel32.dll |