Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
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-cw
Commits
b92c82c9
Commit
b92c82c9
authored
Apr 15, 2013
by
Dmitry Timoshkov
Committed by
Alexandre Julliard
Apr 15, 2013
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
server: Add support for NtTerminateProcess(0).
parent
c5fbb4a7
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
12 additions
and
19 deletions
+12
-19
loader.c
dlls/kernel32/tests/loader.c
+3
-14
process.c
dlls/ntdll/process.c
+1
-1
process.c
server/process.c
+8
-4
No files found.
dlls/kernel32/tests/loader.c
View file @
b92c82c9
...
...
@@ -1105,12 +1105,7 @@ static BOOL WINAPI dll_entry_point(HINSTANCE hinst, DWORD reason, LPVOID param)
ret
=
GetExitCodeThread
(
attached_thread
[
i
],
&
code
);
trace
(
"dll: GetExitCodeThread(%u) => %d,%u
\n
"
,
i
,
ret
,
code
);
ok
(
ret
==
1
,
"GetExitCodeThread returned %d, expected 1
\n
"
,
ret
);
/* FIXME: remove once Wine is fixed */
if
(
expected_code
==
STILL_ACTIVE
||
expected_code
==
196
)
ok
(
code
==
expected_code
,
"expected thread exit code %u, got %u
\n
"
,
expected_code
,
code
);
else
todo_wine
ok
(
code
==
expected_code
,
"expected thread exit code %u, got %u
\n
"
,
expected_code
,
code
);
ok
(
code
==
expected_code
,
"expected thread exit code %u, got %u
\n
"
,
expected_code
,
code
);
}
if
(
test_dll_phase
==
2
)
...
...
@@ -1230,7 +1225,6 @@ static void child_process(const char *dll_name, DWORD target_offset)
ok
(
!
ret
,
"RtlDllShutdownInProgress returned %d
\n
"
,
ret
);
status
=
pNtTerminateProcess
(
0
,
195
);
todo_wine
ok
(
!
status
,
"NtTerminateProcess error %#x
\n
"
,
status
);
ret
=
pRtlDllShutdownInProgress
();
...
...
@@ -1239,7 +1233,7 @@ static void child_process(const char *dll_name, DWORD target_offset)
break
;
case
1
:
case
2
:
/* ExitProc
ce
s will be called by PROCESS_DETACH handler */
case
2
:
/* ExitProc
es
s will be called by PROCESS_DETACH handler */
ret
=
pRtlDllShutdownInProgress
();
ok
(
!
ret
,
"RtlDllShutdownInProgress returned %d
\n
"
,
ret
);
...
...
@@ -1283,12 +1277,7 @@ static void child_process(const char *dll_name, DWORD target_offset)
ret
=
GetExitCodeThread
(
attached_thread
[
i
],
&
code
);
trace
(
"child: GetExitCodeThread(%u) => %d,%u
\n
"
,
i
,
ret
,
code
);
ok
(
ret
==
1
,
"GetExitCodeThread returned %d, expected 1
\n
"
,
ret
);
/* FIXME: remove once Wine is fixed */
if
(
expected_code
==
STILL_ACTIVE
||
expected_code
==
196
)
ok
(
code
==
expected_code
,
"expected thread exit code %u, got %u
\n
"
,
expected_code
,
code
);
else
todo_wine
ok
(
code
==
expected_code
,
"expected thread exit code %u, got %u
\n
"
,
expected_code
,
code
);
ok
(
code
==
expected_code
,
"expected thread exit code %u, got %u
\n
"
,
expected_code
,
code
);
}
*
child_failures
=
winetest_get_failures
();
...
...
dlls/ntdll/process.c
View file @
b92c82c9
...
...
@@ -60,7 +60,7 @@ NTSTATUS WINAPI NtTerminateProcess( HANDLE handle, LONG exit_code )
self
=
!
ret
&&
reply
->
self
;
}
SERVER_END_REQ
;
if
(
self
)
exit
(
exit_code
);
if
(
self
&&
handle
)
exit
(
exit_code
);
return
ret
;
}
...
...
server/process.c
View file @
b92c82c9
...
...
@@ -1082,12 +1082,16 @@ DECL_HANDLER(terminate_process)
{
struct
process
*
process
;
if
(
(
process
=
get_process_from_handle
(
req
->
handle
,
PROCESS_TERMINATE
))
)
if
(
req
->
handle
)
{
reply
->
self
=
(
current
->
process
==
process
);
terminate_process
(
process
,
current
,
req
->
exit_code
);
release_object
(
process
);
process
=
get_process_from_handle
(
req
->
handle
,
PROCESS_TERMINATE
);
if
(
!
process
)
return
;
}
else
process
=
(
struct
process
*
)
grab_object
(
current
->
process
);
reply
->
self
=
(
current
->
process
==
process
);
terminate_process
(
process
,
current
,
req
->
exit_code
);
release_object
(
process
);
}
/* fetch information about a process */
...
...
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