⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 ice中间件 文件传输原代码 更新为服务形式
💻 CPP
字号:
#include <IceUtil/UUID.h>
#include <Ice/Ice.h>
#include "PatchI.h"
#include <windows.h>

#if !defined(NDEBUG) && !defined(_STLP_DEBUG)
#   define _STLP_DEBUG
#endif
////////////////////////////////////////////////////////////
// Declare several global variables to share 
// their values across multiple functions of your program.
////////////////////////////////////////////////////////////
SERVICE_STATUS          ServiceStatus; 
SERVICE_STATUS_HANDLE   hStatus; 

////////////////////////////////////////////////////////////
// Make the forward definitions of functions prototypes.
//
////////////////////////////////////////////////////////////
void  ServiceMain(int argc, char** argv); 
void  ControlHandler(DWORD request); 

// Control Handler
void ControlHandler(DWORD request) 
{ 
   switch(request) 
   { 
      case SERVICE_CONTROL_STOP: 
		 ServiceStatus.dwWin32ExitCode = 0; 
         ServiceStatus.dwCurrentState = SERVICE_STOPPED; 
         SetServiceStatus (hStatus, &ServiceStatus);
         return; 
 
      case SERVICE_CONTROL_SHUTDOWN: 
		 ServiceStatus.dwWin32ExitCode = 0; 
         ServiceStatus.dwCurrentState = SERVICE_STOPPED; 
         SetServiceStatus (hStatus, &ServiceStatus);
         return; 
        
      default:
         break;
    } 
     // Report current status
    SetServiceStatus (hStatus, &ServiceStatus);
    return; 
}

void ServiceMain(int argc, char** argv) 
{ 
   ServiceStatus.dwServiceType = SERVICE_WIN32; 
   ServiceStatus.dwCurrentState = SERVICE_START_PENDING; 
   ServiceStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP|SERVICE_ACCEPT_SHUTDOWN;
   ServiceStatus.dwWin32ExitCode = 0; 
   ServiceStatus.dwServiceSpecificExitCode = 0; 
   ServiceStatus.dwCheckPoint = 0; 
   ServiceStatus.dwWaitHint = 0; 
 
   hStatus = RegisterServiceCtrlHandler("UpdateService",(LPHANDLER_FUNCTION)ControlHandler); 
   if (hStatus == (SERVICE_STATUS_HANDLE)0) 
   { 
      // Registering Control Handler failed
      return; 
   }  

   // We report the running status to SCM. 
   ServiceStatus.dwCurrentState = SERVICE_RUNNING; 
   SetServiceStatus (hStatus, &ServiceStatus);
   
   // The worker loop of a service
   int status = 0;
   Ice::CommunicatorPtr ic;
   try
   {
	   int argc = 0;
	   ic = Ice::initialize(argc, 0);
	   
	   Ice::ObjectAdapterPtr adapter = ic->createObjectAdapterWithEndpoints("PatchServer", "default -p 11020");
	   // FileHelp theFileHelp = new FileHelp;
	   Ice::ObjectPtr object = new UpdateServerI();
	   
	   adapter->add(object, Ice::stringToIdentity("PatchPro"));
	   
	   adapter->activate();
	   
	   ic->waitForShutdown();
   }
   catch (const Ice::Exception & e)
   {
	   cerr << e << endl;
	   status = 1;
   }
   catch (const char * msg)
   {
	   cerr << msg << endl;
	   status = 1;
   }
   
   if (ic)
   {
	   ic->destroy();
   }
   
   
   return; 
}

void main(int argc, char* argv[])
{ 
   SERVICE_TABLE_ENTRY ServiceTable[2];
   ServiceTable[0].lpServiceName = "UpdateService";
   ServiceTable[0].lpServiceProc = (LPSERVICE_MAIN_FUNCTION)ServiceMain;

   ServiceTable[1].lpServiceName = NULL;
   ServiceTable[1].lpServiceProc = NULL;
   // Start the control dispatcher thread for our service
   StartServiceCtrlDispatcher(ServiceTable);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -