设备I/O之OVERLAPPED

本文介绍了OverLapped的概念及其在程序中的应用方式。OverLapped允许程序在等待设备操作的同时继续执行,通过创建新线程来处理设备操作,提高程序效率。文章通过一个具体的文件写入示例展示了如何使用OverLapped进行非阻塞I/O操作。

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

OverLapped这个字符到底是什么含义呢?其实它的意思就是当程序在等待设备操作的时候,可以继续往下做而不必阻塞到那个地方等待设备操作的返回,这就造成了程序运行和设备操作时间上的重叠.是的,是这样的,神奇吧,那么程序该怎么知道设备操作什么时候做完了返回了呢...
这样的操作无疑提高了效率,使得程序和设备的配合协调了不少,当然OVERLAPPED里面是自己新开了线程来处理,这是毫无疑问的...

HANDLE hFile;

hFile = CreateFile(TEXT(

"C://test.txt"),

GENERIC_WRITE,

FILE_SHARE_WRITE|FILE_SHARE_READ,

NULL,

OPEN_EXISTING,

FILE_FLAG_OVERLAPPED,

NULL);

LPDWORD lpNumberOfBytesWritten;

DWORD nBytes;

lpNumberOfBytesWritten = &nBytes;

OVERLAPPED oOverlap;

memset(&oOverlap, 0,

sizeof(oOverlap));

 

bool bSuccess = WriteFile(hFile, "test1", 5, lpNumberOfBytesWritten, &oOverlap);

 

if(bSuccess)

{

 

if (GetLastError() == ERROR_IO_PENDING)

{

GetOverlappedResult(hFile,&oOverlap,lpNumberOfBytesWritten,TRUE);

printf(

"writed: %d", *lpNumberOfBytesWritten);

}

}

 

else

{...

 

参考:

http://www.cssdn.net/viewthread.php?tid=2012

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值