summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog1
-rw-r--r--frontends/php/screenedit.php2
-rwxr-xr-xsrc/libs/zbxsysinfo/win32/services.c62
3 files changed, 39 insertions, 26 deletions
diff --git a/ChangeLog b/ChangeLog
index c9c1ce92..bd4215ee 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -17,6 +17,7 @@ Integrated from 1.1.x
1.1.4
+ - fixed 'service_status[*]' for WinXX system (Eugene)
- fixed processing of web.page.regexp[] (Alexei)
- fixed trigger function fuzzytime() (Alexei)
- fixed graph displaying with period 1d - 2d8h (Eugene)
diff --git a/frontends/php/screenedit.php b/frontends/php/screenedit.php
index 15d131da..90af6b1c 100644
--- a/frontends/php/screenedit.php
+++ b/frontends/php/screenedit.php
@@ -36,7 +36,7 @@ include_once "include/page_header.php";
$fields=array(
"screenid"=> array(T_ZBX_INT, O_MAND, P_SYS, DB_ID, null),
- "screenitemid"=>array(T_ZBX_INT, O_NO, P_SYS, DB_ID, '{form}=="update"'),
+ "screenitemid"=>array(T_ZBX_INT, O_OPT, P_SYS, DB_ID, '{form}=="update"&&(!isset({x})||!isset({y}))'),
"resourcetype"=> array(T_ZBX_INT, O_OPT, null,
BETWEEN(SCREEN_RESOURCE_GRAPH,SCREEN_RESOURCE_EVENTS), 'isset({save})'),
"resourceid"=> array(T_ZBX_INT, O_OPT, null, DB_ID, 'isset({save})'),
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);