OVERLAPPED I/O 异步APC

本文详细介绍了OVERLAPPED I/O在Windows系统中的应用,特别是结合异步过程调用(APC)如何实现高效的异步IO操作。通过实例展示了如何使用OVERLAPPED结构和ReadFileEx API,同时强调了OVERLAPPED结构复用时的注意事项,如确保每次操作前清零以避免上一次操作的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

APC简介:APC

附: 套接字中的WSAOVERLAPPED 和 OVERLAPPED 是一个东西. 

OVERLAPPED 中的InternalHigh 用于显示当前读取了多少字节. Internal 用于显示错误信息, 0 即无错误;

GetOverlappedResult 返回的字节以及错误都是根据 OVERLAPPED  结构中的字段来提取的.

这也是为什么GetOverlappedResult 需要的OVERLAPPED结构是一开始初始化的那个 

同时也是为什么每个io操作都需要唯一一份OVERLAPPED.

注意: 如果想要复用OVERLAPPED结构(即在一次操作完成之后) . 一定要memset OVERLAPPED ,让其内部清0 .因为内部还

残留上一次操作的记录;

 

第一个例子. 第二个例子使用APC 来解决一些问题

/*
   首先使用 OVERLAPPED  结构, 其中有Event 对象, 可用可不用,这个例子先不用

   CreateFile 其中一个参数使用 FILE_FLAG_OVERLAPPED 
    
   ReadFile  默认同步, 在最后一个参数使用 OVERLAPPED  ;
   ReadFile  返回TRUE ,则代表已经读完了
             否则应该检查 GetLastError , 系统是否为此安排了等待.

   如果 GetLastError == ERROR_IO_PENDING ,则成功了, 等着取数据, 否则失败

   之后可以使用 GetOverlappedResult(最后一个参数为TRUE) / WaitForSingObject 来等待直到完成;
   
    
*/


void
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值