服务控制管理器
此条目翻译自其他语言维基百科,需要相关领域的编者协助校对翻译。 |
服务控制管理器(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