Detectar automáticamente el puerto COM que usa Arduino

Hola,
estoy intentando comunicarme entre el Arduino y un PC con un programa escrito en C: desde el PC se le envía una cadena de caracteres, y el Arduino contesta con otra cadena. La comunicación se establece sin problema si paso al programa el nombre del puerto (ttyUSB0 en Ubuntu, COM4 en XP). En Ubuntu no tengo problema para que el programa C detecte automáticamente el puerto, con una rutina que va intentando abrir ttyUSB0, ttyUSB1, ttyUSB2... Pero en XP tengo dos puertos: COM1 ("Puerto de comunicaciones") y COM4 ("USB Serial Port", es el de Arduino). La rutina me abre COM1
¿Conocéis algún modo de que desde el programa pueda distinguir un puerto del otro? Estoy utilizando funciones del WIN32 API (CreateFile, WriteFile, ReadFile)

Puedes probar a leer el nombre de cada puerto, el "USB Serial Port" o el VID y PID, pero no podrías distinguir entre un Arduino y cualquier otro adaptador de USB a serie de FTDI, a no ser que crees algún protocolo y mandes por ejemplo una 'B' y el Arduino te tenga que responder 'A' o alguna cosa similar.

Gracias chiva
Eso voy a hacer, ir probando a abrir sucesivamente COM0, COM1, COM2..., y verificar en cuál responde un determinado Arduino a un código preestablecido para él.