Commit df77e490 authored by Sebastian Lackner's avatar Sebastian Lackner Committed by Alexandre Julliard

advapi32: Fix return value of RegNotifyChangeKeyValue for pending events.

parent d2ca5419
......@@ -2760,7 +2760,7 @@ LSTATUS WINAPI RegNotifyChangeKeyValue( HKEY hkey, BOOL fWatchSubTree,
fdwNotifyFilter, fWatchSubTree, NULL, 0,
fAsync);
if (status && status != STATUS_TIMEOUT)
if (status && status != STATUS_PENDING)
return RtlNtStatusToDosError( status );
return ERROR_SUCCESS;
......
......@@ -3452,6 +3452,33 @@ static void test_RegOpenCurrentUser(void)
RegCloseKey(key);
}
static void test_RegNotifyChangeKeyValue(void)
{
HKEY key, subkey;
HANDLE event;
DWORD dwret;
LONG ret;
event = CreateEventW(NULL, FALSE, TRUE, NULL);
ok(event != NULL, "CreateEvent failed, error %u\n", GetLastError());
ret = RegCreateKeyA(hkey_main, "TestKey", &key);
ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %d\n", ret);
ret = RegNotifyChangeKeyValue(key, TRUE, REG_NOTIFY_CHANGE_NAME, event, TRUE);
ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %d\n", ret);
dwret = WaitForSingleObject(event, 0);
ok(dwret == WAIT_TIMEOUT, "expected WAIT_TIMEOUT, got %u\n", dwret);
ret = RegCreateKeyA(key, "SubKey", &subkey);
ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %d\n", ret);
dwret = WaitForSingleObject(event, 0);
ok(dwret == WAIT_OBJECT_0, "expected WAIT_OBJECT_0, got %u\n", dwret);
RegDeleteKeyA(key, "");
RegCloseKey(key);
CloseHandle(event);
}
START_TEST(registry)
{
/* Load pointers for functions that are not available in all Windows versions */
......@@ -3486,6 +3513,7 @@ START_TEST(registry)
test_delete_value();
test_delete_key_value();
test_RegOpenCurrentUser();
test_RegNotifyChangeKeyValue();
/* cleanup */
delete_key( hkey_main );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment