title: Set DCB Fails When Attempting to Configure COM Port
body: <p>I'm trying to write a C++ MFC application that uses the serial port (e.g. COM8).  Every time I try to set the DCB it fails.  If someone can point out what I'm doing wrong, I'd really appreciate it.</p>
  
  <pre><code>DCB dcb = {0};
  
  dcb.DCBlength = sizeof(DCB);
  port.Insert( 0, L"\\\\.\\" );
  
  m_hComm = CreateFile(
      port,                           // Virtual COM port
      GENERIC_READ | GENERIC_WRITE,   // Access: Read and write
      0,                              // Share: No sharing
      NULL,                           // Security: None
      OPEN_EXISTING,                  // The COM port already exists.
      FILE_FLAG_OVERLAPPED,           // Asynchronous I/O.
      NULL                            // No template file for COM port.
      );
  
  if ( m_hComm == INVALID_HANDLE_VALUE )
  {
      TRACE(_T("Unable to open COM port."));
      ThrowException();
  }
  
  if ( !::GetCommState( m_hComm, &amp;dcb ) )
  {
      TRACE(_T("CSerialPort : Failed to get the comm state - Error: %d"), GetLastError());
      ThrowException();
  }
  
  dcb.BaudRate = 38400;               // Setup the baud rate.
  dcb.Parity = NOPARITY;              // Setup the parity.
  dcb.ByteSize = 8;                   // Setup the data bits.
  dcb.StopBits = 1;                   // Setup the stop bits.
  
  if ( !::SetCommState( m_hComm, &amp;dcb ) ) // &lt;- Fails here.
  {
      TRACE(_T("CSerialPort : Failed to set the comm state - Error: %d"), GetLastError());
      ThrowException();
  }
  </code></pre>
  
  <p>Thanks.</p>
  
  <p><strong>Additional Info:</strong> The generated error code is 87: "The parameter is incorrect."
  Probably Microsoft's <em>most</em> useful error-code. j/k</p>