日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

4 《Undocumented Windows 2000 Secrets》翻譯 --- 第三章

第三章 編寫(xiě)內(nèi)核模式驅(qū)動(dòng)程序
翻譯: Kendiv
更新: Thursday, February 10, 2005
表 3-4 列出了定義于 列表 3-8 中的函數(shù),同時(shí)還給出了簡(jiǎn)短的介紹 。其中的一些函數(shù)的名字,如 w2kServiceStart() 和 w2kServiceControl() 和 SC 管理器的原生 API 函數(shù) ---StartService() 和 ControlService() 比較類(lèi)似 。這沒(méi)有什么不一致,在這些外包函數(shù)的核心位置都能找到對(duì)這些原生函數(shù)的調(diào)用 。外包函數(shù)和原生函數(shù)的主要區(qū)別在于: StartService() 和 ControlService() 的操作對(duì)象是服務(wù)句柄,而 w2kServiceOpen() 和 w2kServiceClose() 則是服務(wù)的名稱 。這些名字會(huì)在內(nèi)部調(diào)用 w2kServiceOpen() 和 w2kServiceClose() 轉(zhuǎn)化為對(duì)應(yīng)的句柄,w2kServiceOpen() 和 w2kServiceClose() 會(huì)依次調(diào)用 OpenService() 和 CloseServiceHandle()。
名 稱
描 述
w2kServiceAdd
向系統(tǒng)中增加一個(gè)服務(wù) / 驅(qū)動(dòng)程序
w2kServiceClose
關(guān)閉一個(gè)服務(wù)句柄
w2kServiceConnect
連接到服務(wù)控制管理器
w2kServiceContinue
繼續(xù)執(zhí)行暫停的服務(wù) / 驅(qū)動(dòng)程序
w2kServiceControl
停止、暫停、繼續(xù)、查詢或通知一個(gè)已加載的服務(wù) / 驅(qū)動(dòng)程序
w2kServiceDisconnect
斷開(kāi)和服務(wù)控制管理器的連接
w2kServiceLoad
加載和啟動(dòng)(可選的)一個(gè)服務(wù) / 驅(qū)動(dòng)程序
w2kServiceLoadEx
加載和啟動(dòng)(可選的)一個(gè)服務(wù) / 驅(qū)動(dòng)程序(自動(dòng)生成名稱)
w2kServiceManager
打開(kāi) / 關(guān)閉一個(gè)臨時(shí)的服務(wù)控制管理器句柄
w2kServiceOpen
獲取一個(gè)已加載的服務(wù) / 驅(qū)動(dòng)程序的句柄
w2kServicePause
暫停一個(gè)正在運(yùn)行的服務(wù) / 驅(qū)動(dòng)程序
w2kServiceRemove
從系統(tǒng)中移除一個(gè)服務(wù) / 驅(qū)動(dòng)程序
w2kServiceStart
啟動(dòng)一個(gè)已加載的服務(wù) / 驅(qū)動(dòng)程序
w2kServiceStop
停止一個(gè)正在運(yùn)行的服務(wù) / 驅(qū)動(dòng)程序
w2kServiceUnload
停止和卸載一個(gè)服務(wù) / 驅(qū)動(dòng)程序
w2kServiceUnloadEx
停止和卸載一個(gè)服務(wù) / 驅(qū)動(dòng)程序(自動(dòng)生成名稱)
表 3-4. w2k_lib.dll 提供的 SC 管理器的外包函數(shù)
表 3-4 中函數(shù)的典型用法都需遵循如下的指導(dǎo)方針:
l 使用 w2kServiceLoad() 或 w2kServiceLoadEx() 來(lái)加載一個(gè)服務(wù) 。后一個(gè)函數(shù)會(huì)根據(jù)可執(zhí)行文件的路徑和版本信息自動(dòng)生成服務(wù)的顯示名稱 。邏輯變量 fStart 用來(lái)確定是否在成功加載服務(wù)后自動(dòng)執(zhí)行該服務(wù) 。在成功的情況下,該函數(shù)會(huì)為后續(xù)的調(diào)用返回一個(gè)管理器句柄 。如果服務(wù)已經(jīng)加載或服務(wù)已經(jīng)開(kāi)始運(yùn)行而 fStart 為 TRUE ,調(diào)用該函數(shù)不會(huì)返回任何錯(cuò)誤 。但如果發(fā)生錯(cuò)誤,如有必要,發(fā)生錯(cuò)誤的服務(wù)會(huì)被自動(dòng)卸載 。
l 使用 w2kServiceUnload() 和 w2kServiceUnloadEx() 來(lái)卸載一個(gè)服務(wù),這需要用到 w2kServiceLoad() 或 w2kServiceLoadEx() 返回的管理器句柄 。w2kServiceUnloadEx() 會(huì)根據(jù)可執(zhí)行文件的路徑自動(dòng)生成服務(wù)名稱 。如果你已經(jīng)關(guān)閉了管理器句柄,可使用 w2kServiceConnect() 來(lái)或取一個(gè)新的管理器句柄或者簡(jiǎn)單的傳遞一個(gè) NULL (這表示使用臨時(shí)的管理器句柄) 。管理器句柄會(huì)由 w2kServiceUnload() 自動(dòng)關(guān)閉 。如果服務(wù)已經(jīng)有刪除標(biāo)志,則不會(huì)返回任何錯(cuò)誤,但并不會(huì)立即刪除服務(wù),這是因?yàn)榇蜷_(kāi)的設(shè)備句柄還存在著 。
l 使用 w2kServiceStart() 、 w2kServiceStop() 、 w2kServicePause() 或 w2kServiceContinue() 來(lái)控制一個(gè)服務(wù) 。這些函數(shù)也需要使用 w2kServiceLoad() 或 w2kServiceLoadEx() 返回的管理器句柄 。如果你提供一個(gè)值為 NULL 的管理器句柄,則使用臨時(shí)管理器句柄 。如果指定的服務(wù)已處于所要求的狀態(tài),則不會(huì)返回任何錯(cuò)誤 。
l 調(diào)用 w2kServiceDisconnect() 來(lái)關(guān)閉一個(gè)管理器句柄 。你可以在任何時(shí)候調(diào)用 w2kServiceConnect() 來(lái)獲取一個(gè)管理器句柄 。

推薦閱讀