[C] Lecture éronnée de valeurs dans le registre

Résolu
cs_nitrique Messages postés 344 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 4 avril 2011 - 3 oct. 2005 à 17:09
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 3 oct. 2005 à 17:49
Bonjour,

Je travaille en Dev C et j'aimerais lister les valeurs des ports com dans le registre.
voici mon code:

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include

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)

Ou me suis-je trompé ?

David, à VERSAILLES

3 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
3 oct. 2005 à 17:34
NNom=25 et NVal=25 sont à mettre dans la boucle avant chaque appel de RegEnumValue.

ciao...
BruNews, MVP VC++
3
cs_nitrique Messages postés 344 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 4 avril 2011 1
3 oct. 2005 à 17:43
Bin ça alors !!!

En effet, ça marche... Des fois, c'est encore plus con que ce qu'on immaginait de plus con.

David, à VERSAILLES
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
3 oct. 2005 à 17:49
Seulement logique, ce sont des params 'IN OUT'.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous