Rolf Kalbermatter : advapi32:
Make QueryServiceStatus use QueryServiceStatusEx.
Alexandre Julliard
julliard at wine.codeweavers.com
Fri Apr 20 07:11:04 CDT 2007
Module: wine
Branch: master
Commit: 6c33eb4410d955ec9407b17c9f7353bca021ca4d
URL: http://source.winehq.org/git/wine.git/?a=commit;h=6c33eb4410d955ec9407b17c9f7353bca021ca4d
Author: Rolf Kalbermatter <r.kalbermatter at hccnet.nl>
Date: Fri Apr 20 10:42:12 2007 +0200
advapi32: Make QueryServiceStatus use QueryServiceStatusEx.
---
dlls/advapi32/service.c | 48 ++++++++--------------------------------------
1 files changed, 9 insertions(+), 39 deletions(-)
diff --git a/dlls/advapi32/service.c b/dlls/advapi32/service.c
index 53ec9fc..34cb96a 100644
--- a/dlls/advapi32/service.c
+++ b/dlls/advapi32/service.c
@@ -1566,55 +1566,25 @@ BOOL WINAPI StartServiceW(SC_HANDLE hService, DWORD dwNumServiceArgs,
* QueryServiceStatus [ADVAPI32.@]
*
* PARAMS
- * hService []
- * lpservicestatus []
+ * hService [I] Handle to service to get information about
+ * lpservicestatus [O] buffer to receive the status information for the service
*
*/
BOOL WINAPI QueryServiceStatus(SC_HANDLE hService,
LPSERVICE_STATUS lpservicestatus)
{
- struct sc_service *hsvc;
- DWORD size, type, val;
- HANDLE pipe;
- LONG r;
+ SERVICE_STATUS_PROCESS SvcStatusData;
+ BOOL ret;
TRACE("%p %p\n", hService, lpservicestatus);
- hsvc = sc_handle_get_handle_data(hService, SC_HTYPE_SERVICE);
- if (!hsvc)
- {
- SetLastError( ERROR_INVALID_HANDLE );
- return FALSE;
- }
-
- pipe = service_open_pipe(hsvc->name);
- if (pipe != INVALID_HANDLE_VALUE)
- {
- r = service_get_status(pipe, lpservicestatus);
- CloseHandle(pipe);
- if (r)
- return TRUE;
- }
-
- TRACE("Failed to read service status\n");
-
- /* read the service type from the registry */
- size = sizeof(val);
- r = RegQueryValueExA(hsvc->hkey, "Type", NULL, &type, (LPBYTE)&val, &size);
- if(r!=ERROR_SUCCESS || type!=REG_DWORD)
- val = 0;
-
- lpservicestatus->dwServiceType = val;
- lpservicestatus->dwCurrentState = SERVICE_STOPPED; /* stopped */
- lpservicestatus->dwControlsAccepted = 0;
- lpservicestatus->dwWin32ExitCode = ERROR_SERVICE_NEVER_STARTED;
- lpservicestatus->dwServiceSpecificExitCode = 0;
- lpservicestatus->dwCheckPoint = 0;
- lpservicestatus->dwWaitHint = 0;
-
- return TRUE;
+ ret = QueryServiceStatusEx(hService, SC_STATUS_PROCESS_INFO, (LPBYTE)&SvcStatusData,
+ sizeof(SERVICE_STATUS_PROCESS), NULL);
+ if (ret) *lpservicestatus = SvcStatusData.status;
+ return ret;
}
+
/******************************************************************************
* QueryServiceStatusEx [ADVAPI32.@]
*
More information about the wine-cvs
mailing list