服務控制管理器
此條目翻譯自其他語言維基百科,需要相關領域的編者協助校對翻譯。 |
服務控制管理器(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