FileIOCompletionRoutine

The FileIOCompletionRoutine function is an application-defined callback function used with the ReadFileEx or WriteFileEx function. It is called when the asynchronous input and output (I/O) operation is completed or canceled and the calling thread is in an alertable state (using the SleepEx, MsgWaitForMultipleObjectsEx, WaitForSingleObjectEx, or WaitForMultipleObjectsEx function with the fAlertable flag set to TRUE).

The LPOVERLAPPED_COMPLETION_ROUTINE type defines a pointer to this callback function. FileIOCompletionRoutine is a placeholder for the application-defined function name.

VOID CALLBACK FileIOCompletionRoutine(
  DWORD dwErrorCode,                // completion code
  DWORD dwNumberOfBytesTransfered,  // number of bytes transferred
  LPOVERLAPPED lpOverlapped         // pointer to structure with I/O 
                                    // information
);
 

Parameters

dwErrorCode
Specifies the I/O completion status. This parameter may be one of the following values:
Value Meaning
0 The I/O was successful.
ERROR_HANDLE_EOF The ReadFileEx function tried to read past the end of the file.

dwNumberOfBytesTransfered
Specifies the number of bytes transferred. If an error occurs, this parameter is zero.
lpOverlapped
Pointer to the OVERLAPPED structure specified by the asynchronous I/O function.

The system does not use the hEvent member of the OVERLAPPED structure; the calling application may use this member to pass information to the completion routine. The system 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.

Return Values

This function does not return a value.

Remarks

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 completed with a return code of WAIT_IO_COMPLETION. The system 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 the system 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.

QuickInfo

  Windows NT: Requires version 3.1 or later.
  Windows: Requires Windows 98 or later.
  Windows CE: Unsupported.
  Header: Declared in winbase.h.
  Import Library: User-defined.

See Also

File I/O Overview, File Functions, OVERLAPPED, ReadFileEx, SleepEx, WaitForMultipleObjectsEx, WaitForSingleObjectEx, WriteFileEx