串行通讯编程WriteFile和SetCommState失败的有关问题

串行通讯编程WriteFile和SetCommState失败的问题
第一问:CreateFile函数第6个参数,如果使用FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED的话,WriteFile函数就会return 0,否则如果CreateFile函数第6个参数使用0的话就可以发送。
m_hCom = CreateFile(port,
GENERIC_READ|GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,//FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,                  
NULL);
if (WriteFile(m_hCom,writeSz,sizeBuffer,&length,NULL) == 0)
{
cout<<"return 0"<<endl;
}
else 
{
cout<<"发送出去的字符ReadChar="<<writeSz<<endl;
}
第二问:SetCommState函数调用失败,调用GetLastError返回值是87,是参数设置错误的意思,我不明白这个函数哪里错了。
if (SetCommState(m_hCom,&m_Dcb)==0)
{
int error = 0;
error = GetLastError();

//return false;

}
串口编程 

------解决方案--------------------
推荐使用portmon软件辅助调试串口通讯程序。
------解决方案--------------------
WriteFile==0是因为函数操作未完成,去看一下MSDN
87是参数设置错误,你要对初始化的时候全部代码仔细检查一次