WriteFile在ERROR_IO_PENDING时仍然运行吗
WriteFile在ERROR_IO_PENDING时依然运行吗?
比如在异步方式下,以下代码
补充一点,“依然运行”指的是WriteFile继续写数据
------解决方案--------------------
是
switch(WaitForSingleObject(m_osWrite.hEvent, _MAXTIMEOUT)) {
case WAIT_OBJECT_0: // 操作完成
if (GetOverlappedResult(hComm, &m_osWrite, &dwBytesWriten, FALSE))
{
------解决方案--------------------
一般是系统后台驱动再处理这个延迟事件, overlapped.Event 就是用于驱动通知调用对象 完成了这个操作
比如在异步方式下,以下代码
OVERLAPPED m_osWrite;
//......
//省略若干代码
//......
bWriteStat=WriteFile(hCom,lpOutBuffer,
dwBytesWrite,& dwBytesWrite,&m_osWrite);
if(!bWriteStat)
{
if(GetLastError()==ERROR_IO_PENDING)
{
WaitForSingleObject(m_osWrite.hEvent,1000);
}
}
补充一点,“依然运行”指的是WriteFile继续写数据
------解决方案--------------------
是
switch(WaitForSingleObject(m_osWrite.hEvent, _MAXTIMEOUT)) {
case WAIT_OBJECT_0: // 操作完成
if (GetOverlappedResult(hComm, &m_osWrite, &dwBytesWriten, FALSE))
{
------解决方案--------------------
一般是系统后台驱动再处理这个延迟事件, overlapped.Event 就是用于驱动通知调用对象 完成了这个操作