当异步输入和输出(I / O)功能(ReadFileEx或WriteFileEx)完成并且调用线程处于等待警报状态(使用SleepEx,WaitForSingleObjectEx)时,将调用FileIOCompletionRoutine函数,或WaitForMultipleObjectsEx功能,【的fAlertable】标志设置为TRUE)。
VOID WINAPI FileIOCompletionRoutine(
DWORD 【dwErrorCode】, | //完成代码 |
DWORD 【dwNumberOfBytesTransfered】, | //传输的字节数 |
LPOVERLAPPED 【lpOverlapped的】 | //指向具有I / O信息的结构的指针 |
); |
参数
【dwErrorCode】
指定I / O完成状态。此参数可能是以下值之一:
值 | 含义 |
0 | I / O成功。 |
ERROR_HANDLE_EOF | ReadFileEx函数尝试读取文件的最后一行。 |
【dwNumberOfBytesTransfered】
指定传输的字节数。如果发生错误,该参数为零。
【lpOverlapped的】
指向由异步I / O功能指定的OVERLAPPED结构。
Windows不使用OVERLAPPED结构的活动成员;呼叫应用程序可以使用该成员将信息传递到完成例程。在调用完成例程后,Windows不使用OVERLAPPED结构,因此完成例程可以释放重叠结构使用的内存。
返回值
此函数不返回值。
备注
FileIOCompletionRoutine函数是应用程序定义或库定义的函数名称的占位符。
从该函数返回允许调用另一个待处理的I / O完成例程。所有等待完成例程在可警告线程的等待满足WAIT_IO_COMPLETION的返回码之前被调用。Windows可以按任何顺序调用等待的完成例程。它们可以按照I / O功能完成的顺序调用也可能不会被调用。
每次Windows调用完成例程时,它都会使用某些应用程序的堆栈。如果完成例程执行额外的异步I / O和可警告的等待,则堆栈可能会增加。
也可以看看
OVERLAPPED, ReadFileEx, SleepEx, WaitForMultipleObjectsEx, WaitForSingleObjectEx, WriteFileEx