求高人指点一下!怎么理解这里的return(dwbytesRead),返回已经读取的数据长度有什么作用
求高人指点一下!如何理解这里的return(dwbytesRead),返回已经读取的数据长度有什么作用!
DWORD APIENTRY IOP_Read(int port, LPSTR buffer, int count)
{
BOOL fReadStat ;
DWORD dwError;
DWORD dwBytesRead ;
fReadStat = ReadFile( COMDEV[port], buffer, count,
&dwBytesRead, &READ_OS ) ;
if (!fReadStat)
{
if (GetLastError() == ERROR_IO_PENDING)
{
while(!GetOverlappedResult( COMDEV[port],
&READ_OS, &dwBytesRead, TRUE ))
{
dwError = GetLastError() ;
if (dwError == ERROR_IO_INCOMPLETE)
return (dwBytesRead) ;
else
return (FAIL) ;
}
}
else
return (FAIL) ;
}
return (dwBytesRead) ;
}
------解决方案--------------------
作用就是返回实际读取的数据字节数,因为“文件”操作中经常出现实际读取的字节数与想读取的字节数不同的情况。
------解决方案--------------------
返回实际读到的字节数。在串口通信中,并非所有操作都能成功,你可能想读取100个字节,但是,如果串口线断开或者其他原因,你实际只读到10个字节,因此需要知道实际读取的字节数,在你的程序中进行判断,以确定操作是否成功。
DWORD APIENTRY IOP_Read(int port, LPSTR buffer, int count)
{
BOOL fReadStat ;
DWORD dwError;
DWORD dwBytesRead ;
fReadStat = ReadFile( COMDEV[port], buffer, count,
&dwBytesRead, &READ_OS ) ;
if (!fReadStat)
{
if (GetLastError() == ERROR_IO_PENDING)
{
while(!GetOverlappedResult( COMDEV[port],
&READ_OS, &dwBytesRead, TRUE ))
{
dwError = GetLastError() ;
if (dwError == ERROR_IO_INCOMPLETE)
return (dwBytesRead) ;
else
return (FAIL) ;
}
}
else
return (FAIL) ;
}
return (dwBytesRead) ;
}
------解决方案--------------------
作用就是返回实际读取的数据字节数,因为“文件”操作中经常出现实际读取的字节数与想读取的字节数不同的情况。
------解决方案--------------------
返回实际读到的字节数。在串口通信中,并非所有操作都能成功,你可能想读取100个字节,但是,如果串口线断开或者其他原因,你实际只读到10个字节,因此需要知道实际读取的字节数,在你的程序中进行判断,以确定操作是否成功。