Working parameters and enums in winperf subagent:
authorVictor Kirhenshtein <victor@netxms.org>
Sun, 3 Oct 2004 19:39:31 +0000 (19:39 +0000)
committerVictor Kirhenshtein <victor@netxms.org>
Sun, 3 Oct 2004 19:39:31 +0000 (19:39 +0000)
PDH.CounterValue(*)
PDH.Objects
PDH.ObjectCounters(*)
PDH.ObjectInstances(*)

include/nms_util.h
src/agent/subagents/winperf/tools.cpp
src/agent/subagents/winperf/winperf.cpp
src/libnetxms/tools.cpp

index 9740e57..1c9504c 100644 (file)
@@ -165,6 +165,7 @@ extern "C"
    BOOL LIBNETXMS_EXPORTABLE MatchString(const TCHAR *pattern, const TCHAR *string, BOOL matchCase);
    TCHAR LIBNETXMS_EXPORTABLE *ExtractWord(TCHAR *line, TCHAR *buffer);
    BOOL LIBNETXMS_EXPORTABLE IsValidObjectName(TCHAR *pszName);
+   void LIBNETXMS_EXPORTABLE TranslateStr(TCHAR *pszString, TCHAR *pszSubStr, TCHAR *pszReplace);
    
    DWORD LIBNETXMS_EXPORTABLE CalculateCRC32(const unsigned char *data, DWORD nbytes);
    void LIBNETXMS_EXPORTABLE CalculateMD5Hash(const unsigned char *data, int nbytes, unsigned char *hash);
index eb2f1ce..81e0d13 100644 (file)
@@ -38,7 +38,7 @@ TCHAR *GetPdhErrorText(DWORD dwError, TCHAR *pszBuffer, int iBufferSize)
                      MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
                      (LPTSTR)&pszMsg, 0, NULL)>0)
    {
-      //pszMsg[_tcscspn(pszMsg, _T("\r\n"))] = 0;
+      TranslateStr(pszMsg, _T("\r\n"), _T(""));
       _tcsncpy(pszBuffer, pszMsg, iBufferSize);
       LocalFree(pszMsg);
    }
index f8ee482..642b7c9 100644 (file)
@@ -27,7 +27,7 @@
 // CPU utilization
 //
 
-static LONG H_PdhhCounterValue(char *pszParam, char *pArg, char *pValue)
+static LONG H_PdhCounterValue(char *pszParam, char *pArg, char *pValue)
 {
    HQUERY hQuery;
    HCOUNTER hCounter;
@@ -39,7 +39,8 @@ static LONG H_PdhhCounterValue(char *pszParam, char *pArg, char *pValue)
    static TCHAR szFName[] = _T("H_PdhCounterValue");
    DWORD dwSize;
 
-   NxGetParameterArg(pszParam, 1, szCounter, MAX_PATH);
+   if (!NxGetParameterArg(pszParam, 1, szCounter, MAX_PATH))
+      return SYSINFO_RC_UNSUPPORTED;
 
    if ((rc = PdhOpenQuery(NULL, 0, &hQuery)) != ERROR_SUCCESS)
    {
@@ -172,7 +173,7 @@ static LONG H_PdhObjectItems(char *pszParam, char *pArg, NETXMS_VALUES_LIST *pVa
 
 static NETXMS_SUBAGENT_PARAM m_parameters[] =
 {
-   { _T("PDH.CounterValue(*)"), H_PdhhCounterValue, NULL }
+   { _T("PDH.CounterValue(*)"), H_PdhCounterValue, NULL }
 };
 static NETXMS_SUBAGENT_ENUM m_enums[] =
 {
index ed743f2..4382b0c 100644 (file)
@@ -494,3 +494,32 @@ void LIBNETXMS_EXPORTABLE NxWriteAgentLog(int iLevel, TCHAR *pszFormat, ...)
       m_pLogFunction(iLevel, szBuffer);
    }
 }
+
+
+//
+// Translate string
+// NOTE: replacement string shouldn't be longer than original
+//
+
+void LIBNETXMS_EXPORTABLE TranslateStr(TCHAR *pszString, TCHAR *pszSubStr, TCHAR *pszReplace)
+{
+   TCHAR *pszSrc, *pszDst;
+   int iSrcLen, iRepLen;
+
+   iSrcLen = _tcslen(pszSubStr);
+   iRepLen = _tcslen(pszReplace);
+   for(pszSrc = pszString, pszDst = pszString; *pszSrc != 0;)
+   {
+      if (!_tcsncmp(pszSrc, pszSubStr, iSrcLen))
+      {
+         memcpy(pszDst, pszReplace, sizeof(TCHAR) * iRepLen);
+         pszSrc += iSrcLen;
+         pszDst += iRepLen;
+      }
+      else
+      {
+         *pszDst++ = *pszSrc++;
+      }
+   }
+   *pszDst = 0;
+}