当前位置:首页 科普知识 OVERLAPPED

OVERLAPPED

发布时间:2023-09-06 05:20:02

OVERLAPPED即OVERLAPPED是一个包含了用于异步输入输出的信息的结构体。

OVERLAPPED详细介绍

OVERLAPPED即OVERLAPPED是一个包含了用于异步输入输出的信息的结构体。

OVERLAPPED

OVERLAPPED基本介绍

The OVERLAPPED structure contains information used in asynchronous input and output (I/O).

OVERLAPPED结构类型声明

OVERLAPPED结构类型声明如下:

第一种声明

typedef struct _OVERLAPPED {

DWORD Internal;

DWORD InternalHigh;

DWORD Offset;

DWORD OffsetHigh;

HANDLE hEvent;

} OVERLAPPED

参数说明

Internal: 预留给操作系统使用。它指定一个独立于系统的状态,当GetOverlappedResult函数返回时没有设置扩展错误信息ERROR_IO_PENDING时有效。

InternalHigh: 预留给操作系统使用。它指定长度的数据转移,当GetOverlappedResult函数返回TRUE时有效。

Offset: 该文件的位置是从文件起始处的字节偏移量。调用进程设置这个成员之前调用ReadFile或WriteFile函数。当读取或写入命名管道和通信设备时这个成员被忽略设为零。

OVERLAPPED

OffsetHigh: 指定文件传送的字节偏移量的高位字。当读取或写入命名管道和通信设备时这个成员被忽略设为零。

hEvent: 在转移完成时处理一个事件设置为有信号状态。调用进程集这个成员在调用ReadFile、 WriteFile、TransactNamedPipe、 ConnectNamedPipe函数之前。

第二种声明

typedef struct _OVERLAPPED {

ULONG_PTR Internal; //操作系统保留,指出一个和系统相关的状态

ULONG_PTR InternalHigh; //指出发送或接收的数据长度

union {

struct {

DWORD Offset; //文件传送的字节偏移量的低位字

DWORD OffsetHigh; //文件传送的字节偏移量的高位字

};

PVOID Pointer; //指针,指向文件传送位置

};

HANDLE hEvent; //指定一个I/O操作完成后触发的事件

} OVERLAPPED, *LPOVERLAPPED;

OVERLAPPED

OVERLAPPED结构作用

I/O设备处理必然让主程序停下来干等I/O的完成,解决这个问题,可以使用OVERLAPPED。

OVERLAPPED I/O是WIN32的一项技术, 你可以要求操作系统为你传送数据,并且在传送完毕时通知你。这项技术使你的程序在I/O进行过程中仍然能够继续处理事务。事实上,操作系统内部正是以线程来I/O完成OVERLAPPED I/O。你可以获得线程的所有利益,而不需付出什么痛苦的代价。也就是说,OVERLAPPED主要是设置异步I/O操作,异步I/O操作是指应用程序可以在后台读或者写数据,而在前台做其他事情。

Allen denver在他的《Serial Communication in Win32》中是这样解释OVERLAPPED I/O的:我个人认为还是比较准确的

Overlapped I/O is not as straightforward as nonoverlapped I/O, but allows more flexibility and efficiency. A port open for overlapped operations allows multiple threads to do I/O operations at the same time and perform other work while the operations are pending. Furthermore, the behavior of overlapped operations allows a single thread to issue many different requests and do work in the background while the operations are pending.

温馨提示:
本文【OVERLAPPED】由作者 爱百科 转载提供。 该文观点仅代表作者本人, 自学教育网 信息发布平台,仅提供信息存储空间服务, 若存在侵权问题,请及时联系管理员或作者进行删除。
(c)2008-2025 自学教育网 All Rights Reserved 汕头市灵创科技有限公司
粤ICP备2024240640号-6