重叠结构 (shobjidl.h)

包含异步 (重叠) 输入/输出 (I/O) 中使用的信息。

语法

typedef struct _OVERLAPPED {
  ULONG_PTR Internal;
  ULONG_PTR InternalHigh;
  union {
    struct {
      DWORD Offset;
      DWORD OffsetHigh;
    };
    PVOID Pointer;
  };
  HANDLE    hEvent;
} OVERLAPPED, *LPOVERLAPPED;

成员

Internal

类型: ULONG_PTR

保留给操作系统使用。 此成员指定系统依赖状态,当 IStreamAsync::OverlappedResult 函数返回时有效,而不将扩展错误信息设置为 ERROR_IO_PENDING

InternalHigh

类型: ULONG_PTR

保留给操作系统使用。 此成员指定传输的数据的长度,当 IStreamAsync::OverlappedResult 函数返回 TRUE 时有效。

Offset

类型:DWORD

开始传输的文件位置。 文件位置是距文件起始处的字节偏移量。 调用进程必须先设置此成员,然后才能调用 IStreamAsync::ReadAsyncIStreamAsync::WriteAsync 函数。

OffsetHigh

类型:DWORD

要开始传输的文件位置的高序字。

Pointer

类型: PVOID

保留。

hEvent

类型: 句柄

事件句柄,该事件在操作完成时设置为信号状态。 调用进程必须将此成员设置为零或有效的事件句柄,然后才能调用任何重叠的函数。 若要创建事件对象,请使用 CreateEvent 函数。 此函数返回一个句柄,该句柄可用于同步设备的同时 I/O 请求。

IStreamAsync::ReadAsyncIStreamAsync::WriteAsync 等函数在开始 I/O 操作之前将此句柄设置为未对齐状态。 操作完成后,句柄将设置为信号状态。

IStreamAsync::OverlappedResult 等函数和等待函数将自动重置事件重置为非对齐状态。 因此,如果使用自动重置事件,则应用程序在等待操作完成并调用 IStreamAsync::OverlappedResult 时可以停止响应。

注解

在函数调用中使用它之前,应始终将此结构初始化为零。 否则,函数可能会失败并返回 ERROR_INVALID_PARAMETER

使用 IStreamAsync::CancelIo 函数取消异步 I/O 操作。

一个常见错误是在完成以前的异步操作之前重用 OVERLAPPED 结构。 为每个请求使用单独的结构。 为处理数据的每个线程创建一个事件对象。

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
标头 shobjidl.h