@@ -987,6 +987,16 @@ LONG RegQueryMultipleValuesW(
987987 HKEY hKey, PVALENTW valList, DWORD numVals, LPWSTR valueBuffer, LPDWORD totalSize
988988);
989989
990+ LONG RegEnumValueA(
991+ HKEY hKey, DWORD dwIndex, LPSTR lpValueName, LPDWORD lpcchValueName, LPDWORD lpReserved,
992+ LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData
993+ );
994+
995+ LONG RegEnumValueW(
996+ HKEY hKey, DWORD dwIndex, LPWSTR lpValueName, LPDWORD lpcchValueName, LPDWORD lpReserved,
997+ LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData
998+ );
999+
9901000void test_registry_queries(HKEY hKey) {
9911001 {
9921002 char data[256];
@@ -1042,4 +1052,33 @@ void test_registry_queries(HKEY hKey) {
10421052 sink(data); // clean
10431053 sink(*data); // $ ir
10441054 }
1055+
1056+ {
1057+ BYTE data[256];
1058+ DWORD dataSize = sizeof(data);
1059+ DWORD type;
1060+ RegGetValueA(hKey, "subkey", "value", 0, &type, data, &dataSize);
1061+ sink(data); // clean
1062+ sink(*data); // $ MISSING: ir
1063+ }
1064+ {
1065+ char valueName[256];
1066+ DWORD valueNameSize = sizeof(valueName);
1067+ BYTE data[256];
1068+ DWORD dataSize = sizeof(data);
1069+ DWORD type;
1070+ RegEnumValueA(hKey, 0, valueName, &valueNameSize, nullptr, &type, data, &dataSize);
1071+ sink(data); // clean
1072+ sink(*data); // $ MISSING: ir
1073+ }
1074+ {
1075+ wchar_t valueName[256];
1076+ DWORD valueNameSize = sizeof(valueName) / sizeof(*valueName);
1077+ BYTE data[256];
1078+ DWORD dataSize = sizeof(data);
1079+ DWORD type;
1080+ RegEnumValueW(hKey, 0, valueName, &valueNameSize, nullptr, &type, data, &dataSize);
1081+ sink(data); // clean
1082+ sink(*data); // $ MISSING: ir
1083+ }
10451084}
0 commit comments