版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
個(gè)人收集整理-ZQ被設(shè)計(jì)用于需要在后臺(tái)運(yùn)行地程序以及實(shí)現(xiàn)沒有用戶交互地任務(wù).為了學(xué)習(xí)這種控制臺(tái)應(yīng)用程序地基礎(chǔ)知識(shí),(不是)是最佳選擇.本文將建立并實(shí)現(xiàn)一個(gè)簡單地服務(wù)程序,其功能是查詢系統(tǒng)中可用物理數(shù)量,然后將結(jié)果寫入一個(gè)文本文件.最后,你可以用所學(xué)知識(shí)編寫自己地服務(wù).當(dāng)初我寫第一個(gè)服務(wù)時(shí),我到上找例子.在那里我找到了一篇 寫地文章:“ 〃,這篇文章附帶一個(gè)例子.雖然這篇文章很好地解釋了服務(wù)地開發(fā)過程,但是,我仍然感覺缺少我需要地重要信息.我想理解通過什么框架,調(diào)用什么函數(shù),以及何時(shí)調(diào)用,但在這方面沒有讓我輕松多少.面向?qū)ο蟮胤椒ü倘环奖?,但由于用類?duì)底層函數(shù)調(diào)用進(jìn)行了封裝,它不利于學(xué)習(xí)服務(wù)程序地基本知識(shí).這就是為什么我覺得更加適合于編寫初級(jí)服務(wù)程序或者實(shí)現(xiàn)簡單后臺(tái)任務(wù)地服務(wù).在你對(duì)服務(wù)程序有了充分透徹地理解之后,用編寫才能游刃有余.當(dāng)我離開原來地工作崗位,不得不向另一個(gè)人轉(zhuǎn)移我地知識(shí)地時(shí)候,利用我用所寫地例子就非常容易解釋服務(wù)之所以然.文檔來自于網(wǎng)絡(luò)搜索服務(wù)是一個(gè)運(yùn)行在后臺(tái)并實(shí)現(xiàn)勿需用戶交互地任務(wù)地控制臺(tái)程序.提供為服務(wù)程序提供專門地支持.人們可以用服務(wù)控制面板來配置安裝好地服務(wù)程序,也就是控制面板管理工具中地“服務(wù)〃(或在“開始〃”運(yùn)行〃對(duì)話框中輸入一一譯者注).可以將服務(wù)配置成操作系統(tǒng)啟動(dòng)時(shí)自動(dòng)啟動(dòng),這樣你就不必每次再重啟系統(tǒng)后還要手動(dòng)啟動(dòng)服務(wù).文檔來自于網(wǎng)絡(luò)搜索本文將首先解釋如何創(chuàng)建一個(gè)定期查詢可用物理內(nèi)存并將結(jié)果寫入某個(gè)文本文件地服務(wù).然后指導(dǎo)你完成生成,安裝和實(shí)現(xiàn)服務(wù)地整個(gè)過程.文檔來自于網(wǎng)絡(luò)搜索第一步:主函數(shù)和全局定義首先,包含所需地頭文件.例子要調(diào)用函數(shù)(.)和磁盤文件寫入(.):文檔來自于網(wǎng)絡(luò)搜索以下是引用片段:個(gè)人收集整理-ZQ接著,定義兩個(gè)常量:以下是引用片段:":\\\\"指定兩次連續(xù)查詢可用內(nèi)存之間地毫秒間隔.在第二步中編寫服務(wù)工作循環(huán)地時(shí)候要使用該常量.文檔來自于網(wǎng)絡(luò)搜索定義日志文件地路徑,你將會(huì)用 函數(shù)將內(nèi)存查詢地結(jié)果輸出到該文件,函數(shù)定義如下:文檔來自于網(wǎng)絡(luò)搜索以下是引用片段:(*):;(J");(,"\",);();聲明幾個(gè)全局變量,以便在程序地多個(gè)函數(shù)之間共享它們值.此外,做一個(gè)函數(shù)地前向定義:以下是引用片段:(,**);();();現(xiàn)在,準(zhǔn)備工作已經(jīng)就緒,你可以開始編碼了.服務(wù)程序控制臺(tái)程序地一個(gè)子集.因此,開始你可以定義一個(gè)函數(shù),它是程序地入口點(diǎn).對(duì)于服務(wù)程序來說,地代碼令人驚訝地簡短,因?yàn)樗粍?chuàng)建分派表并啟動(dòng)控制分派機(jī).文檔來自于網(wǎng)絡(luò)搜索以下是引用片段::[]"";[]();[];[];啟動(dòng)服務(wù)地控制分派機(jī)線個(gè)人收集整理-ZQ程();一個(gè)程序可能包含若干個(gè)服務(wù).每一個(gè)服務(wù)都必須列于專門地分派表中(為此該程序定義了一個(gè)結(jié)構(gòu)數(shù)組).這個(gè)表中地每一項(xiàng)都要在結(jié)構(gòu)之中.它有兩個(gè)域:文檔來自于網(wǎng)絡(luò)搜索:指向表示服務(wù)名稱字符串地指針;當(dāng)定義了多個(gè)服務(wù)時(shí),那么這個(gè)域必須指定;文檔來自于網(wǎng)絡(luò)搜索:指向服務(wù)主函數(shù)地指針(服務(wù)入口點(diǎn));分派表地最后一項(xiàng)必須是服務(wù)名和服務(wù)主函數(shù)域地指針,文本例子程序中只宿主一個(gè)服務(wù),所以服務(wù)名地定義是可選地.文檔來自于網(wǎng)絡(luò)搜索服務(wù)控制管理器(:)是一個(gè)管理系統(tǒng)所有服務(wù)地進(jìn)程當(dāng)啟動(dòng)某個(gè)服務(wù)時(shí),它等待某個(gè)進(jìn)程地主線程來調(diào)用 函數(shù).將分派表傳遞給.這將把調(diào)用進(jìn)程地主線程轉(zhuǎn)換為控制分派器.該分派器啟動(dòng)一個(gè)新線程,該線程運(yùn)行分派表中每個(gè)服務(wù)地函數(shù)(本文例子中只有一個(gè)服務(wù))分派器還監(jiān)視程序中所有服務(wù)地執(zhí)行情況.然后分派器將控制請(qǐng)求從傳給服務(wù).文檔來自于網(wǎng)絡(luò)搜索注意:如果 函數(shù)秒沒有被調(diào)用,便會(huì)報(bào)錯(cuò),為了避免這種情況,我們必須在函數(shù)中(參見本文例子)或在非主函數(shù)地單獨(dú)線程中初始化服務(wù)分派表.本文所描述地服務(wù)不需要防范這樣地情況.文檔來自于網(wǎng)絡(luò)搜索分派表中所有地服務(wù)執(zhí)行完之后(例如,用戶通過“服務(wù)〃控制面板程序停止它們),或者發(fā)生錯(cuò)誤時(shí). 調(diào)用返回.然后主進(jìn)程終止.文檔來自于網(wǎng)絡(luò)搜索第二步:函數(shù)展示了地代碼.該函數(shù)是服務(wù)地入口點(diǎn).它運(yùn)行在一個(gè)單獨(dú)地線程當(dāng)中,這個(gè)線程是由控制分派器創(chuàng)建地.應(yīng)該盡可能早早為服務(wù)注冊控制處理器.這要通過調(diào)用函數(shù)來實(shí)現(xiàn).你要將兩個(gè)參數(shù)傳遞給此函數(shù):服務(wù)名和指向 地指針.文檔來自于網(wǎng)絡(luò)搜索它指示控制分派器調(diào)用函數(shù)處理控制請(qǐng)求.注冊完控制處理器之后,獲得狀態(tài)句柄().通過調(diào)用 函數(shù),用向報(bào)告服務(wù)地狀態(tài).文檔來自于網(wǎng)絡(luò)搜索展示了如何指定服務(wù)特征和其當(dāng)前狀態(tài)來初始化結(jié)構(gòu),結(jié)構(gòu)地每個(gè)域都有其用途:文檔來自于網(wǎng)絡(luò)搜索個(gè)人收集整理-ZQ:指示服務(wù)類型,創(chuàng)建服務(wù).賦值;文檔來自于網(wǎng)絡(luò)搜索:指定服務(wù)地當(dāng)前狀態(tài).因?yàn)榉?wù)地初始化在這里沒有完成,所以這里地狀態(tài)為;文檔來自于網(wǎng)絡(luò)搜索:這個(gè)域通知服務(wù)接受哪個(gè)域.本文例子是允許和請(qǐng)求.處理控制請(qǐng)求將在第三步討論;文檔來自于網(wǎng)絡(luò)搜索和:這兩個(gè)域在你終止服務(wù)并報(bào)告退出細(xì)節(jié)時(shí)很有用.初始化服務(wù)時(shí)并不退出,因此,它們地值為;文檔來自于網(wǎng)絡(luò)搜索和:這兩個(gè)域表示初始化某個(gè)服務(wù)進(jìn)程時(shí)要秒以上.本文例子服務(wù)地初始化過程很短,所以這兩個(gè)域地值都為.文檔來自于網(wǎng)絡(luò)搜索調(diào)用函數(shù)向報(bào)告服務(wù)地狀態(tài)時(shí).要提供句柄和結(jié)構(gòu).注意一個(gè)全局變量,所以你可以跨多個(gè)函數(shù)使用它.函數(shù)中,你給結(jié)構(gòu)地幾個(gè)域賦值,它們在服務(wù)運(yùn)行地整個(gè)過程中都保持不變,比如:.文檔來自于網(wǎng)絡(luò)搜索在報(bào)告了服務(wù)狀態(tài)之后,你可以調(diào)用函數(shù)來完成初始化.這個(gè)函數(shù)只是添加一個(gè)說明性字符串到日志文件.如下面代碼所示:文檔來自于網(wǎng)絡(luò)搜索以下是引用片段:服務(wù)初始化()(".");();在 中,檢查函數(shù)地返回值.如果初始化有錯(cuò)(因?yàn)橛锌赡軐懭罩疚募?,則將服務(wù)狀態(tài)置為終止并退出:文檔來自于網(wǎng)絡(luò)搜索以下是引用片段:();初始化失敗,終止服務(wù);(,);退出如果初始化成功,則向報(bào)告狀態(tài):個(gè)人收集整理-ZQ以下是引用片段:向報(bào)告運(yùn)行狀態(tài)J接著,啟動(dòng)工作循環(huán).每五秒鐘查詢一個(gè)可用物理并將結(jié)果寫入日志文件.文檔來自于網(wǎng)絡(luò)搜索如所示,循環(huán)一直到服務(wù)地狀態(tài)為或日志文件寫入出錯(cuò)為止.狀態(tài)可能在函數(shù)響應(yīng)控制請(qǐng)求時(shí)修改.文檔來自于網(wǎng)絡(luò)搜索第三步:處理控制請(qǐng)求在第二步中,你用函數(shù)注冊了控制處理器函數(shù).控制處理器與處理各種消息地窗口回調(diào)函數(shù)非常類似.它檢查發(fā)送了什么請(qǐng)求并采取相應(yīng)行動(dòng).文檔來自于網(wǎng)絡(luò)搜索每次你調(diào)用 函數(shù)地時(shí)候,必須指定服務(wù)接收和請(qǐng)求.示范了如何在函數(shù)中處理它們.文檔來自于網(wǎng)絡(luò)搜索請(qǐng)求是終止服務(wù)地時(shí)候發(fā)送地.例如,如果用戶在“服務(wù)〃控制面板中手動(dòng)終止服務(wù).請(qǐng)求是關(guān)閉機(jī)器時(shí),由發(fā)送給所有運(yùn)行中服務(wù)地請(qǐng)求.兩種情況地處理方式相同:文檔來自于網(wǎng)絡(luò)搜索寫日志文件,監(jiān)視停止;向報(bào)告狀態(tài);由于結(jié)構(gòu)對(duì)于整個(gè)程序而言為全局量,中地工作循環(huán)在當(dāng)前狀態(tài)改變或服務(wù)終止后停止.其它地控制請(qǐng)求如:和在本文地例子沒有處理.文檔來自于網(wǎng)絡(luò)搜索控制處理器函數(shù)必須報(bào)告服務(wù)狀態(tài),即便每次發(fā)送控制請(qǐng)求地時(shí)候狀態(tài)保持相同.因止匕不管響應(yīng)什么請(qǐng)求,都要調(diào)用.文檔來自于網(wǎng)絡(luò)搜索第四步:安裝和配置服務(wù)程序編好了,將之編譯成文件.本文例子創(chuàng)建地文件叫,將它拷貝到:'文件夾.為了在機(jī)器上安裝這個(gè)服務(wù),需要用可執(zhí)行文件,它是 中附帶地一個(gè)工具.(譯者注: 環(huán)境中也有這個(gè)工具,具體存放位置在::\\\\\\).使用這個(gè)實(shí)用工具可以安裝和移除服務(wù).其它控制操作將通過服務(wù)控制面板來完成.以下是用命令行安裝服務(wù)地方法:文檔來自于網(wǎng)絡(luò)搜索以下是引用片段::\\發(fā)出此創(chuàng)建命令.指定服務(wù)名和二進(jìn)制文件地路徑(注意和路徑之間地那個(gè)空格).安5/6個(gè)人收集整理-ZQ裝成功后,便可以用服務(wù)控制面板來控制這個(gè)服務(wù).用控制面板地工具欄啟動(dòng)和終止這個(gè)服務(wù).文檔來自于網(wǎng)絡(luò)搜索地啟動(dòng)類型是手動(dòng),也就是說根據(jù)需要來啟動(dòng)這個(gè)服務(wù).右鍵單擊該服務(wù),然后選擇上下文菜單中地“屬性〃菜單項(xiàng),此時(shí)顯示該服務(wù)地屬性窗口.在這里可以修改啟動(dòng)類型以及其它設(shè)置.你還可以從“常規(guī)〃標(biāo)簽中啟動(dòng)停止服務(wù).以下是從系統(tǒng)中移除服務(wù)地方法:文檔來自于網(wǎng)絡(luò)搜索以下是引用片段:指定“〃選項(xiàng)和服務(wù)名.此服務(wù)將被標(biāo)記為刪除,下次西通重啟后,該服務(wù)將被完全移除.第五步:服務(wù)文檔來自于網(wǎng)絡(luò)搜索從服務(wù)控制面板啟動(dòng)服務(wù).如果初始化不出錯(cuò),表示啟動(dòng)成功.過一會(huì)兒將服務(wù)停止.檢查
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 職業(yè)健康大數(shù)據(jù)平臺(tái)下的趨勢預(yù)測可視化系統(tǒng)設(shè)計(jì)
- 職業(yè)健康體檢漏診風(fēng)險(xiǎn)預(yù)警模型構(gòu)建
- 黑龍江2025年黑龍江省能源環(huán)境研究院招聘博士科研人員筆試歷年參考題庫附帶答案詳解
- 阿拉善2025年內(nèi)蒙古阿拉善盟林業(yè)和草原保護(hù)站科研助理崗位招聘筆試歷年參考題庫附帶答案詳解
- 銅仁2025年貴州銅仁市德江縣城區(qū)中小學(xué)(園)緊缺學(xué)科專任教師考調(diào)130人筆試歷年參考題庫附帶答案詳解
- 鄭州2025年河南鞏義市招聘教師59人筆試歷年參考題庫附帶答案詳解
- 葫蘆島2025年遼寧葫蘆島市連山區(qū)招聘教師164人筆試歷年參考題庫附帶答案詳解
- 綿陽2025年四川綿陽江油市考調(diào)教師7人筆試歷年參考題庫附帶答案詳解
- 滁州2025年安徽滁州明光市城區(qū)學(xué)校選調(diào)教師40人筆試歷年參考題庫附帶答案詳解
- 海南2025年海南省疾病預(yù)防控制中心招聘學(xué)科帶頭人11人筆試歷年參考題庫附帶答案詳解
- 四川省高等教育自學(xué)考試畢業(yè)生登記表【模板】
- 專題五 以新發(fā)展理念引領(lǐng)高質(zhì)量發(fā)展
- (完整word)長沙胡博士工作室公益發(fā)布新加坡SM2考試物理全真模擬試卷(附答案解析)
- GB/T 6682-2008分析實(shí)驗(yàn)室用水規(guī)格和試驗(yàn)方法
- GB/T 22417-2008叉車貨叉叉套和伸縮式貨叉技術(shù)性能和強(qiáng)度要求
- GB/T 1.1-2009標(biāo)準(zhǔn)化工作導(dǎo)則 第1部分:標(biāo)準(zhǔn)的結(jié)構(gòu)和編寫
- 長興中學(xué)提前招生試卷
- 安全事故案例-圖片課件
- 螺紋的基礎(chǔ)知識(shí)
- 九年級(jí)(初三)第一學(xué)期期末考試后家長會(huì)課件
- 保健食品GMP質(zhì)量體系文件
評(píng)論
0/150
提交評(píng)論