void GetComList_256(CComboBox* pComnum)
{
	  CString  strCom, strComOpen;
	  int  nCom = 0;
	  int  count = 0;
	  HANDLE    hCom;
	  pComnum->ResetContent();//组合框清空
	   do
	   {
		   nCom++;
		     strCom.Format(_T("COM%d"), nCom);
		     strComOpen.Format(_T("\\\\.\\COM%d"), nCom);
  hCom = CreateFile(strComOpen, GENERIC_READ | GENERIC_WRITE, 0, NULL,OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);//如果返回不为空则此串口可用
		     if (INVALID_HANDLE_VALUE == hCom)
		    {
			    DWORD error = ::GetLastError();//取得错误信息 
		    }
		     else
		    {
			    pComnum->AddString(strCom);
			    count++;
		    }
		     CloseHandle(hCom);
	  } while (nCom < 256);
	 pComnum->SetCurSel(0);
}
原文:http://www.cnblogs.com/judes/p/6005747.html