FileIOCompletionRoutine  1_DAR64 

The FileIOCompletionRoutine function is called when an asynchronous input and output (I/O) function (ReadFileExFM7WZ7 or WriteFileEx12G2WEY) is completed and the calling thread is in an alertable wait (using the SleepExFMRES8, WaitForSingleObjectExAQE6QK, or WaitForMultipleObjectsEx1XSV84L 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 

   );

 

 

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 ReadFileExFM7WZ7 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

Points to the OVERLAPPED1N286M5 structure specified by the asynchronous I/O function.

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.

 

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 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.

See Also

OVERLAPPED, ReadFileEx, SleepEx, WaitForMultipleObjectsEx, WaitForSingleObjectEx, WriteFileEx