重叠作使线程能够在后台执行耗时的 I/O作,使线程能够自由执行其他任务。 若要在通信资源上启用重叠的 I/O作,线程必须在打开句柄时在 CreateFile 函数中指定 FILE_FLAG_OVERLAPPED 标志。 若要将 ReadFile 或 WriteFile 函数作为重叠作运行,调用线程必须指定指向 OVERLAPPED 结构的指针。 重叠 结构必须包含手动重置(而不是自动重置)事件对象的句柄。 当对 I/O 函数的调用在作完成之前返回时,系统将事件对象的状态设置为未发出信号。 系统将事件对象的状态设置为在作完成后发出信号。 线程使用等待函数检查事件对象的当前状态或等待其状态发出信号。
ReadFileEx 和 WriteFileEx 函数只能作为重叠作执行。 调用线程指定指向 FileIOCompletionRoutine 函数的指针,该函数在完成重叠作时执行。 仅当调用线程执行可警报作时,才会执行完成例程。
有关事件对象、等待函数、可警报等待和完成例程的详细信息,请参阅 关于同步。