请帮小弟我看看这个字符串处理的有关问题,多谢

求助:请各位大哥帮我看看这个字符串处理的问题,谢谢!
//读取串口   dwBufferLength个字符到   Buffer   返回实际读到的字符数     可读任意数据
  DWORD   Read(LPVOID   Buffer,   DWORD   dwBufferLength,   DWORD   dwWaitTime   =   10)
  {
    if(!IsOpen())
      return   0;
   
    COMSTAT     Stat;
    DWORD   dwError;
   
    if(::ClearCommError(_hCommHandle,   &dwError,   &Stat)   &&   dwError   >   0)
    {
      ::PurgeComm(_hCommHandle,   PURGE_RXABORT   |   PURGE_RXCLEAR);
      return   0;
    }
   
    if(!Stat.cbInQue)   //   缓冲区无数据
      return   0;
   
    unsigned   long   uReadLength   =   0;
   
    dwBufferLength   =   dwBufferLength   >   Stat.cbInQue   ?   Stat.cbInQue   :   dwBufferLength;
   
    if(!::ReadFile(_hCommHandle,   Buffer,   dwBufferLength,   &uReadLength,   &_ReadOverlapped))  
    {
      if(::GetLastError()   ==   ERROR_IO_PENDING)  
      {
        WaitForSingleObject(_ReadOverlapped.hEvent,   dwWaitTime);   //   结束异步I/O
        if(!::GetOverlappedResult(_hCommHandle,   &_ReadOverlapped,   &uReadLength,   false))
        {
          if(::GetLastError()   !=   ERROR_IO_INCOMPLETE)
            uReadLength   =   0;
        }
      }
      else
        uReadLength   =   0;
    }
   
    return   uReadLength;
  }
  //读取串口   dwBufferLength   -   1   个字符到   szBuffer   返回ANSI   C   模式字符串指针   适合一般字符通讯
  char   *   ReadString(char   *szBuffer,   DWORD   dwBufferLength,   DWORD   dwWaitTime   =   20)
  {
    unsigned   long   uReadLength   =   Read(szBuffer,   dwBufferLength   -   1,   dwWaitTime);
    szBuffer[uReadLength]   =   '\0 ';
    return   szBuffer;
  }
  //写串口   可写任意数据   "abcd "   or   "\x0\x1\x2 "
  DWORD   Write(LPVOID   Buffer,   DWORD   dwBufferLength)
  {
    if(!IsOpen())
      return   0;
   
    DWORD   dwError;
   
    if(::ClearCommError(_hCommHandle,   &dwError,   NULL)   &&   dwError   >   0)  
      ::PurgeComm(_hCommHandle,   PURGE_TXABORT   |   PURGE_TXCLEAR);  
   
    unsigned   long   uWriteLength   =   0;
   
    if(!::WriteFile(_hCommHandle,   Buffer,   dwBufferLength,   &uWriteLength,   &_WriteOverlapped))
      if(::GetLastError()   !=   ERROR_IO_PENDING)
        uWriteLength   =   0;