diff options
| author | osmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2006-11-15 07:36:42 +0000 |
|---|---|---|
| committer | osmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2006-11-15 07:36:42 +0000 |
| commit | df7b108fa6ebe72aed035aa178168e720c094e71 (patch) | |
| tree | 928e952159331fc8e012f946bb8211a890dd6bdd /src | |
| parent | 7bc1cf0681e9c56c066102e6ab116f574b6a6861 (diff) | |
| download | zabbix-df7b108fa6ebe72aed035aa178168e720c094e71.tar.gz zabbix-df7b108fa6ebe72aed035aa178168e720c094e71.tar.xz zabbix-df7b108fa6ebe72aed035aa178168e720c094e71.zip | |
- fixed 'service_status[*]' for WinXX system (Eugene)
git-svn-id: svn://svn.zabbix.com/trunk@3478 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'src')
| -rwxr-xr-x | src/libs/zbxsysinfo/win32/services.c | 62 |
1 files changed, 37 insertions, 25 deletions
diff --git a/src/libs/zbxsysinfo/win32/services.c b/src/libs/zbxsysinfo/win32/services.c index 39288b63..110692de 100755 --- a/src/libs/zbxsysinfo/win32/services.c +++ b/src/libs/zbxsysinfo/win32/services.c @@ -28,8 +28,12 @@ int SERVICE_STATE(const char *cmd, const char *param, unsigned flags, AGENT_RESU mgr, service; + char display_name[MAX_STRING_LEN]; char service_name[MAX_STRING_LEN]; + unsigned long + max_len_display_name = MAX_STRING_LEN; + int ret = SYSINFO_RET_FAIL; int i; @@ -38,11 +42,11 @@ int SERVICE_STATE(const char *cmd, const char *param, unsigned flags, AGENT_RESU return SYSINFO_RET_FAIL; } - if(get_param(param, 1, service_name, sizeof(service_name)) != 0) + if(get_param(param, 1, display_name, sizeof(display_name)) != 0) { - service_name[0] = '\0'; + display_name[0] = '\0'; } - if(service_name[0] == '\0') + if(display_name[0] == '\0') { return SYSINFO_RET_FAIL; } @@ -53,37 +57,45 @@ int SERVICE_STATE(const char *cmd, const char *param, unsigned flags, AGENT_RESU return SYSINFO_RET_OK; } - if(NULL != (service = OpenService(mgr,service_name,SERVICE_QUERY_STATUS)) ) + if(0 == GetServiceKeyName(mgr, display_name, service_name, &max_len_display_name)) { - SERVICE_STATUS status; - - if (QueryServiceStatus(service, &status)) + CloseServiceHandle(mgr); + return SYSINFO_RET_FAIL; + } + else + { + if(NULL != (service = OpenService(mgr,service_name,SERVICE_QUERY_STATUS)) ) { - static DWORD states[7] = + SERVICE_STATUS status; + + if (QueryServiceStatus(service, &status)) { - SERVICE_RUNNING, - SERVICE_PAUSED, - SERVICE_START_PENDING, - SERVICE_PAUSE_PENDING, - SERVICE_CONTINUE_PENDING, - SERVICE_STOP_PENDING, - SERVICE_STOPPED - }; + static DWORD states[7] = + { + SERVICE_RUNNING, + SERVICE_PAUSED, + SERVICE_START_PENDING, + SERVICE_PAUSE_PENDING, + SERVICE_CONTINUE_PENDING, + SERVICE_STOP_PENDING, + SERVICE_STOPPED + }; - for(i=0; i < 7 && status.dwCurrentState != states[i]; i++); - - SET_UI64_RESULT(result, i); + for(i=0; i < 7 && status.dwCurrentState != states[i]; i++); + + SET_UI64_RESULT(result, i); + } + else + { + SET_UI64_RESULT(result, 255); + } + + CloseServiceHandle(service); } else { SET_UI64_RESULT(result, 255); } - - CloseServiceHandle(service); - } - else - { - SET_UI64_RESULT(result, 255); } CloseServiceHandle(mgr); |
