示例#1
0
DWORD WINAPI WatchDog::Thread_WatchDog_HeartBeat(LPVOID pParam)//zhouzx
{
	WatchDog * pThis = (WatchDog *)pParam;
	DOG_STATUS struDogStatus;

	for(;;)
	{
		//给看门狗发送正常的心跳接口
		SendHeartbeat(DOG_NORMAL);

		//狗进程不存在时重启狗进程
		struDogStatus = GetWatchdogStatus();
		if (DOG_NOTACTIVE == struDogStatus)
		{
			//TRACE("==YQ== 狗进程重启!!!");
			OpenWatchDog(6);
		}

		//控制发送心跳的时间间隔
		if(WaitForSingleObject(pThis->m_hCloseWatchDogEvent,6000) == WAIT_OBJECT_0)
		{
			break;
		}
	}

	return 0;
}
示例#2
0
void WatchDog::RunWatchDog(bool bNotice)
{
	if (false == m_bOpenWatchDog)
	{//关闭看门狗
		ClosedWatchDog();
		return;
	}

	//看门狗已启动
	if (m_hWatchDog)
	{
		return;
	}

	//启动看门狗
	//第一个接口函数,传递心跳间隔
	if(OpenWatchDog(6))
	{
		//传递服务器所在pc的登陆用户名和密码,为自动重启所用
		//if (!WriteAdminInfoToFileEX(m_chSysName, m_chSysPassWord))
		//{
		//	AfxMessageBox(_T("用户信息保存失败!"), MB_OK | MB_ICONINFORMATION);
		//}

		//创建发送心跳的线程和控制线程退出的事件
		DWORD dwRet;
		m_hCloseWatchDogEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
		m_hWatchDog = CreateThread(NULL,0, LPTHREAD_START_ROUTINE (Thread_WatchDog_HeartBeat), (void*)this,0,&dwRet);


		LOG(LEVEL_INFO, "开启看门狗程序");

		if (m_hWatchDog && bNotice)
		{
			AfxMessageBox(_T("启动看门狗成功!"), MB_ICONINFORMATION);
		}

	}
	else 
	{
		AfxMessageBox(_T("启动看门狗失败!"),MB_ICONSTOP);
	}

}
示例#3
0
int CWatchDog_BF518::run()
{
	OpenRunLight();

	return OpenWatchDog();
}