Esempio n. 1
0
void process_entry(Control *pHandle) /* process 创建时触发调用 */
{   
    process_handle = pHandle;
    /* Add your self code here: */
		Control *pProcList;
		Control *pFlowEdit;
	
		//
		//	g_iflowid = 0;
		int rows = 0;
	
		pFlowEdit = GetCtlByID(process_handle, 15);
		
		char tmp[32] = {0};
		if(g_iflowid[0])
		{
			gArr2Str(tmp);
			sprintf( pFlowEdit->sData,"%s\0",tmp );
		}
		l_lprocnum = 0;
			
		pProcList = GetCtlByID (process_handle, 6);
		//pProcList->iAdditional = pInfoHead->iProcNum;
	
		rows = GetProcInfo ();
		pProcList->iAdditional = rows;
		pProcList->pData = proc_list_index;

}
Esempio n. 2
0
int processCtl8Press(Control *pCtl,int ch,long lParam)
{   /* 进程强制kill.button的按键消息处理 */
    /* Add your self code here: */
	Control *pList;
	int i, iFlag = 1;

	if (ch == '\r') {

		pList = GetCtlByID (process_handle, 6);

		for (i=0; i<l_lprocnum; i++) {
		    if (ListItemState (pList, i) != SELECTED)
		    	continue;

		    iFlag = 0;
		    if (InfoList[i]->iState==ST_RUNNING || InfoList[i]->iState==ST_INIT )
		        InfoList[i]->iState = ST_ENFORCE_DOWN;		    
		}
		if (iFlag)
		    prtmsg (pCtl, 20, 40, "请在进程列表中用空格选择进程");

		GetProcInfo ();
		CtlShow (pList);
		CtlAtv (pCtl, pCtl);
	}

	return ch;
}
Esempio n. 3
0
int processCtl2Press(Control *pCtl,int ch,long lParam)
{   /* 实时刷新button的按键消息处理 */
    /* Add your self code here: */
		Control *List;
		if (ch == '\r') {
		signal( SIGINT,  NULL);
		signal( SIGINT,  (void (*)(int))ProcMonitorEnd );
		g_proc_monitor_flag = 1;
		List = GetCtlByID (process_handle, 6);
		int rows = 0;
		
		while ( g_proc_monitor_flag ) {
		    if ((rows = GetProcInfo ()) < 0) {
		    prtmsg (pCtl, 20, 41, "连接共享内存错误");
		    return 0;
		    }
			List->iAdditional = rows;
			List->pData = proc_list_index;
		    CtlShow(List);
		    sleep(1);
		}
		CtlAtv( pCtl,pCtl );
		}
	
		return ch;

}
Esempio n. 4
0
int processCtl1Press(Control *pCtl,int ch,long lParam)
{   /* 刷新button的按键消息处理 */
    /* Add your self code here: */
		Control *pProcList;
		
		int rows = 0;
		if (ch == '\r') {
			if ((rows = GetProcInfo ()) < 0) {
			    prtmsg (pCtl, 20, 41, "连接共享内存错误");
			    return 0;
			}
		
			pProcList = GetCtlByID (process_handle, 6);
		
			pProcList->iAdditional = rows;
			pProcList->pData = proc_list_index;
		
			CtlShow (pProcList);
			CtlAtv (pCtl, pCtl);
		}
		
		return ch;

}
Esempio n. 5
0
VOID cdecl Message(PSZ pszMessage, ...)
{
static BYTE szMessage[512];
va_list va;
PROCINFO Proc;
ULONG ulmSecs = *pGITicks;

   if (!f32Parms.fMessageActive)
      return;

   va_start(va, pszMessage);

   GetProcInfo(&Proc, sizeof Proc);
   memset(szMessage, 0, sizeof szMessage);
   sprintf(szMessage, "P:%X U:%X D:%X T:%u:%u ",
      Proc.usPid,
      Proc.usUid,
      Proc.usPdb,
      (USHORT)((ulmSecs / 1000) % 60),
      (USHORT)(ulmSecs % 1000));

   vsprintf(szMessage + strlen(szMessage), pszMessage, va);
   fWriteLogging(szMessage);
}
Esempio n. 6
0
int main(int argc, char *argv[])
{
    GetProcInfo();
    return 0;
}
Esempio n. 7
0
int far pascal __loadds FS_FINDFIRST(struct cdfsi far * pcdfsi,      /* pcdfsi   */
                            struct cdfsd far * pcdfsd,      /* pcdfsd   */
                            char far * pName,           /* pName    */
                            unsigned short usCurDirEnd,     /* iCurDirEnd   */
                            unsigned short usAttr,      /* attr     */
                            struct fsfsi far * pfsfsi,      /* pfsfsi   */
                            struct fsfsd far * pfsfsd,      /* pfsfsd   */
                            char far * pData,           /* pData    */
                            unsigned short cbData,      /* cbData   */
                            unsigned short far * pcMatch,   /* pcMatch  */
                            unsigned short usLevel,     /* level    */
                            unsigned short usFlags)     /* flags    */
{
PVOLINFO pVolInfo;
PFINDINFO pFindInfo = (PFINDINFO)pfsfsd;
USHORT rc;
USHORT usIndex;
USHORT usNeededLen;
USHORT usNumClusters;
ULONG  ulCluster;
ULONG  ulDirCluster;
PSZ    pSearch;
PFINFO pNext;
ULONG ulNeededSpace;
USHORT usEntriesWanted;
EAOP   EAOP;
PROCINFO ProcInfo;

   if (f32Parms.fMessageActive & LOG_FS)
      Message("FS_FINDFIRST for %s attr %X, Level %d, cbData %u, MaxEntries %u", pName, usAttr, usLevel, cbData, *pcMatch);

   usEntriesWanted = *pcMatch;
   *pcMatch  = 0;

   if (strlen(pName) > FAT32MAXPATH)
      {
      rc = ERROR_FILENAME_EXCED_RANGE;
      goto FS_FINDFIRSTEXIT;
      }

   memset(pfsfsd, 0, sizeof (struct fsfsd));

   pVolInfo = GetVolInfo(pfsfsi->fsi_hVPB);
   if (IsDriveLocked(pVolInfo))
      {
      rc = ERROR_DRIVE_LOCKED;
      goto FS_FINDFIRSTEXIT;
      }

   switch (usLevel)
      {
      case FIL_STANDARD         :
         usNeededLen = sizeof (FILEFNDBUF) - CCHMAXPATHCOMP;
         break;
      case FIL_QUERYEASIZE      :
         usNeededLen = sizeof (FILEFNDBUF2) - CCHMAXPATHCOMP;
         break;
      case FIL_QUERYEASFROMLIST :
         usNeededLen = sizeof (EAOP) + sizeof (FILEFNDBUF3) + sizeof (ULONG);
         break;
      default                   :
         rc = ERROR_NOT_SUPPORTED;
         goto FS_FINDFIRSTEXIT;
      }

   if (usFlags == FF_GETPOS)
      usNeededLen += sizeof (ULONG);

   if (cbData < usNeededLen)
      {
      rc = ERROR_BUFFER_OVERFLOW;
      goto FS_FINDFIRSTEXIT;
      }

   rc = MY_PROBEBUF(PB_OPWRITE, pData, cbData);
   if (rc)
      {
      Message("FAT32: Protection VIOLATION in FS_FINDFIRST! (SYS%d)", rc);
      return rc;
      }

   if (usLevel == FIL_QUERYEASFROMLIST)
      {
      memcpy(&EAOP, pData, sizeof (EAOP));
      rc = MY_PROBEBUF(PB_OPREAD,
         (PBYTE)EAOP.fpGEAList,
         (USHORT)EAOP.fpGEAList->cbList);
      if (rc)
         goto FS_FINDFIRSTEXIT;
      }
   memset(pData, 0, cbData);

   usNumClusters = 0;
   ulDirCluster = FindDirCluster(pVolInfo,
      pcdfsi,
      pcdfsd,
      pName,
      usCurDirEnd,
      RETURN_PARENT_DIR,
      &pSearch);


   if (ulDirCluster == FAT_EOF)
      {
      rc = ERROR_PATH_NOT_FOUND;
      goto FS_FINDFIRSTEXIT;
      }

   ulCluster = ulDirCluster;
   while (ulCluster && ulCluster != FAT_EOF)
      {
      usNumClusters++;
      ulCluster = GetNextCluster( pVolInfo, ulCluster);
      }

   ulNeededSpace = sizeof (FINFO) + (usNumClusters - 1) * sizeof (ULONG);
   ulNeededSpace += pVolInfo->usClusterSize;

   GetProcInfo(&ProcInfo, sizeof ProcInfo);


   pFindInfo->pInfo = (PFINFO)malloc((size_t)ulNeededSpace);
   if (!pFindInfo->pInfo)
      {
      rc = ERROR_NOT_ENOUGH_MEMORY;
      goto FS_FINDFIRSTEXIT;
      }

   memset(pFindInfo->pInfo, 0, (size_t)ulNeededSpace);
   if (!pVolInfo->pFindInfo)
      pVolInfo->pFindInfo = pFindInfo->pInfo;
   else
      {
      pNext = (PFINFO)pVolInfo->pFindInfo;
      while (pNext->pNextEntry)
         pNext = (PFINFO)pNext->pNextEntry;
      pNext->pNextEntry = pFindInfo->pInfo;
      }

   memcpy(&pFindInfo->pInfo->EAOP, &EAOP, sizeof (EAOP));
   pFindInfo->usEntriesPerCluster = pVolInfo->usClusterSize / sizeof (DIRENTRY);
   pFindInfo->usClusterIndex = 0;
   pFindInfo->pInfo->rgClusters[0] = ulDirCluster;
   pFindInfo->usTotalClusters = usNumClusters;
   pFindInfo->pInfo->pDirEntries =
      (PDIRENTRY)(&pFindInfo->pInfo->rgClusters[usNumClusters]);

   if (f32Parms.fMessageActive & LOG_FIND)
      Message("pInfo at %lX, pDirEntries at %lX",
         pFindInfo->pInfo, pFindInfo->pInfo->pDirEntries);

   pFindInfo->pInfo->pNextEntry = NULL;
   memcpy(&pFindInfo->pInfo->ProcInfo, &ProcInfo, sizeof (PROCINFO));

   strcpy(pFindInfo->pInfo->szSearch, pSearch);
   FSH_UPPERCASE(pFindInfo->pInfo->szSearch, sizeof pFindInfo->pInfo->szSearch, pFindInfo->pInfo->szSearch);

   pFindInfo->ulMaxEntry   = ((ULONG)pVolInfo->usClusterSize / sizeof (DIRENTRY)) * usNumClusters;
   if (!GetCluster(pVolInfo, pFindInfo, 0))
      {
      rc = ERROR_SYS_INTERNAL;
      goto FS_FINDFIRSTEXIT;
      }

   pFindInfo->ulCurEntry = 0;


   if (usAttr & 0x0040)
      {
      pFindInfo->fLongNames = TRUE;
      usAttr &= ~0x0040;
      }
   else
      pFindInfo->fLongNames = FALSE;

   pFindInfo->bMustAttr = (BYTE)(usAttr >> 8);
   usAttr |= (FILE_READONLY | FILE_ARCHIVED);
   usAttr &= (FILE_READONLY | FILE_HIDDEN | FILE_SYSTEM | FILE_DIRECTORY | FILE_ARCHIVED);
   pFindInfo->bAttr = (BYTE)~usAttr;

   if (usLevel == FIL_QUERYEASFROMLIST)
      {
      memcpy(pData, &pFindInfo->pInfo->EAOP, sizeof (EAOP));
      pData += sizeof (EAOP);
      cbData -= sizeof (EAOP);
      }

   rc = 0;
   for (usIndex = 0; usIndex < usEntriesWanted; usIndex++)
      {
      PULONG pulOrdinal;

      if (usFlags == FF_GETPOS)
         {
         if (cbData < sizeof (ULONG))
            {
            rc = ERROR_BUFFER_OVERFLOW;
            break;
            }
         pulOrdinal = (PULONG)pData;
         pData += sizeof (ULONG);
         cbData -= sizeof (ULONG);
         }

      rc = FillDirEntry(pVolInfo, &pData, &cbData, pFindInfo, usLevel);
      if (!rc || (rc == ERROR_EAS_DIDNT_FIT && usIndex == 0))
         {
         if (usFlags == FF_GETPOS)
            *pulOrdinal = pFindInfo->ulCurEntry - 1;
         }
      if (rc)
         break;
      }


   if ((rc == ERROR_NO_MORE_FILES ||
        rc == ERROR_BUFFER_OVERFLOW ||
        rc == ERROR_EAS_DIDNT_FIT)
       && usIndex > 0)
      rc = 0;

   if (rc == ERROR_EAS_DIDNT_FIT && usIndex == 0)
      usIndex = 1;

   *pcMatch = usIndex;


FS_FINDFIRSTEXIT:

   if (f32Parms.fMessageActive & LOG_FS)
      Message("FS_FINDFIRST returned %d (%d entries)",
         rc, *pcMatch);

   if (rc && rc != ERROR_EAS_DIDNT_FIT)
      {
      FS_FINDCLOSE(pfsfsi, pfsfsd);
      }

   return rc;
}
Esempio n. 8
0
LRESULT CALLBACK WindowProc( HWND wnd, DWORD msg, WPARAM wParam, LPARAM lParam )
{
    switch( msg )
    {
        case WM_CREATE:
            break;
        case WM_DESTROY:
            PostQuitMessage( 0 );
            break;
        case WM_COMMAND:
            switch( wParam & 0xFFFF )
            {
                case REFRESH_ID:
                    if( wParam >> 16 == BN_CLICKED )
                    {
                        SendDlgItemMessage( wnd, TREE_ID, TVM_DELETEITEM, 0, (LPARAM)TVI_ROOT );
                        PopulateList( NULL, GetDesktopWindow(), GetDlgItem( wnd, TREE_ID ) );
                    }
                    break;
                case HIGHLIGHT_ID:
                    if( wParam >> 16 == BN_CLICKED )
                    {
                        if( current != NULL )
                        {
                            HighlightWindow( current, 0xFF0000 );
                        }
                    }
                    break;
                case PULL_ID:
                    if( wParam >> 16 == BN_CLICKED )
                    {
                        if( current != NULL )
                        {
                            SetForegroundWindow( current );
                        }
                    }
                    break;
                case DESTROY_ID:
                    if( wParam >> 16 == BN_CLICKED )
                    {
                        if( current != NULL )
                        {
                            SendMessage( current, WM_DESTROY, 0, 0 );
                        }
                    }
                    break;
                case CLOSE_ID:
                    if( wParam >> 16 == BN_CLICKED )
                    {
                        if( current != NULL )
                        {
                            SendMessage( current, WM_CLOSE, 0, 0 );
                        }
                    }
                    break;
                case KILLPROC_ID:
                    if( wParam >> 16 == BN_CLICKED )
                    {
                        if( current != NULL )
                        {
                            KillProcess( current, GetDlgItem( wnd, STATIC_ID ) );
                        }
                    }
                    break;
                case EDITMEM_ID:
                    if( wParam >> 16 == BN_CLICKED )
                    {
                        if( current != NULL )
                        {
                            EditProcMem( current, GetDlgItem( wnd, STATIC_ID ) );
                        }
                    }
                    break;
                case SHOW_ID:
                    if( wParam >> 16 == BN_CLICKED )
                    {
                        if( current != NULL )
                        {
                            ShowWindow( current, SW_SHOW );
                            UpdateWindow( current );
                        }
                    }
                    break;
                case HIDE_ID:
                    if( wParam >> 16 == BN_CLICKED )
                    {
                        if( current != NULL )
                        {
                            ShowWindow( current, SW_HIDE );
                            UpdateWindow( current );
                        }
                    }
                    break;
                case REDRAW_ID:
                    if( wParam >> 16 == BN_CLICKED )
                    {
                        if( current != NULL )
                        {
                            RedrawWindow( current, NULL, NULL, RDW_ERASE | RDW_INVALIDATE );
                            UpdateWindow( current );
                        }
                    }
                    break;
                default:
                    break;
            }
            break;
        case WM_NOTIFY:
            if( wParam == TREE_ID )
            {
                if( ((NM_TREEVIEW*)lParam)->hdr.code == TVN_SELCHANGED )
                {
                    current = (HWND)((NM_TREEVIEW*)lParam)->itemNew.lParam;
                    GetProcInfo( current, GetDlgItem( wnd, STATIC_ID ));
                }
            }
            break;
        default:
            return DefWindowProc( wnd, msg, wParam, lParam );
    }

    return 0;
}
Esempio n. 9
0
int CBaseVision::Active()
{
	GetProcInfo();
	
	signal(SIGCHLD, sig_chld);
	
	m_mapShmKey.clear();
	
	string strAbsName = "";

	// 存在父进程?
	if (!m_ppname.empty())
	{
		strAbsName = m_strCwd + string("/") + m_pname;
		
		key_t shmkey;
		// 注册通信模块
		if ((shmkey = CMt::mt_init(SHM_MODE, strAbsName.c_str(), m_pid, GetShmSize(m_pname), sizeof(FEEDBACK_DATA))) == -1)
		{
			LOGE("%s register share memory connection module error. %s : %d\n", m_pname.c_str(), __FILE__, __LINE__);
			return -1;
		}
		
		m_mapShmKey[m_pname] = shmkey;
	
		strAbsName = m_strCwd + string("/") + m_ppname;
		// 注册消息发送模块  (ppname, ppid) : key
		if ((m_skey = CMt::mt_init(SEM_MODE, strAbsName.c_str(), m_ppid)) == -1)
		{
			LOGE("%s register msg module error. %s : %d\n", m_pname.c_str(), __FILE__, __LINE__);
			return -1;
		}
		
		// 注册消息发送定时器 #key
		CreateTimer(SendHeartBeat, &m_sTimerid, this);
		
		// 启动定时器
		SetTimer(m_sTimerid);
	}
	
	// 存在子进程?
	if (m_vProcInfo.size() > 0)
	{
		// 注册通信模块
		vector<PROC_INFO>::iterator itr = m_vProcInfo.begin();
		for (; itr != m_vProcInfo.end(); ++itr)
		{
			strAbsName = m_strCwd + string("/") + itr->pname;

			key_t key = CMt::mt_init(SHM_MODE, strAbsName.c_str(), itr->pid, GetShmSize(itr->pname), sizeof(FEEDBACK_DATA));
			if (-1 == key)
			{
				LOGE("%s register share memory connection module error. %s : %d\n", m_pname.c_str(), __FILE__, __LINE__);
				return -1;
			}
			
			m_mapShmKey[itr->pname] = key;
		}
	
		strAbsName = m_strCwd + string("/") + m_pname;
		// 注册消息接收模块  (pname, pid)
		if ((m_rkey = CMt::mt_init(SEM_MODE, strAbsName.c_str(), m_pid)) == -1)
		{
			LOGE("%s register msg module error. %s : %d\n", m_pname.c_str(), __FILE__, __LINE__);
			return -1;
		}
		
		// 注册消息接收定时器
		CreateTimer(RecvHeartBeat, &m_rTimerid, this);
		
		// 启动定时器
		SetTimer(m_rTimerid);
	}
	
	// 默认注册线程函数Run
	RegisterPthread(&CBaseVision::Run);
	
	return 0;
}