summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorosmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2006-11-15 07:36:42 +0000
committerosmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2006-11-15 07:36:42 +0000
commitdf7b108fa6ebe72aed035aa178168e720c094e71 (patch)
tree928e952159331fc8e012f946bb8211a890dd6bdd /src
parent7bc1cf0681e9c56c066102e6ab116f574b6a6861 (diff)
downloadzabbix-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-xsrc/libs/zbxsysinfo/win32/services.c62
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);