diff options
| -rw-r--r-- | ChangeLog | 1 | ||||
| -rw-r--r-- | frontends/php/screenedit.php | 2 | ||||
| -rwxr-xr-x | src/libs/zbxsysinfo/win32/services.c | 62 |
3 files changed, 39 insertions, 26 deletions
@@ -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); |
