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
c11e163e
Commit
c11e163e
authored
Dec 12, 2011
by
Piotr Caban
Committed by
Alexandre Julliard
Dec 12, 2011
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
services: Fix SERVICE_STATUS initialization in svcctl_ControlService.
parent
0f3eb5f6
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
33 additions
and
14 deletions
+33
-14
rpc.c
programs/services/rpc.c
+33
-14
No files found.
programs/services/rpc.c
View file @
c11e163e
...
...
@@ -1048,29 +1048,35 @@ DWORD __cdecl svcctl_ControlService(
service_lock_exclusive
(
service
->
service_entry
);
if
(
lpServiceStatus
)
{
lpServiceStatus
->
dwServiceType
=
service
->
service_entry
->
status
.
dwServiceType
;
lpServiceStatus
->
dwCurrentState
=
service
->
service_entry
->
status
.
dwCurrentState
;
lpServiceStatus
->
dwControlsAccepted
=
service
->
service_entry
->
status
.
dwControlsAccepted
;
lpServiceStatus
->
dwWin32ExitCode
=
service
->
service_entry
->
status
.
dwWin32ExitCode
;
lpServiceStatus
->
dwServiceSpecificExitCode
=
service
->
service_entry
->
status
.
dwServiceSpecificExitCode
;
lpServiceStatus
->
dwCheckPoint
=
service
->
service_entry
->
status
.
dwCheckPoint
;
lpServiceStatus
->
dwWaitHint
=
service
->
service_entry
->
status
.
dwWaitHint
;
}
result
=
ERROR_SUCCESS
;
switch
(
service
->
service_entry
->
status
.
dwCurrentState
)
{
case
SERVICE_STOPPED
:
service_unlock
(
service
->
service_entry
)
;
return
ERROR_SERVICE_NOT_ACTIVE
;
result
=
ERROR_SERVICE_NOT_ACTIVE
;
break
;
case
SERVICE_START_PENDING
:
if
(
dwControl
==
SERVICE_CONTROL_STOP
)
break
;
/* fall thru */
case
SERVICE_STOP_PENDING
:
result
=
ERROR_SERVICE_CANNOT_ACCEPT_CTRL
;
break
;
}
if
(
result
!=
ERROR_SUCCESS
)
{
if
(
lpServiceStatus
)
{
lpServiceStatus
->
dwServiceType
=
service
->
service_entry
->
status
.
dwServiceType
;
lpServiceStatus
->
dwCurrentState
=
service
->
service_entry
->
status
.
dwCurrentState
;
lpServiceStatus
->
dwControlsAccepted
=
service
->
service_entry
->
status
.
dwControlsAccepted
;
lpServiceStatus
->
dwWin32ExitCode
=
service
->
service_entry
->
status
.
dwWin32ExitCode
;
lpServiceStatus
->
dwServiceSpecificExitCode
=
service
->
service_entry
->
status
.
dwServiceSpecificExitCode
;
lpServiceStatus
->
dwCheckPoint
=
service
->
service_entry
->
status
.
dwCheckPoint
;
lpServiceStatus
->
dwWaitHint
=
service
->
service_entry
->
status
.
dwWaitHint
;
}
service_unlock
(
service
->
service_entry
);
return
ERROR_SERVICE_CANNOT_ACCEPT_CTRL
;
return
result
;
}
if
(
!
service_accepts_control
(
service
->
service_entry
,
dwControl
))
...
...
@@ -1096,6 +1102,19 @@ DWORD __cdecl svcctl_ControlService(
{
service_send_control
(
service
->
service_entry
,
control_pipe
,
dwControl
,
&
result
);
if
(
lpServiceStatus
)
{
service_lock_shared
(
service
->
service_entry
);
lpServiceStatus
->
dwServiceType
=
service
->
service_entry
->
status
.
dwServiceType
;
lpServiceStatus
->
dwCurrentState
=
service
->
service_entry
->
status
.
dwCurrentState
;
lpServiceStatus
->
dwControlsAccepted
=
service
->
service_entry
->
status
.
dwControlsAccepted
;
lpServiceStatus
->
dwWin32ExitCode
=
service
->
service_entry
->
status
.
dwWin32ExitCode
;
lpServiceStatus
->
dwServiceSpecificExitCode
=
service
->
service_entry
->
status
.
dwServiceSpecificExitCode
;
lpServiceStatus
->
dwCheckPoint
=
service
->
service_entry
->
status
.
dwCheckPoint
;
lpServiceStatus
->
dwWaitHint
=
service
->
service_entry
->
status
.
dwWaitHint
;
service_unlock
(
service
->
service_entry
);
}
if
(
dwControl
==
SERVICE_CONTROL_STOP
)
{
CloseHandle
(
control_mutex
);
...
...
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