青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

大龍的博客

常用鏈接

統(tǒng)計

最新評論

Windows服務

Windows服務是其實一種特殊的二進制可執(zhí)行文件,后綴名一般為EXE,之所以說它特殊,因為它具有同Windows   NT/2K系統(tǒng)的服務控制管理器(SCM:   Service   Control   Manager)通信。  
          服務控制管理器通過維護數據庫對已經安裝到系統(tǒng)的所有服務和驅動程序進行統(tǒng)一而安全的控制和管理。服務控制管理器是一個遠程進程調用(RPC)服務器,在系統(tǒng)導入時自動啟動。  
          一個簡單的服務程序至少包括一些幾個部分:  
        1.   Win32/控制臺應用主程序;  
        2.   一個服務主程序,作為服務的導入點;  
        3.   一個服務控制處理器,就是同服務控制管理器SCM通信的函數;  
        4.   一個服務安裝/反安裝程序用于將一個EXE文件注冊為一個服務。  
        下面我們針對上述幾個部分分別介紹怎樣構造一個Windows服務。  
   
  控制臺應用主程序  
   
  在Win32下為WinMain函數,在控制臺下為main函數,是服務的主程序。下面是服務主程序中至少要包含的語句。  
  #include   "Winsvc.h"                                                 //服務頭文件  
  main()  
  {  
          ......  
          SERVICE_TABLE_ENTRY   Table[]={{"gkeyService",gkeyServiceMain},{NULL,NULL}};      
          StartServiceCtrlDispatcher(Table);    
                  ......  
  }  
  當然這是一個非常簡單的主程序了。這里main只做了一件事情,就是填寫SERVICE_TABLE_ENTRY結構數組Table。Table[0][0]是服務的名字(可以是您喜歡的任意字符串,此處我用的是gkeyService);Table[0][1]指定了服務主程序的名字,實際上這是一個指向服務主程序的函數指針,它也可以用您喜歡的函數名字(我用的是gkeyServiceMain)?,F在通過調用參數為SERVICE_TABLE_ENTRY結構數組的函數StartServiceCtrlDispatcher()開始啟動服務解析。注意這個函數的參數必須要符合一定的格式,Table[1][0]和Table[1][1]必須是NULL,就是說到了數組的結尾。當然并非必須這樣,如果需要在這個執(zhí)行程序中運行多個服務,可以在這個數組列表中加入更多的入口,構成多對服務名稱和服務中程序,自然您需要在以下的步驟中需要為每個服務構造相應的完成函數。  
   
  服務主程序  
  典型的服務主程序的聲明如下:  
  void   WINAPI   gkeyServiceMain(   DWORD   argc,   LPTSTR   *argv   )  
   
          在gkeyServiceMain函數中,需要實現的主要步驟包括:    
  1.   用合適的值填寫SERVICE_STATUS結構來完成同服務控制管理器SCM的通信;  
  2.   在列表中注冊前面所說的服務控制處理函數;  
  3.   調用實際的處理函數。  
   
          為了完成上述功能,需要使用兩個全局變量:  
  SERVICE_STATUS                   m_ServiceStatus;  
  SERVICE_STATUS_HANDLE           m_ServiceStatusHandle;  
   
          服務主程序gkeyServiceMain()能夠象通常的c/c++里的main()函數一樣接受命令行參數,并且接受參數的方式也完全一樣。第一個參數argc包含了傳遞給服務的參數個數,同c/c++的main()一樣至少有一個參數就是服務應用本身。第二個參數是一個字符指針數組的指針。同main()函數一樣,數組的第一個值總是指向服務的名字。  
          使用SERVICE_STATUS數據結構記錄服務的當前狀態(tài),并將狀態(tài)及時通告給服務控制管理器SCM,使用一個API函數SetServiceStatus()來實現這一目標。SERVICE_STATUS的數據成結構員如下:  
   
  dwServiceType                 =   SERVICE_WIN32;                    
  dwCurrentState               =  
SERVICE_START_PENDING;   //   試圖啟動(初始狀態(tài))  
  dwControlsAccepted       =   SERVICE_ACCEPT_STOP;       //   僅接收服務控制程序的啟動/停止,服務控制程序通常在  
   
  Windows   NT下的控制面板或者Windows   2K下的管理工具,我們也可以設置服務接受暫停/繼續(xù)功能。  
   
          在服務主程序gkeyServiceMain()的開始應該設置SERVICE_STATUS的狀態(tài)字段dwCurrentState為SERVICE_START_PENDING,通知SCM服務處于運行狀態(tài)。如果發(fā)生錯誤,應該發(fā)送SERVICE_STOPPED通知服務控制管理器SCM。缺省狀態(tài)下,服務控制管理器SCM將監(jiān)視服務的活動,如果2分鐘之類沒有發(fā)現進程活動就殺死這個服務。  
          使用API函數RegisterServiceCtrlHandler()設置服務控制管理器SCM的服務控制處理函數,這個函數需要兩個參數,一個是服務名稱字符串,一個是服務控制處理函數句柄。  
          現在要設置dwCurrentState為SERVICE_RUNNING用以通知服務已經啟動。  
   
  服務控制處理函數  
   
          服務控制管理器SCM使用服務控制處理函數和服務程序進行通信來了解服務的諸如啟動、停止、暫?;蚶^續(xù)等用戶指令,它主要包含一個switch語句來處理每種情況,調用相應的步驟來啟動、急需、清除和中斷進程。函數收到一個象SERVICE_CONTROL_PAUSE,   SERVICE_CONTROL_CONTINUE,   SERVICE_CONTROL_STOP,   SERVICE_CONTROL_INTERROGATE等操作碼,就需要為每種指令提供相應的處理步驟。  
   
  安裝/反安裝  
   
          要安裝一個服務,在系統(tǒng)注冊時需要生成一些入口,通常使用Windows有現成的API而不是注冊函數來完成這些步驟,這些函數有CreateService()和DeleteService()。為了安裝服務,首先使用OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS)打開服務控制管理器SCM。然后調用CreateService()來建立服務,給出服務的名字,如果要刪除指定的服務,也將需要使用這個名字刪除。  
   
  例子代碼如下:  
  //   創(chuàng)建服務  
  String   strSrvName   =   Application->ExeName;  
  SC_HANDLE   schService   =   CreateService(  
                  scm,  
                  "ccrunSrv",                       //   服務名稱  
                  "ccrun's   Service",         //   服務詳細說明  
                  SERVICE_ALL_ACCESS,  
                  SERVICE_WIN32_OWN_PROCESS   |   SERVICE_INTERACTIVE_PROCESS,  
                  SERVICE_AUTO_START,       //   以自動方式開始  
                  SERVICE_ERROR_NORMAL,  
                  strSrvName.c_str(),       //   Service本體程序路徑,必須與具體位置相符  
                  NULL,  
                  NULL,  
                  NULL,  
                  NULL,  
                  NULL);  
  if(schService   !=   NULL)  
  {  
          CloseServiceHandle(schService);  
  }  
  //---------------------------------------------------------------------------  
  //   開始Service  
  sHandle   =   OpenService(scm,   "ccrunSrv",   SERVICE_START);  
  if(sHandle!=NULL)  
  {  
          StartService(sHandle,   0,   NULL);  
          CloseServiceHandle(sHandle);  
  }  
  //---------------------------------------------------------------------------  
  //   關閉服務管理器  
  CloseServiceHandle(scm);  

posted on 2007-12-21 10:16 大龍 閱讀(1341) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發(fā)表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲国产女人aaa毛片在线| 久久国产日韩| 午夜亚洲视频| 亚洲婷婷在线| 亚洲无线视频| 亚洲免费一在线| 午夜久久tv| 久久综合九色99| 亚洲电影av在线| 日韩一二三在线视频播| 亚洲一区成人| 欧美在线视频播放| 欧美激情 亚洲a∨综合| 国产精品麻豆欧美日韩ww| 国内精品久久久久影院色| 影音先锋日韩资源| 一区二区不卡在线视频 午夜欧美不卡在| 中文一区字幕| 久久久之久亚州精品露出| 欧美成人资源网| 亚洲手机成人高清视频| 久久综合久久久久88| 欧美视频福利| 亚洲高清123| 欧美一区二区日韩| 亚洲国产精品123| 亚洲一区二区三区中文字幕| 久久精品国产在热久久| 欧美激情视频一区二区三区在线播放| 国产欧美一区二区三区久久人妖| 在线视频国内自拍亚洲视频| 午夜精品久久久99热福利| 欧美激情1区2区| 香港成人在线视频| 欧美日韩精品在线观看| 伊人精品成人久久综合软件| 欧美在线999| 亚洲三级视频在线观看| 久久精品91| 国产精品制服诱惑| 在线视频亚洲一区| 亚洲高清不卡在线| 久久久久一区| 韩日午夜在线资源一区二区| 性8sex亚洲区入口| 在线亚洲美日韩| 欧美精品一区在线发布| 亚洲电影在线观看| 久久这里只精品最新地址| 亚洲一区日韩| 国产精品日本欧美一区二区三区| 亚洲精品黄网在线观看| 免费h精品视频在线播放| 性欧美1819sex性高清| 国产精品日韩一区| 亚洲欧美中文在线视频| 99在线精品视频| 欧美日韩国产综合视频在线观看| 亚洲精品综合精品自拍| 欧美黄色aaaa| 女仆av观看一区| 亚洲九九精品| 亚洲精品少妇| 欧美日韩国产三级| 亚洲一区二区精品视频| 日韩视频免费观看| 国产精品久久久久久久久久免费| 亚洲午夜视频在线观看| 日韩香蕉视频| 国产精品观看| 久久精品国产精品亚洲精品| 欧美中文字幕视频| 在线免费观看视频一区| 亚洲第一精品夜夜躁人人躁 | 亚洲激情第一区| 欧美成人黑人xx视频免费观看| 亚洲高清不卡在线观看| 亚洲国产精品成人精品| 欧美日韩亚洲天堂| 欧美一区二区精品| 久久久蜜臀国产一区二区| 精品不卡在线| 亚洲国产导航| 国产精品伦理| 久久综合影视| 欧美—级在线免费片| 亚洲女同性videos| 久久都是精品| 一本色道久久综合狠狠躁的推荐| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 欧美色欧美亚洲高清在线视频| 在线亚洲一区观看| 亚洲在线成人精品| 亚洲激情网站| 亚洲一级在线观看| 亚洲人成毛片在线播放| 亚洲作爱视频| 伊人久久大香线| 亚洲综合成人婷婷小说| 亚洲人成欧美中文字幕| 日韩一区二区久久| 在线播放不卡| 亚洲天堂成人在线视频| 在线看成人片| 性欧美1819sex性高清| 一区二区三区四区五区精品视频| 欧美伊人久久| 亚洲视频一二区| 男女激情视频一区| 久久午夜视频| 欧美电影免费观看高清完整版| 久久精品人人爽| 欧美性开放视频| 欧美成人午夜剧场免费观看| 国产精品一区三区| 亚洲人成小说网站色在线 | 9i看片成人免费高清| 欧美一区二区三区喷汁尤物| 一本久久青青| 美女主播一区| 看片网站欧美日韩| 国产日韩视频| 亚洲免费在线| 亚洲一区激情| 欧美日韩亚洲一区二区三区在线观看| 久久综合久久综合久久综合| 欧美视频一区二区三区四区| 欧美国产免费| 极品少妇一区二区三区| 欧美淫片网站| 久久国产精品久久国产精品| 国产精品爱啪在线线免费观看| 欧美激情国产高清| 国产亚洲欧美日韩日本| 欧美亚洲色图校园春色| 欧美一区二区三区在线视频| 欧美色精品在线视频| 99成人免费视频| 亚洲一区国产精品| 国产精品毛片高清在线完整版| 99精品视频免费全部在线| 一区二区三区免费网站| 欧美区视频在线观看| 91久久中文字幕| 亚洲精品久久久蜜桃 | 欧美美女操人视频| 一区二区免费看| 午夜精品久久久久久久男人的天堂 | 欧美一区二区私人影院日本| 欧美日韩免费观看一区=区三区| 亚洲国产一成人久久精品| 亚洲精品欧美日韩专区| 欧美日韩激情小视频| 亚洲一级黄色| 久久人人爽国产| 亚洲黄一区二区三区| 欧美日韩亚洲一区二区三区在线观看| 一区二区三区精品视频| 欧美在线影院| 精品成人在线观看| 欧美精品一区二区三区四区| 亚洲图片激情小说| 美女91精品| 亚洲一级特黄| 加勒比av一区二区| 欧美午夜www高清视频| 羞羞视频在线观看欧美| 欧美黄色大片网站| 亚洲免费网站| 亚洲人成欧美中文字幕| 国产精品制服诱惑| 蜜臀va亚洲va欧美va天堂| 一区二区欧美日韩| 美日韩丰满少妇在线观看| 亚洲天堂av综合网| 激情偷拍久久| 国产精品黄视频| 久久亚洲一区二区| 亚洲欧美国产精品桃花| 欧美大片91| 亚洲欧美一区二区原创| 亚洲第一网站免费视频| 国产精品自拍三区| 欧美区国产区| 免费不卡亚洲欧美| 欧美一二区视频| 99在线精品视频在线观看| 欧美国产91| 久久综合伊人77777麻豆| 亚洲在线成人精品| 亚洲欧洲另类| 影音先锋国产精品| 国产欧美成人| 国产精品a级| 欧美国产激情二区三区| 久久婷婷综合激情| 欧美一区二区三区免费观看 | 亚洲最新合集| 9人人澡人人爽人人精品| 欧美成人在线网站|