Quello che ho capito è che per usare i thread devo scrivere una cosa del genere:

codice:
DWORD WINAPI ThreadProc (LPVOID lpParameter)
{
  ...

  qui scrivo la funzione che deve essere "threaderata" di nome "ThreadProc"
  ...
}

int main (int argc, char* argv[])
{
  ...

  scrivo il programma e per far eseguiere la funzione ThreadProc scrivo:

  DWORD ID1;
  HANDLE funz = CreateThread(NULL, 0, ThreadProc, &Param, 0, &ID1);

  ...
}
Giusto?
Ora mi chiedo se le funzioni che devo threaderare sono le funzioni di scrittura e lettura su seriale, che hanno parametri in ingresso, così come le ho scritte nel programma, come si legano le cose?
Devo scrivere una cose del genere:

codice:
DWORD WINAPI write (LPVOID lpParameter)
{
 BOOL write(HANDLE hComm, char * buf)
 {
  DWORD nNumberOfBytesToWrite = strlen(buf);
  DWORD NumberOfBytesWritten;
  LPOVERLAPPED lpOverlapped = NULL;
  BOOL res = WriteFile(
             hComm, 
             buf, 
	nNumberOfBytesToWrite, 
	&NumberOfBytesWritten, 
	lpOverlapped 
	);
   if (res)
    cout << "Scrittura OK " << endl;
   else
    {
      DWORD err = GetLastError();
      cout << "Errore in Scrittura " << err;
    }

   return res;
  }

}
Non credo che funzioni così.
Non riesco a capire come conciliare le cose.
Grazie
Ciccio