unsigned long _stdcall CJCCHelperDlg::CommWorker(void* p)
{
    unsigned long cnt;
    while (1)
    {
        unsigned long wres = WaitForSingleObject(evWrite, INFINITE);
        if (WAIT_OBJECT_0 == wres)
        {
            TRACE("begin xmit...\r\n");
            WriteFile(HDLComm, m_xbuf, 40, &cnt, NULL);
            TRACE("begin recv...\r\n");
            if (!ReadFile(HDLComm, m_rbuf, 100, &cnt, NULL)) TRACE("File read failed!");
            ::PostMessage(MyWnd, MSG_CMM_NOTIFY, 0, 0);
        }
    }
    return 0;
}主线程在需要写串口的时候,填写缓冲区(m_xbuf)给出一个信号,这个线程收到就送出这个40字节的包,这一步没错.
然后从串口读大约40字节的包,目标一个有100字节的缓冲区(m_rbuf),也能收到数据,但收到的包的破坏了的.为什么呀?