callach 发表于 2017-6-1 13:33:34

异步读

异步与同步的概念:
同步:必须等待函数执行的操作完成,才返回
异步:只发送请求,不用等待函数执行完成,立即返回
异步的实现:

HANDLE g_hOverlappedEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
OVERLAPPED Overlapped;
memset(&Overlapped, 0, sizeof(OVERLAPPED));
ULONG ulRet= 0;
Overlapped.hEvent = g_hOverlappedEvent;
ulRet = ReadFile(gh_Device, &OpInfo, sizeof(OP_INFO), &ulBytesReturn, &Overlapped);


if (ulRet == 0)
{
            if (GetLastError() == ERROR_IO_PENDING)
            {
                ULONG ulReturn = WaitForSingleObject(Overlapped.hEvent, INFINITE);
                               
                if (ulReturn == WAIT_FAILED)
                {
                  break;
                }
          }
}
具体的可以参考这篇文章
http://www.blogfshare.com/irp-synchronization-asynchronous.html
页: [1]
查看完整版本: 异步读