Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
3c72ad33
Commit
3c72ad33
authored
Jan 26, 2021
by
Zebediah Figura
Committed by
Alexandre Julliard
Jan 27, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ntdll/tests: Add more tests for registry notifications.
Signed-off-by:
Zebediah Figura
<
z.figura12@gmail.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
5d046a78
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
44 additions
and
17 deletions
+44
-17
reg.c
dlls/ntdll/tests/reg.c
+44
-17
No files found.
dlls/ntdll/tests/reg.c
View file @
3c72ad33
...
...
@@ -1853,28 +1853,30 @@ static void test_notify(void)
LARGE_INTEGER
timeout
;
IO_STATUS_BLOCK
iosb
;
UNICODE_STRING
str
;
HANDLE
key
,
events
[
2
],
subkey
;
HANDLE
key
,
key2
,
events
[
4
],
subkey
;
NTSTATUS
status
;
unsigned
int
i
;
InitializeObjectAttributes
(
&
attr
,
&
winetestpath
,
0
,
0
,
0
);
status
=
pNtOpenKey
(
&
key
,
KEY_ALL_ACCESS
,
&
attr
);
ok
(
status
==
STATUS_SUCCESS
,
"NtOpenKey Failed: 0x%08x
\n
"
,
status
);
status
=
pNtOpenKey
(
&
key2
,
KEY_ALL_ACCESS
,
&
attr
);
ok
(
status
==
STATUS_SUCCESS
,
"NtOpenKey Failed: 0x%08x
\n
"
,
status
);
events
[
0
]
=
CreateEventW
(
NULL
,
FALSE
,
TRUE
,
NULL
);
ok
(
events
[
0
]
!=
NULL
,
"CreateEvent failed: %u
\n
"
,
GetLastError
());
events
[
1
]
=
CreateEventW
(
NULL
,
FALSE
,
TRUE
,
NULL
);
ok
(
events
[
1
]
!=
NULL
,
"CreateEvent failed: %u
\n
"
,
GetLastError
());
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
events
);
++
i
)
events
[
i
]
=
CreateEventW
(
NULL
,
TRUE
,
TRUE
,
NULL
);
status
=
pNtNotifyChangeKey
(
key
,
events
[
0
],
NULL
,
NULL
,
&
iosb
,
REG_NOTIFY_CHANGE_NAME
,
FALSE
,
NULL
,
0
,
TRUE
);
ok
(
status
==
STATUS_PENDING
,
"NtNotifyChangeKey returned %x
\n
"
,
status
);
status
=
pNtNotifyChangeKey
(
key
,
events
[
1
],
NULL
,
NULL
,
&
iosb
,
REG_NOTIFY_CHANGE_NAME
,
FALSE
,
NULL
,
0
,
TRUE
);
status
=
pNtNotifyChangeKey
(
key
,
events
[
1
],
NULL
,
NULL
,
&
iosb
,
0
,
FALSE
,
NULL
,
0
,
TRUE
);
ok
(
status
==
STATUS_PENDING
,
"NtNotifyChangeKey returned %x
\n
"
,
status
);
status
=
pNtNotifyChangeKey
(
key2
,
events
[
2
],
NULL
,
NULL
,
&
iosb
,
0
,
FALSE
,
NULL
,
0
,
TRUE
);
ok
(
status
==
STATUS_PENDING
,
"NtNotifyChangeKey returned %x
\n
"
,
status
);
status
=
pNtNotifyChangeKey
(
key2
,
events
[
3
],
NULL
,
NULL
,
&
iosb
,
REG_NOTIFY_CHANGE_NAME
,
FALSE
,
NULL
,
0
,
TRUE
);
ok
(
status
==
STATUS_PENDING
,
"NtNotifyChangeKey returned %x
\n
"
,
status
);
timeout
.
QuadPart
=
0
;
status
=
pNtWaitForSingleObject
(
events
[
0
],
FALSE
,
&
timeout
);
ok
(
status
==
STATUS_TIMEOUT
,
"NtWaitForSingleObject returned %x
\n
"
,
status
);
status
=
pNtWaitForSingleObject
(
events
[
1
],
FALSE
,
&
timeout
);
ok
(
status
==
STATUS_TIMEOUT
,
"NtWaitForSingleObject returned %x
\n
"
,
status
);
status
=
WaitForMultipleObjects
(
4
,
events
,
FALSE
,
0
);
ok
(
status
==
WAIT_TIMEOUT
,
"got %d
\n
"
,
status
);
attr
.
RootDirectory
=
key
;
attr
.
ObjectName
=
&
str
;
...
...
@@ -1885,22 +1887,43 @@ static void test_notify(void)
pRtlFreeUnicodeString
(
&
str
);
status
=
pNtWaitForSingleObject
(
events
[
0
],
FALSE
,
&
timeout
);
todo_wine
ok
(
status
==
STATUS_SUCCESS
,
"NtWaitForSingleObject returned %
x
\n
"
,
status
);
todo_wine
ok
(
!
status
,
"got %#
x
\n
"
,
status
);
status
=
pNtWaitForSingleObject
(
events
[
1
],
FALSE
,
&
timeout
);
ok
(
status
==
STATUS_SUCCESS
,
"NtWaitForSingleObject returned %x
\n
"
,
status
);
ok
(
!
status
,
"got %#x
\n
"
,
status
);
status
=
pNtWaitForSingleObject
(
events
[
2
],
FALSE
,
&
timeout
);
ok
(
status
==
STATUS_TIMEOUT
,
"got %#x
\n
"
,
status
);
status
=
pNtWaitForSingleObject
(
events
[
3
],
FALSE
,
&
timeout
);
ok
(
status
==
STATUS_TIMEOUT
,
"got %#x
\n
"
,
status
);
status
=
pNtNotifyChangeKey
(
key
,
events
[
0
],
NULL
,
NULL
,
&
iosb
,
0
,
FALSE
,
NULL
,
0
,
TRUE
);
ok
(
status
==
STATUS_PENDING
,
"NtNotifyChangeKey returned %x
\n
"
,
status
);
status
=
pNtWaitForSingleObject
(
events
[
0
],
FALSE
,
&
timeout
);
ok
(
status
==
STATUS_TIMEOUT
,
"got %#x
\n
"
,
status
);
status
=
pNtWaitForSingleObject
(
events
[
1
],
FALSE
,
&
timeout
);
ok
(
!
status
,
"got %#x
\n
"
,
status
);
status
=
pNtWaitForSingleObject
(
events
[
2
],
FALSE
,
&
timeout
);
ok
(
status
==
STATUS_TIMEOUT
,
"got %#x
\n
"
,
status
);
status
=
pNtWaitForSingleObject
(
events
[
3
],
FALSE
,
&
timeout
);
ok
(
status
==
STATUS_TIMEOUT
,
"got %#x
\n
"
,
status
);
status
=
pNtNotifyChangeKey
(
key
,
events
[
1
],
NULL
,
NULL
,
&
iosb
,
0
,
FALSE
,
NULL
,
0
,
TRUE
);
ok
(
status
==
STATUS_PENDING
,
"NtNotifyChangeKey returned %x
\n
"
,
status
);
status
=
WaitForMultipleObjects
(
4
,
events
,
FALSE
,
0
);
ok
(
status
==
WAIT_TIMEOUT
,
"got %d
\n
"
,
status
);
status
=
pNtDeleteKey
(
subkey
);
ok
(
status
==
STATUS_SUCCESS
,
"NtDeleteSubkey failed: %x
\n
"
,
status
);
status
=
pNtWaitForSingleObject
(
events
[
0
],
FALSE
,
&
timeout
);
todo_wine
ok
(
status
==
STATUS_SUCCESS
,
"NtWaitForSingleObject returned %
x
\n
"
,
status
);
todo_wine
ok
(
!
status
,
"got %#
x
\n
"
,
status
);
status
=
pNtWaitForSingleObject
(
events
[
1
],
FALSE
,
&
timeout
);
ok
(
status
==
STATUS_SUCCESS
,
"NtWaitForSingleObject returned %x
\n
"
,
status
);
ok
(
!
status
,
"got %#x
\n
"
,
status
);
status
=
pNtWaitForSingleObject
(
events
[
2
],
FALSE
,
&
timeout
);
ok
(
status
==
STATUS_TIMEOUT
,
"got %#x
\n
"
,
status
);
status
=
pNtWaitForSingleObject
(
events
[
3
],
FALSE
,
&
timeout
);
ok
(
status
==
STATUS_TIMEOUT
,
"got %#x
\n
"
,
status
);
pNtClose
(
subkey
);
...
...
@@ -1912,9 +1935,13 @@ static void test_notify(void)
pNtClose
(
key
);
status
=
pNtWaitForSingleObject
(
events
[
0
],
FALSE
,
&
timeout
);
todo_wine
ok
(
status
==
STATUS_SUCCESS
,
"NtWaitForSingleObject returned %
x
\n
"
,
status
);
todo_wine
ok
(
!
status
,
"got %#
x
\n
"
,
status
);
status
=
pNtWaitForSingleObject
(
events
[
1
],
FALSE
,
&
timeout
);
ok
(
status
==
STATUS_SUCCESS
,
"NtWaitForSingleObject returned %x
\n
"
,
status
);
ok
(
!
status
,
"got %#x
\n
"
,
status
);
status
=
pNtWaitForSingleObject
(
events
[
2
],
FALSE
,
&
timeout
);
ok
(
status
==
STATUS_TIMEOUT
,
"got %#x
\n
"
,
status
);
status
=
pNtWaitForSingleObject
(
events
[
3
],
FALSE
,
&
timeout
);
ok
(
status
==
STATUS_TIMEOUT
,
"got %#x
\n
"
,
status
);
if
(
pNtNotifyChangeMultipleKeys
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment