日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
C++中的C++代碼真的這么復(fù)雜嗎

下面著重講述學(xué)習(xí)C++時(shí)碰到的C++代碼編程的相關(guān)問題,以及如何進(jìn)行編制C++代碼的技巧,如何更好的進(jìn)行C++代碼編制,掌握了C++代碼編制問題就等于說是整個(gè)軟件開發(fā)周期少了不少彎路,降低工作的復(fù)雜性。

創(chuàng)新互聯(lián)是專業(yè)的桂東網(wǎng)站建設(shè)公司,桂東接單;提供成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行桂東網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

 
 
 
  1. void main()  
  2. {  
  3.     SERVICE_TABLE_ENTRY ServiceTable[2];  
  4.     ServiceTable[0].lpServiceName = "Name";//線程名字  
  5.     ServiceTable[0].lpServiceProc = (LPSERVICE_MAIN_FUNCTION)ServiceMain;//線程入口地址  
  6.     ServiceTable[1].lpServiceName = NULL;  
  7.     ServiceTable[1].lpServiceProc = NULL;//最后一個(gè)必須為NULL  
  8.     StartServiceCtrlDispatcher(ServiceTable);// 啟動(dòng)服務(wù)的控制分派機(jī)線程  

對(duì)于Service程序來說,它一般又由以下四部分組成:main(),ServiceMain()和Handler()當(dāng)然還有我們的功能實(shí)現(xiàn)函數(shù)比如MyWork()它們之間的關(guān)系,用一個(gè)簡單的圖示就可以了然。

其服務(wù)程序的基本流程就是由main()調(diào)用ServiceMain()而由ServiceMain()調(diào)用Handler()和執(zhí)行功能函數(shù)MyWork()到現(xiàn)在為止,你以經(jīng)大體了解了服務(wù)程序的流程,按上面的流程一步一步來實(shí)現(xiàn)這個(gè)后門程序。

1.程序的入口main()函數(shù)

服務(wù)程序的入口與普通程序一樣也是從main()開始,但不同的是服務(wù)程序的main極為簡單,因?yàn)樗回?fù)責(zé)創(chuàng)建分派表并啟動(dòng)控制分派機(jī),其C++代碼如下:

 
 
 
  1. void main()  
  2. {  
  3.     SERVICE_TABLE_ENTRY ServiceTable[2];  
  4.     ServiceTable[0].lpServiceName = "Name";//線程名字  
  5.     ServiceTable[0].lpServiceProc = (LPSERVICE_MAIN_FUNCTION)ServiceMain;//線程入口地址  
  6.     ServiceTable[1].lpServiceName = NULL;  
  7.     ServiceTable[1].lpServiceProc = NULL;//最后一個(gè)必須為NULL  
  8.     StartServiceCtrlDispatcher(ServiceTable);// 啟動(dòng)服務(wù)的控制分派機(jī)線程  

2. 服務(wù)的真正入口ServiceMain()

ServiceMain()是Service程序的真正入口點(diǎn),它主要完成以下功能,首先注冊(cè)一個(gè)Handler去處理控制程序或控制面板,Service的控制要求,比如 啟動(dòng),停止,暫停重起等,其次就是實(shí)現(xiàn)我們的功能操作,其實(shí)現(xiàn)C++代碼如下:

 
 
 
  1. VOID WINAPI ServiceMain( DWORD dwArgc, LPTSTR *lpszArgv )  
  2. {  
  3.     DWORD   status = 0;   
  4.     DWORD   specificError = 0xfffffff;   
  5.     ServiceStatus.dwServiceType        = SERVICE_WIN32;   
  6.     ServiceStatus.dwCurrentState       = SERVICE_START_PENDING;   
  7.     ServiceStatus.dwControlsAccepted   = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN | SERVICE_ACCEPT_PAUSE_CONTINUE;   
  8.     ServiceStatus.dwWin32ExitCode      = 0;   
  9.     ServiceStatus.dwServiceSpecificExitCode = 0;   
  10.     ServiceStatus.dwCheckPoint         = 0;   
  11.     ServiceStatus.dwWaitHint           = 0;   
  12.     //調(diào)用RegisterServiceCtrlHandler()注冊(cè)一個(gè)ServiceHandler函數(shù)用來處理程序?qū)ervice的控制要求  
  13.     hStatus = RegisterServiceCtrlHandler("ServiceName",(LPHANDLER_FUNCTION)ServiceHandler);   
  14.     if (hStatus==0)   
  15.         return;   
  16.  
  17.     // Handle error condition   
  18.     status = GetLastError();   
  19.     if (status!=NO_ERROR)   
  20.     {   
  21.         ServiceStatus.dwCurrentState       = SERVICE_STOPPED;   
  22.         ServiceStatus.dwCheckPoint         = 0;   
  23.         ServiceStatus.dwWaitHint           = 0;   
  24.         ServiceStatus.dwWin32ExitCode      = status;   
  25.         ServiceStatus.dwServiceSpecificExitCode = specificError;   
  26.         SetServiceStatus(hStatus, &ServiceStatus);   
  27.         return;   
  28.     }   
  29.  
  30.     // Initialization complete - report running status   
  31.     ServiceStatus.dwCurrentState       = SERVICE_RUNNING;   
  32.     ServiceStatus.dwCheckPoint         = 0;   
  33.     ServiceStatus.dwWaitHint           = 0;    
  34.     SetServiceStatus(hStatus, &ServiceStatus);  
  35.  
  36.   //啟動(dòng)自己的工作線程  
  37.    HANDLE hThread=CreateThread(NULL,0,mainfun,NULL,0,NULL);  
  38.    if(hThread==NULL)  
  39.        return;  

【編輯推薦】

  1. 簡介學(xué)習(xí)C++總結(jié)之談
  2. 對(duì)C++庫函數(shù)進(jìn)行學(xué)習(xí)探索總結(jié)筆記
  3. C++類庫設(shè)計(jì)的基本構(gòu)思與方法
  4. C++語言真的還有市場價(jià)值?
  5. C++類庫設(shè)計(jì)的基本構(gòu)思與方法

分享文章:C++中的C++代碼真的這么復(fù)雜嗎
本文鏈接:http://www.5511xx.com/article/djocppg.html