str_byte_len = (string ? lstrlenA(string) : 0) + 1;
lok(type == REG_SZ, "RegQueryValueExA/1 returned type %d\n", type);
- lok(cbData == full_byte_len || cbData == str_byte_len /* Win9x */,
- "cbData=%d instead of %d or %d\n", cbData, full_byte_len, str_byte_len);
+ lok(cbData == full_byte_len, "cbData=%d instead of %d or %d\n", cbData, full_byte_len, str_byte_len);
value = HeapAlloc(GetProcessHeap(), 0, cbData+1);
memset(value, 0xbd, cbData+1);
if (!string)
{
/* When cbData == 0, RegQueryValueExA() should not modify the buffer */
- lok(*value == 0xbd || (cbData == 1 && *value == '\0') /* Win9x */,
- "RegQueryValueExA overflowed: cbData=%u *value=%02x\n", cbData, *value);
+ lok(*value == 0xbd, "RegQueryValueExA overflowed: cbData=%u *value=%02x\n", cbData, *value);
}
else
{
/* only REG_SZ is supported on NT*/
ret = RegSetValueA(hkey_main, NULL, REG_BINARY, string2A, sizeof(string2A));
- /* NT: ERROR_INVALID_PARAMETER, 9x: ERROR_SUCCESS */
- ok(ret == ERROR_INVALID_PARAMETER || broken(ret == ERROR_SUCCESS),
- "got %d (expected ERROR_INVALID_PARAMETER or ERROR_SUCCESS)\n", ret);
+ ok(ret == ERROR_INVALID_PARAMETER, "got %d (expected ERROR_INVALID_PARAMETER)\n", ret);
ret = RegSetValueA(hkey_main, NULL, REG_EXPAND_SZ, string2A, sizeof(string2A));
- /* NT: ERROR_INVALID_PARAMETER, 9x: ERROR_SUCCESS */
- ok(ret == ERROR_INVALID_PARAMETER || broken(ret == ERROR_SUCCESS),
- "got %d (expected ERROR_INVALID_PARAMETER or ERROR_SUCCESS)\n", ret);
+ ok(ret == ERROR_INVALID_PARAMETER, "got %d (expected ERROR_INVALID_PARAMETER)\n", ret);
ret = RegSetValueA(hkey_main, NULL, REG_MULTI_SZ, string2A, sizeof(string2A));
- /* NT: ERROR_INVALID_PARAMETER, 9x: ERROR_SUCCESS */
- ok(ret == ERROR_INVALID_PARAMETER || broken(ret == ERROR_SUCCESS),
- "got %d (expected ERROR_INVALID_PARAMETER or ERROR_SUCCESS)\n", ret);
+ ok(ret == ERROR_INVALID_PARAMETER, "got %d (expected ERROR_INVALID_PARAMETER)\n", ret);
/* Test RegSetValueExA with a 'zero-byte' string (as Office 2003 does).
* Surprisingly enough we're supposed to get zero bytes out of it.
test_hkey_main_Value_A(name2A, string2A, sizeof(string2A));
test_hkey_main_Value_W(name2W, string2W, sizeof(string2W));
- /* 9x doesn't support W-calls, so don't test them then */
- if(GLE == ERROR_CALL_NOT_IMPLEMENTED) return;
-
if (0)
{
/* Crashes on NT4, Windows 2000 and XP SP1 */
strcpy( data, "xxxxxxxxxx" );
res = RegEnumValueA( test_key, 0, value, &val_count, NULL, &type, (LPBYTE)data, &data_count );
ok( res == ERROR_MORE_DATA, "expected ERROR_MORE_DATA, got %d\n", res );
- /* Win9x returns 2 as specified by MSDN but NT returns 3... */
- ok( val_count == 2 || val_count == 3, "val_count set to %d\n", val_count );
+ ok( val_count == 3, "val_count set to %d\n", val_count );
ok( data_count == 7 || broken( data_count == 8 ), "data_count set to %d instead of 7\n", data_count );
ok( type == REG_SZ, "type %d is not REG_SZ\n", type );
/* v5.1.2600.0 (XP Home and Professional) does not touch value or data in this case */
size = 0xdeadbeef;
ret = RegQueryValueExA(HKEY_CLASSES_ROOT, "Nonexistent Value", NULL, &type, NULL, &size);
ok(ret == ERROR_FILE_NOT_FOUND, "expected ERROR_FILE_NOT_FOUND, got %d\n", ret);
- /* the type parameter is cleared on Win9x, but is set to a random value on
- * NT, so don't do that test there. The size parameter is left untouched on Win9x
- * but cleared on NT+, this can be tested on all platforms.
- */
- if (GetVersion() & 0x80000000)
- {
- ok(type == 0, "type should have been set to 0 instead of 0x%x\n", type);
- ok(size == 0xdeadbeef, "size should have been left untouched (0xdeadbeef)\n");
- }
- else
- {
- trace("test_query_value_ex: type set to: 0x%08x\n", type);
- ok(size == 0, "size should have been set to 0 instead of %d\n", size);
- }
+ ok(size == 0, "size should have been set to 0 instead of %d\n", size);
size = sizeof(buffer);
ret = RegQueryValueExA(HKEY_CLASSES_ROOT, "Nonexistent Value", NULL, &type, buffer, &size);
ok(hkResult != NULL, "expected hkResult != NULL\n");
hkPreserve = hkResult;
- /* these tests fail on Win9x, but we want to be compatible with NT, so
- * run them if we can */
- if (!(GetVersion() & 0x80000000))
- {
- /* open same key twice */
- ret = RegOpenKeyA(HKEY_CURRENT_USER, "Software\\Wine\\Test", &hkResult);
- ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %d\n", ret);
- ok(hkResult != hkPreserve, "epxected hkResult != hkPreserve\n");
- ok(hkResult != NULL, "hkResult != NULL\n");
- RegCloseKey(hkResult);
-
- /* open nonexistent key
- * check that hkResult is set to NULL
- */
- hkResult = hkPreserve;
- ret = RegOpenKeyA(HKEY_CURRENT_USER, "Software\\Wine\\Nonexistent", &hkResult);
- ok(ret == ERROR_FILE_NOT_FOUND, "expected ERROR_FILE_NOT_FOUND, got %d\n", ret);
- ok(hkResult == NULL, "expected hkResult == NULL\n");
-
- /* open the same nonexistent key again to make sure the key wasn't created */
- hkResult = hkPreserve;
- ret = RegOpenKeyA(HKEY_CURRENT_USER, "Software\\Wine\\Nonexistent", &hkResult);
- ok(ret == ERROR_FILE_NOT_FOUND, "expected ERROR_FILE_NOT_FOUND, got %d\n", ret);
- ok(hkResult == NULL, "expected hkResult == NULL\n");
-
- /* send in NULL lpSubKey
- * check that hkResult receives the value of hKey
- */
- hkResult = hkPreserve;
- ret = RegOpenKeyA(HKEY_CURRENT_USER, NULL, &hkResult);
- ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %d\n", ret);
- ok(hkResult == HKEY_CURRENT_USER, "expected hkResult == HKEY_CURRENT_USER\n");
-
- /* send empty-string in lpSubKey */
- hkResult = hkPreserve;
- ret = RegOpenKeyA(HKEY_CURRENT_USER, "", &hkResult);
- ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %d\n", ret);
- ok(hkResult == HKEY_CURRENT_USER, "expected hkResult == HKEY_CURRENT_USER\n");
-
- /* send in NULL lpSubKey and NULL hKey
- * hkResult is set to NULL
- */
- hkResult = hkPreserve;
- ret = RegOpenKeyA(NULL, NULL, &hkResult);
- ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %d\n", ret);
- ok(hkResult == NULL, "expected hkResult == NULL\n");
- }
+ /* open same key twice */
+ ret = RegOpenKeyA(HKEY_CURRENT_USER, "Software\\Wine\\Test", &hkResult);
+ ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %d\n", ret);
+ ok(hkResult != hkPreserve, "epxected hkResult != hkPreserve\n");
+ ok(hkResult != NULL, "hkResult != NULL\n");
+ RegCloseKey(hkResult);
+
+ /* open nonexistent key
+ * check that hkResult is set to NULL
+ */
+ hkResult = hkPreserve;
+ ret = RegOpenKeyA(HKEY_CURRENT_USER, "Software\\Wine\\Nonexistent", &hkResult);
+ ok(ret == ERROR_FILE_NOT_FOUND, "expected ERROR_FILE_NOT_FOUND, got %d\n", ret);
+ ok(hkResult == NULL, "expected hkResult == NULL\n");
+
+ /* open the same nonexistent key again to make sure the key wasn't created */
+ hkResult = hkPreserve;
+ ret = RegOpenKeyA(HKEY_CURRENT_USER, "Software\\Wine\\Nonexistent", &hkResult);
+ ok(ret == ERROR_FILE_NOT_FOUND, "expected ERROR_FILE_NOT_FOUND, got %d\n", ret);
+ ok(hkResult == NULL, "expected hkResult == NULL\n");
+
+ /* send in NULL lpSubKey
+ * check that hkResult receives the value of hKey
+ */
+ hkResult = hkPreserve;
+ ret = RegOpenKeyA(HKEY_CURRENT_USER, NULL, &hkResult);
+ ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %d\n", ret);
+ ok(hkResult == HKEY_CURRENT_USER, "expected hkResult == HKEY_CURRENT_USER\n");
+
+ /* send empty-string in lpSubKey */
+ hkResult = hkPreserve;
+ ret = RegOpenKeyA(HKEY_CURRENT_USER, "", &hkResult);
+ ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %d\n", ret);
+ ok(hkResult == HKEY_CURRENT_USER, "expected hkResult == HKEY_CURRENT_USER\n");
+
+ /* send in NULL lpSubKey and NULL hKey
+ * hkResult is set to NULL
+ */
+ hkResult = hkPreserve;
+ ret = RegOpenKeyA(NULL, NULL, &hkResult);
+ ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %d\n", ret);
+ ok(hkResult == NULL, "expected hkResult == NULL\n");
/* only send NULL hKey
* the value of hkResult remains unchanged
/* beginning backslash character */
ret = RegOpenKeyA(HKEY_CURRENT_USER, "\\Software\\Wine\\Test", &hkResult);
ok(ret == ERROR_BAD_PATHNAME || /* NT/2k/XP */
- ret == ERROR_FILE_NOT_FOUND || /* Win9x,ME */
broken(ret == ERROR_SUCCESS), /* wow64 */
"expected ERROR_BAD_PATHNAME or ERROR_FILE_NOT_FOUND, got %d\n", ret);
if (!ret) RegCloseKey(hkResult);
hkResult = NULL;
ret = RegOpenKeyExA(HKEY_CLASSES_ROOT, "\\clsid", 0, KEY_QUERY_VALUE, &hkResult);
ok(ret == ERROR_SUCCESS || /* 2k/XP */
- ret == ERROR_BAD_PATHNAME || /* NT */
- ret == ERROR_FILE_NOT_FOUND /* Win9x,ME */
- , "expected ERROR_SUCCESS, ERROR_BAD_PATHNAME or ERROR_FILE_NOT_FOUND, got %d\n", ret);
+ ret == ERROR_BAD_PATHNAME, /* NT */
+ "expected ERROR_SUCCESS, ERROR_BAD_PATHNAME or ERROR_FILE_NOT_FOUND, got %d\n", ret);
RegCloseKey(hkResult);
/* WOW64 flags */
ret = RegCreateKeyExA(hkey_main, "Volatile", 0, NULL, REG_OPTION_VOLATILE, KEY_ALL_ACCESS, NULL, &hkey1, NULL);
ok(!ret, "RegCreateKeyExA failed with error %d\n", ret);
ret = RegCreateKeyExA(hkey1, "Subkey2", 0, NULL, 0, KEY_ALL_ACCESS, NULL, &hkey2, NULL);
- ok(ret == ERROR_CHILD_MUST_BE_VOLATILE || broken(!ret), /* win9x */
- "RegCreateKeyExA failed with error %d\n", ret);
+ ok(ret == ERROR_CHILD_MUST_BE_VOLATILE, "RegCreateKeyExA failed with error %d\n", ret);
if (!ret) RegCloseKey( hkey2 );
ret = RegCreateKeyExA(hkey1, "Subkey2", 0, NULL, REG_OPTION_VOLATILE, KEY_ALL_ACCESS, NULL, &hkey2, NULL);
ok(!ret, "RegCreateKeyExA failed with error %d\n", ret);
ret = RegQueryValueExA(subkey, "stringtest", NULL, NULL, buffer, &outsize);
ok(ret == ERROR_MORE_DATA, "RegQueryValueExA returned: %d\n", ret);
- /* Off-by-two RegSetValueExA -> no trailing '\0', except on Win9x */
+ /* Off-by-two RegSetValueExA -> no trailing '\0' */
insize=sizeof(string)-2;
ret = RegSetValueExA(subkey, "stringtest", 0, REG_SZ, (BYTE*)string, insize);
ok(ret == ERROR_SUCCESS, "RegSetValueExA failed: %d\n", ret);
outsize=0;
ret = RegQueryValueExA(subkey, "stringtest", NULL, NULL, NULL, &outsize);
ok(ret == ERROR_SUCCESS, "RegQueryValueExA failed: %d\n", ret);
- ok(outsize == insize || broken(outsize == sizeof(string)) /* Win9x */,
- "wrong size %u != %u\n", outsize, insize);
+ ok(outsize == insize, "wrong size %u != %u\n", outsize, insize);
- if (outsize == insize)
- {
- /* RegQueryValueExA may return a string with no trailing '\0' */
- outsize=insize;
- memset(buffer, 0xbd, sizeof(buffer));
- ret = RegQueryValueExA(subkey, "stringtest", NULL, NULL, buffer, &outsize);
- ok(ret == ERROR_SUCCESS, "RegQueryValueExA failed: %d\n", ret);
- ok(outsize == insize, "wrong size: %u != %u\n", outsize, insize);
- ok(memcmp(buffer, string, outsize) == 0, "bad string: %s/%u != %s\n",
- wine_debugstr_an((char*)buffer, outsize), outsize, string);
- ok(buffer[insize] == 0xbd, "buffer overflow at %u %02x\n", insize, buffer[insize]);
-
- /* RegQueryValueExA adds a trailing '\0' if there is room */
- outsize=insize+1;
- memset(buffer, 0xbd, sizeof(buffer));
- ret = RegQueryValueExA(subkey, "stringtest", NULL, NULL, buffer, &outsize);
- ok(ret == ERROR_SUCCESS, "RegQueryValueExA failed: %d\n", ret);
- ok(outsize == insize, "wrong size: %u != %u\n", outsize, insize);
- ok(memcmp(buffer, string, outsize) == 0, "bad string: %s/%u != %s\n",
- wine_debugstr_an((char*)buffer, outsize), outsize, string);
- ok(buffer[insize] == 0, "buffer overflow at %u %02x\n", insize, buffer[insize]);
-
- /* RegEnumValueA may return a string with no trailing '\0' */
- outsize=insize;
- memset(buffer, 0xbd, sizeof(buffer));
- nsize=sizeof(name);
- ret = RegEnumValueA(subkey, 0, name, &nsize, NULL, NULL, buffer, &outsize);
- ok(ret == ERROR_SUCCESS, "RegEnumValueA failed: %d\n", ret);
- ok(strcmp(name, "stringtest") == 0, "wrong name: %s\n", name);
- ok(outsize == insize, "wrong size: %u != %u\n", outsize, insize);
- ok(memcmp(buffer, string, outsize) == 0, "bad string: %s/%u != %s\n",
- wine_debugstr_an((char*)buffer, outsize), outsize, string);
- ok(buffer[insize] == 0xbd, "buffer overflow at %u %02x\n", insize, buffer[insize]);
-
- /* RegEnumValueA adds a trailing '\0' if there is room */
- outsize=insize+1;
- memset(buffer, 0xbd, sizeof(buffer));
- nsize=sizeof(name);
- ret = RegEnumValueA(subkey, 0, name, &nsize, NULL, NULL, buffer, &outsize);
- ok(ret == ERROR_SUCCESS, "RegEnumValueA failed: %d\n", ret);
- ok(strcmp(name, "stringtest") == 0, "wrong name: %s\n", name);
- ok(outsize == insize, "wrong size: %u != %u\n", outsize, insize);
- ok(memcmp(buffer, string, outsize) == 0, "bad string: %s/%u != %s\n",
- wine_debugstr_an((char*)buffer, outsize), outsize, string);
- ok(buffer[insize] == 0, "buffer overflow at %u %02x\n", insize, buffer[insize]);
- }
+ /* RegQueryValueExA may return a string with no trailing '\0' */
+ outsize=insize;
+ memset(buffer, 0xbd, sizeof(buffer));
+ ret = RegQueryValueExA(subkey, "stringtest", NULL, NULL, buffer, &outsize);
+ ok(ret == ERROR_SUCCESS, "RegQueryValueExA failed: %d\n", ret);
+ ok(outsize == insize, "wrong size: %u != %u\n", outsize, insize);
+ ok(memcmp(buffer, string, outsize) == 0, "bad string: %s/%u != %s\n",
+ wine_debugstr_an((char*)buffer, outsize), outsize, string);
+ ok(buffer[insize] == 0xbd, "buffer overflow at %u %02x\n", insize, buffer[insize]);
+
+ /* RegQueryValueExA adds a trailing '\0' if there is room */
+ outsize=insize+1;
+ memset(buffer, 0xbd, sizeof(buffer));
+ ret = RegQueryValueExA(subkey, "stringtest", NULL, NULL, buffer, &outsize);
+ ok(ret == ERROR_SUCCESS, "RegQueryValueExA failed: %d\n", ret);
+ ok(outsize == insize, "wrong size: %u != %u\n", outsize, insize);
+ ok(memcmp(buffer, string, outsize) == 0, "bad string: %s/%u != %s\n",
+ wine_debugstr_an((char*)buffer, outsize), outsize, string);
+ ok(buffer[insize] == 0, "buffer overflow at %u %02x\n", insize, buffer[insize]);
+
+ /* RegEnumValueA may return a string with no trailing '\0' */
+ outsize=insize;
+ memset(buffer, 0xbd, sizeof(buffer));
+ nsize=sizeof(name);
+ ret = RegEnumValueA(subkey, 0, name, &nsize, NULL, NULL, buffer, &outsize);
+ ok(ret == ERROR_SUCCESS, "RegEnumValueA failed: %d\n", ret);
+ ok(strcmp(name, "stringtest") == 0, "wrong name: %s\n", name);
+ ok(outsize == insize, "wrong size: %u != %u\n", outsize, insize);
+ ok(memcmp(buffer, string, outsize) == 0, "bad string: %s/%u != %s\n",
+ wine_debugstr_an((char*)buffer, outsize), outsize, string);
+ ok(buffer[insize] == 0xbd, "buffer overflow at %u %02x\n", insize, buffer[insize]);
+
+ /* RegEnumValueA adds a trailing '\0' if there is room */
+ outsize=insize+1;
+ memset(buffer, 0xbd, sizeof(buffer));
+ nsize=sizeof(name);
+ ret = RegEnumValueA(subkey, 0, name, &nsize, NULL, NULL, buffer, &outsize);
+ ok(ret == ERROR_SUCCESS, "RegEnumValueA failed: %d\n", ret);
+ ok(strcmp(name, "stringtest") == 0, "wrong name: %s\n", name);
+ ok(outsize == insize, "wrong size: %u != %u\n", outsize, insize);
+ ok(memcmp(buffer, string, outsize) == 0, "bad string: %s/%u != %s\n",
+ wine_debugstr_an((char*)buffer, outsize), outsize, string);
+ ok(buffer[insize] == 0, "buffer overflow at %u %02x\n", insize, buffer[insize]);
RegDeleteKeyA(subkey, "");
RegCloseKey(subkey);
res = RegOpenKeyExA( HKEY_CLASSES_ROOT, "WineTestCls", 0,
KEY_QUERY_VALUE|KEY_SET_VALUE, &hkcr );
todo_wine ok(res == ERROR_SUCCESS ||
- broken(res == ERROR_FILE_NOT_FOUND /* Win9x */),
+ broken(res == ERROR_FILE_NOT_FOUND /* WinNT */),
"test key not found in hkcr: %d\n", res);
if (res)
{