服務控制管理器
此條目翻譯自其他語言維基百科,需要相關領域的編者協助校對翻譯。 |
服務控制管理器(Service Control Manager,簡稱SCM)是Windows NT操作系統中的特殊系統進程,其控制Windows服務進程的啟動、停止和交互。[1]它的可執行文件位於 %SystemRoot%\System32\services.exe
。服務進程與SCM的交互通過已定義的API完成,同一API也被交互式Windows服務管理工具使用,例如MMC擴展Services.msc
和命令行的服務控制實用工具sc.exe
。
實現
[編輯]延遲的自動啟動服務
[編輯]延遲的自動啟動服務在Windows Vista中被添加,目的是解決系統啟動耗時過長的問題,以及提高關鍵服務的啟動速度。[2]在設計之初,自動啟動的服務初始化方法是為其他應用程序和服務依賴的基本系統服務所涉及。SCM僅在處理所有非延遲的自動啟動服務後初始化延遲服務(調用 ScInitDelayStart()
函數)。此函數用工作線程延遲並排隊工作項(默認120秒)。除在延遲之後初始化,延遲與非延遲的自動啟動服務沒有其他區別。
設備驅動程序
[編輯]註冊表值Type
(類型)為SERVICE_KERNEL_DRIVER
或SERVICE_FILE_SYSTEM_DRIVER
的服務會被特殊處理:這代表其為設備驅動程序,ScStartService()
會調用 ScLoadDeviceDriver()
函數來加載相應的驅動程序(通常是擴展名為 .sys
的文件,大多位於 %SystemRoot%\System32\Drivers\
目錄)。為了此目的,NtLoadDriver
系統調用已被引用,SeLoadDriverPrivilege
也已添加到SCM進程。
網絡驅動器
[編輯]SCM還提供了一個與Windows服務無關的額外功能:它會在一個網絡驅動器連接被創建或刪除時通知圖形用戶界面應用程序(例如Windows Explorer),通過廣播窗口消息 WM_DEVICECHANGE
。
參見
[編輯]注釋
[編輯]參考資料
[編輯]- Russinovich, Mark; Solomon, David; Ionescu, Alex, Windows® Internals 5th, Microsoft Press, 2009, ISBN 0-7356-2530-1