The FileIOCompletionRoutine function is called when an asynchronous input and output (I/O) function (ReadFileEx or WriteFileEx) is completed and the calling thread is in an alertable wait (using the SleepEx, WaitForSingleObjectEx, or WaitForMultipleObjectsEx function with the fAlertable flag set to TRUE).
VOID WINAPI FileIOCompletionRoutine(
DWORD dwErrorCode, |
// completion code |
DWORD dwNumberOfBytesTransfered, |
// number of bytes transferred |
LPOVERLAPPED lpOverlapped |
// pointer to structure with I/O information |
); |
Value |
Meaning |
0 |
The I/O was successful. |
ERROR_HANDLE_EOF |
The ReadFileEx function tried to read past the end of the file. |
Windows does not use the hEvent member of the OVERLAPPED structure; the calling application may use this member to pass information to the completion routine. Windows does not use the OVERLAPPED structure after the completion routine is called, so the completion routine can deallocate the memory used by the overlapped structure.
This function does not return a value.
The FileIOCompletionRoutine function is a placeholder for an application-defined or library-defined function name.
Returning from this function allows another pending I/O completion routine to be called. All waiting completion routines are called before the alertable thread’s wait is satisfied with a return code of WAIT_IO_COMPLETION. Windows may call the waiting completion routines in any order. They may or may not be called in the order the I/O functions are completed.
Each time Windows calls a completion routine, it uses some of the application’s stack. If the completion routine does additional asynchronous I/O and alertable waits, the stack may grow.
For more information, see Asynchronous Procedure Calls.
OVERLAPPED, ReadFileEx, SleepEx, WaitForMultipleObjectsEx, WaitForSingleObjectEx, WriteFileEx
Questions: