Das ansprechen des COMPorts unter c ist eigentlich recht einfach.

Code:
//===========================================================================//
//  Copyright 01.05 Michael Sonst für Systeme Helmholz GmbH, Weisendorf      //
//                                                                           //
//  Autor        :  Michael Sonst                                            //
//  Version      :  1.1                                                      //
//  Erstellt am  :  21.01.2005                                               //
//                                                                           //
//===========================================================================//
s8 IsWinNT()
{
  OSVERSIONINFO OSinfo;
  OSinfo.dwOSVersionInfoSize = sizeof(OSinfo);
  GetVersionEx(&OSinfo);
  return(OSinfo.dwPlatformId == VER_PLATFORM_WIN32_NT);
}
//---------------------------------------------------------------------------
void __fastcall EnumComPorts(TComboBox* combobox)
{
  if(combobox==NULL)return;
  combobox->Clear();

  s8 Name[16];
  HANDLE hCom;
  u8 maxport;

  if(IsWinNT())maxport=99;
  else maxport=9;

  for(s32 i=0; i<maxport; i++){
    Name[0] = '\0';
    strcat(Name, "COM");  strcat(Name, IntToStr(i).c_str());
    hCom = CreateFile ( Name,                                     //  name of comport
                (GENERIC_READ | GENERIC_WRITE),                   //  access mode
                0,                                                //  only exclusive open a comport
                NULL,                                             //  security none
                OPEN_EXISTING,                                    //  only if exist
                FILE_FLAG_OVERLAPPED,                             //  open with overlapped structure  FILE_ATTRIBUTE_NORMAL
                0);                                               //  always zero

    if(hCom != INVALID_HANDLE_VALUE){
      combobox->AddItem("COM"+IntToStr(i), (TObject*)i);  //abuse TObject
      CloseHandle(hCom);
    }
  }
}
Danach kannst du den Filedeskriptor wie eine Datei verwenden.
Schau dir doch mal die im quellcode verfügbaren Komponenten an.
(www.torry.com)

Gruss
Michael