服務控制管理器

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書

服務控制管理器(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_DRIVERSERVICE_FILE_SYSTEM_DRIVER的服務會被特殊處理:這代表其為設備驅動程序,ScStartService() 會調用 ScLoadDeviceDriver() 函數來加載相應的驅動程序(通常是擴展名為 .sys 的文件,大多位於 %SystemRoot%\System32\Drivers\ 目錄)。為了此目的,NtLoadDriver系統調用已被引用,SeLoadDriverPrivilege也已添加到SCM進程。

網絡驅動器[編輯]

SCM還提供了一個與Windows服務無關的額外功能:它會在一個網絡驅動器連接被創建或刪除時通知圖形用戶界面應用程序(例如Windows Explorer),通過廣播窗口消息 WM_DEVICECHANGE

參見[編輯]

注釋[編輯]

參考資料[編輯]