Ciao _Achille_ grazie per i consigli, comunque ho risolto ed effettivamente ho abbandonato quella soluzione :P posto qui di seguito il codice che ho scritto, funziona bene (se trovate eventuali errori/aggiustamenti fatemi sepere naturalmente)
codice:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

int main(){

	//	apro porta seriale in lettura e scrittura
	HANDLE hCom;
	hCom = CreateFile("COM9", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
	//controllo (assolutamente obbligatorio)
	if(hCom == INVALID_HANDLE_VALUE){
		printf("errore durante l'apertura della porta\n");
		return -1;
	}

	printf("porta aperta\n");

	//leggo i parametri correnti
	DCB myDCB;
	memset(&myDCB, 0, sizeof(DCB));
	BOOL Ok = GetCommState(hCom, &myDCB);
	printf("BaudRate: %d \n", myDCB.BaudRate);
	printf("ByteSize: %d \n", myDCB.ByteSize);
	printf("Parity: %d \n", myDCB.Parity);
	printf("StopBits: %d \n", myDCB.StopBits);

	//Per parità e bit di stop, otteniamo le define di Windows. Per una visualizzazione completa, dovremmo creare degli switch. Esempio per i bit di stop:

//	switch(myDCB.StopBits)
//	{
//	case ONESTOPBIT:
//	     printf("ONESTOPBIT\n");
//	     break;
//	case ONE5STOPBITS:
//	     printf("ONE5STOPBITS\n");
//	     break;
//	case TWOSTOPBITS:
//	     printf("TWOSTOPBITS\n");
//	     break;
//	}

	//settare la velocità della porta a 9600 baud
	myDCB.BaudRate = CBR_9600;
	Ok = SetCommState(hCom, &myDCB);

	//aggiungiamo la scrittura della stringa
	char msg[]="a";
	DWORD NumeroByteScritti = 0;
	DWORD NumeroByteDaScrivere = strlen(msg);
	Ok = WriteFile(hCom, msg, NumeroByteDaScrivere, &NumeroByteScritti, NULL);
	printf("Scritto %d bytes \n", NumeroByteScritti);

	system("PAUSE");

	//mi metto in "polling" e leggo (il ciclo si interrompe con un tasto)
	printf("lettura\n\n");
	for(;;){
		char c;
		DWORD NumeroByteLetti;
		Ok = ReadFile(hCom, &c, 1, &NumeroByteLetti, NULL); //NB l'1 sta a indicare che legge un carattere alla volta (compreso il newline "\n")
		if(NumeroByteLetti > 0)
			printf("%c", c);

		if(c=='a'){
			printf("TROVATO!\n");
			break;
		}

		int tastouscita = _kbhit();
		if(tastouscita)
			break;
	}

	CloseHandle(hCom);
	system("PAUSE");

	return 0;
}
Come dicevo questo codice funziona bene (o per lo meno a me non da problemi), l'unica cosa che non mi torna è che per farlo funzionare correttamente devo collegare Arduino al pc, e aprire il SerialMonitor dal suo IDE. Dopodichè il C fa tutto a dovere, altrimenti da una marea di simboli strani secondo voi che può essere?