RegEnumValue() pour la lecture de registre
Salut à tous ,
Je viens vous exposer mon problème...
Je souhaite récupérer les port COM disponible via le registre.
Donc j'ai fait un petit bout de code :
EDIT : modification du code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
HKEY key;
RegOpenKeyEx(HKEY_LOCAL_MACHINE,"HARDWARE\\DEVICEMAP\\SERIALCOMM",0,KEY_ALL_ACCESS,&key);
//définition des variables local
unsigned long NNom=25,NVal=25;
char *Valeur=new char[25],*NomVal=new char[25];
int Ret,i=0;
//parcourt la partie concernee de la base de registre
do {
//ouverture d'une clé
NNom=25;
NVal=25;
Ret=RegEnumValue(key,i,NomVal,&NNom,0,0,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(key); |
et cela me retourne :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
COM6 \Device\porte6
COM7 \Device\porte7
COM10 \Device\porte10
COM11 \Device\porte11
COM12 \Device\porte12
COM13 \Device\porte13
COM14 \Device\porte14
COM20 \Device\porte20
COM21 \Device\porte21
COM22 \Device\porte22
COM3 Winachsf0
COM3 Winachsf0
COM3 Winachsf0 |
alors que cela devrais m'afficher quelque chose dans le genre :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
COM1\Device\MosChipQuadSerial0
COM2 \Device\MosChipQuadSerial1
COM6 \Device\porte6
COM7 \Device\porte7
COM10 \Device\porte10
COM11 \Device\porte11
COM12 \Device\porte12
COM13 \Device\porte13
COM14 \Device\porte14
COM20 \Device\porte20
COM21 \Device\porte21
COM22 \Device\porte22
COM3 Winachsf0 |
Donc mon probleme est que la fonction ne me retourne pas les port virtuelle.. Ceux créés par mon port USB!
Si quelqu'un connait la solution pour voir les PORT COM virtuelle qui pourtant sont affiché dans le registre ! merci
Merci d'avance aux personnes qui regarderons ;)