Platform SDK: Files and I/O

FileIOCompletionRoutine

The FileIOCompletionRoutine function is an application-defined callback function used with the ReadFileEx and WriteFileEx functions. 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         // I/O information buffer
);

Parameters

dwErrorCode
[in] Specifies the I/O completion status. This parameter can 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
[in] Specifies the number of bytes transferred. If an error occurs, this parameter is zero.
lpOverlapped
[in] 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.

Requirements

  Windows NT/2000: Requires Windows NT 3.1 or later.
  Windows 95/98: Requires Windows 98.
  Header: Declared in Winbase.h; include Windows.h.

See Also

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