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
{...
参考: