int main(int argc, char *argv[])
{
HKEY Retour;
RegOpenKeyEx(HKEY_LOCAL_MACHINE,"HARDWARE\\DEVICEMAP\\SERIALCOMM",0,KEY_READ,&Retour);
//définition des variables local
unsigned long Ty=0,NNom=25,NVal=25;
char etat[25],Valeur[25],NomVal[25];
int Ret,i=0;
void* hSer; // création de l'objet com
//parcourt la partie concernee de la base de registre
do {
//ouverture d'une clé
Ret=RegEnumValue(Retour,i,NomVal,&NNom,0,&Ty,Valeur,&NVal);
//si pas d'erreur
if (Ret != ERROR_NO_MORE_ITEMS) {
printf("%s %s\n",Valeur,NomVal); // affichage
}
i++;
} while (Ret != ERROR_NO_MORE_ITEMS);
//fermeture de la base de registre
RegCloseKey(Retour); // */
On peut difficilement faire plus simple !
Ca marche bizzarement:
Ca liste bien mes deux ports physique mais pas mon virtuel (Périphérique usb qui simule port COM).
En fait j'ai ça:
COM1 \Device\Serial0
COM2 \Device\Serial (à la place de \Device\Serial1 mais c'est pas grave)
COM2 \Device\Serial (une deuxième fois)
Au lieu de:
COM1 \Device\Serial0
COM2 \Device\Serial
COM5 \Device\slabser0 (Qui est bien présent comme ça dans la base)