服務控制管理器

计算机领域名词

服務控制管理器(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

參見

注釋

參考資料