重叠结构 (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::ReadAsync 或 IStreamAsync::WriteAsync 函数。
OffsetHigh
类型:DWORD
要开始传输的文件位置的高序字。
Pointer
类型: PVOID
保留。
hEvent
类型: 句柄
事件句柄,该事件在操作完成时设置为信号状态。 调用进程必须将此成员设置为零或有效的事件句柄,然后才能调用任何重叠的函数。 若要创建事件对象,请使用 CreateEvent 函数。 此函数返回一个句柄,该句柄可用于同步设备的同时 I/O 请求。
IStreamAsync::ReadAsync 和 IStreamAsync::WriteAsync 等函数在开始 I/O 操作之前将此句柄设置为未对齐状态。 操作完成后,句柄将设置为信号状态。
IStreamAsync::OverlappedResult 等函数和等待函数将自动重置事件重置为非对齐状态。 因此,如果使用自动重置事件,则应用程序在等待操作完成并调用 IStreamAsync::OverlappedResult 时可以停止响应。
注解
在函数调用中使用它之前,应始终将此结构初始化为零。 否则,函数可能会失败并返回 ERROR_INVALID_PARAMETER。
使用 IStreamAsync::CancelIo 函数取消异步 I/O 操作。
一个常见错误是在完成以前的异步操作之前重用 OVERLAPPED 结构。 为每个请求使用单独的结构。 为处理数据的每个线程创建一个事件对象。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
标头 | shobjidl.h |