home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: SysTools / SysTools.zip / taman002.zip / TASKMANA.ZIP / src / kProcessRecord.cpp < prev    next >
C/C++ Source or Header  |  2000-04-29  |  4KB  |  154 lines

  1. /* $Id: kProcessRecord.cpp,v 1.1 2000/04/29 19:06:35 stknut Exp $
  2.  *
  3.  * kProcessRecord - Process container record.
  4.  *
  5.  * Copyright (c) 2000 knut st. osmundsen (knut.stange.osmundsen@pmsc.no)
  6.  *
  7.  */
  8. /*******************************************************************************
  9. *   Defined Constants And Macros                                               *
  10. *******************************************************************************/
  11. #define INCL_WIN
  12. #define INCL_DOS
  13.  
  14. /*******************************************************************************
  15. *   Internal Functions                                                         *
  16. *******************************************************************************/
  17. #include <os2.h>
  18. #ifdef USE_KLIB
  19.     #include <kAssert.h>
  20.     #include <kLog.h>
  21.     #include <kHeap.h>
  22. #endif
  23. #include <stddef.h>
  24. #include <stdio.h>
  25. #include <string.h>
  26. #include "kBase.h"
  27. #include "kError.h"
  28. #include "kContainer.h"
  29. #include "kQuerySysState.h"
  30. #include "kProcessRecord.h"
  31.  
  32. /*******************************************************************************
  33. *   Global Variables                                                           *
  34. *******************************************************************************/
  35. const FIELDINFO kProcessRecord::aFieldInfo[] =
  36. {
  37.    {
  38.       sizeof(FIELDINFO),
  39.       CFA_STRING | CFA_HORZSEPARATOR | CFA_SEPARATOR | CFA_RIGHT,
  40.       CFA_STRING,
  41.       (PVOID)"Pid",
  42.       offsetof(kProcessRecord, pszPid),
  43.       NULL,
  44.       NULL,
  45.       0L
  46.    }
  47.    ,
  48.    {
  49.       sizeof(FIELDINFO),
  50.       CFA_STRING | CFA_HORZSEPARATOR | CFA_SEPARATOR,
  51.       CFA_STRING,
  52.       (PVOID)"PPid",
  53.       offsetof(kProcessRecord, pszPPid),
  54.       NULL,
  55.       NULL,
  56.       0L
  57.    }
  58.    ,
  59.    {
  60.       sizeof(FIELDINFO),
  61.       CFA_STRING | CFA_HORZSEPARATOR | CFA_SEPARATOR,
  62.       CFA_STRING,
  63.       (PVOID)"Systime",
  64.       offsetof(kProcessRecord, pszSysTime),
  65.       NULL,
  66.       NULL,
  67.       0L
  68.    }
  69.    ,
  70.    {
  71.       sizeof(FIELDINFO),
  72.       CFA_STRING | CFA_HORZSEPARATOR | CFA_SEPARATOR,
  73.       CFA_STRING,
  74.       (PVOID)"Usertime",
  75.       offsetof(kProcessRecord, pszUserTime),
  76.       NULL,
  77.       NULL,
  78.       0L
  79.    }
  80.    ,
  81.    {
  82.       sizeof(FIELDINFO),
  83.       CFA_STRING | CFA_HORZSEPARATOR,
  84.       CFA_STRING,
  85.       (PVOID)"Name",
  86.       offsetof(kProcessRecord, pszName),
  87.       NULL,
  88.       NULL,
  89.       0L
  90.    }
  91. };
  92.  
  93. const unsigned  kProcessRecord::cFieldInfo = 5;
  94.  
  95. /**
  96.  * Initiates the struct. (zero fields some field)
  97.  * @author    knut st. osmundsen (knut.stange.osmundsen@pmsc.no)
  98.  */
  99. VOID  kProcessRecord::init()
  100. {
  101.     pProcData = NULL;
  102. }
  103.  
  104.  
  105. /**
  106.  * Set record information according to the passed in pProcData struct.
  107.  * This is also used to update data.
  108.  * @param     pProcData  Process information from QS.
  109.  * @author    knut st. osmundsen (knut.stange.osmundsen@pmsc.no)
  110.  * @remark
  111.  */
  112. VOID  kProcessRecord::set(PPROCESSDATA pProcData)
  113. {
  114.     if (this->pProcData == NULL || this->pProcData != pProcData)
  115.     {   /* new data */
  116.         qsLrec_t *pMteData;
  117.  
  118.         this->pProcData = pProcData;
  119.         usPid = pProcData->usPid;
  120.         pszPid = &szPid[0];
  121.         pszPPid = &szPPid[0];
  122.         pszName = &szName[0];
  123.         pszSysTime = &szSysTime[0];
  124.         pszUserTime = &szUserTime[0];
  125.  
  126.         /* get process name */
  127.         pMteData = QSGetMteData(pProcData->pProcRec->hMte);
  128.         if (pMteData != NULL)
  129.             strcpy(pszName, (const char*)pMteData->pName);
  130.         if (pMteData == NULL || pszName == NULL)
  131.             strcpy(pszName, "<unknown>");
  132.     }
  133.  
  134.     /*
  135.      * Set and format
  136.      */
  137.     sprintf(szPid,      "%04x", pProcData->usPid);
  138.     sprintf(szPPid,     "%04x", pProcData->pProcRec->ppid);
  139.     ULONG   ulTime = pProcData->ulSysTime * 32;
  140.     sprintf(szSysTime,  "%02d:%02d:%02d,%03d",
  141.             (ulTime / 3600000),
  142.             (ulTime / 60000) % 60,
  143.             (ulTime / 1000) % 60,
  144.              ulTime % 1000);
  145.     ulTime = pProcData->ulUserTime * 32;
  146.     sprintf(szUserTime,  "%02d:%02d:%02d,%03d",
  147.             (ulTime / 3600000),
  148.             (ulTime / 60000) % 60,
  149.             (ulTime / 1000) % 60,
  150.              ulTime % 1000);
  151. }
  152.  
  153.  
  154.