Bonjour tout le monde!

J'essaie de récupérer plusieurs valeurs dans la base de registre avec la fonction RegQueryValueEx.

Voici la fonction:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
BOOL RegValue(HKEY hKeyRoot, LPCTSTR lpSubKey,DWORD Size)
{
	LONG Error;
	Error=RegQueryValueEx(hKeyRoot,lpSubKey,0,0,(LPBYTE)gPath,&Size);
 	if(Error==ERROR_SUCCESS)
	{
  		return(TRUE);
	}
	else
	{
		return(FALSE);
	}
}
Je l'appelle ainsi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
LONG Error;
char gPath[512];
 
Error = RegOpenKeyEx (HKEY_LOCAL_MACHINE, TEXT("SYSTEM\\CurrentControlSet\\Services\\Disk\\Enum"), 0, KEY_QUERY_VALUE, &hKeyDisks);
   if (Error == ERROR_SUCCESS)
{
...   
   sprintf_s (gDiskName, 32, "%u", DiskNumber);
   Size = sizeof (gPath);
   Error=RegValue(hKeyDisks,gDiskName,Size);
...
}
avec DiskNumber qui est un entier qui va de 0 à n.

Le problème est que la valeur retournée par RegQueryValueEx(hKeyRoot,lpSubKey,0,0,(LPBYTE)gPath,&Size); dans la fonction RegValue est "ERROR_FILE_NOT_FOUND" alors que si je mets TEXT("0") à la place de "lpSubKey", la fonction lit bien la valeur de la clé "0".
Comment faire pour que cet argument soit une variable?

Merci d'avance