SERVICE_STATUS结构包含有关服务的信息。ControlService,EnumDependentServices,EnumServicesStatus和QueryServiceStatus功能使用此结构返回有关服务的信息。服务在SetServiceStatus功能中使用此结构将其当前状态报告给服务控制管理器。
typedef struct _SERVICE_STATUS { // ss
DWORD dwServiceType;
DWORD dwCurrentState;
DWORD dwControlsAccepted;
DWORD dwWin32ExitCode;
DWORD dwServiceSpecificExitCode;
DWORD dwCheckPoint;
DWORD dwWaitHint;
} SERVICE_STATUS, *LPSERVICE_STATUS;
会员
dwServiceType
返回的值包括以下服务类型标志之一,以指示服务类型。另外,对于SERVICE_WIN32服务,可能会设置SERVICE_INTERACTIVE_PROCESS标志,表示服务进程可以与桌面交互。
值 | 含义 |
SERVICE_WIN32_OWN_PROCESS | 一种服务类型标志,指示在其自身进程中运行的Win32服务。 |
SERVICE_WIN32_SHARE_PROCESS | 指示与其他服务共享进程的Win32服务的服务类型标志。 |
SERVICE_KERNEL_DRIVER | 指示Windows NT设备驱动程序的服务类型标志。 |
SERVICE_FILE_SYSTEM_DRIVER | 指示Windows NT文件系统驱动程序的服务类型标志。 |
SERVICE_INTERACTIVE_PROCESS | 指示可以与桌面交互的Win32服务进程的标志。 |
dwCurrentState
表示服务的当前状态。指定以下值之一:
值 | 含义 |
SERVICE_STOPPED | 该服务没有运行。 |
SERVICE_START_PENDING | 服务开始了。 |
SERVICE_STOP_PENDING | 服务正在停止。 |
SERVICE_RUNNING | 服务正在运行。 |
SERVICE_CONTINUE_PENDING | 该服务继续待处理。 |
SERVICE_PAUSE_PENDING | 服务暂停待处理。 |
SERVICE_PAUSED | 服务已暂停。 |
dwControlsAccepted
指定服务将接受和处理的控制代码。用户界面过程可以通过在ControlService函数中指定控制命令来控制服务。默认情况下,所有服务都接受SERVICE_CONTROL_INTERROGATE值。可以指定任何或所有以下标志来启用其他控制代码。
值 | 含义 | |||||||||||||||||||||
SERVICE_ACCEPT_STOP | ||||||||||||||||||||||
该服务可以停止。这将启用SERVICE_CONTROL_STOP值。 | ||||||||||||||||||||||
SERVICE_ACCEPT_PAUSE_CONTINUE | ||||||||||||||||||||||
该服务可以暂停并继续。这将启用SERVICE_CONTROL_PAUSE和SERVICE_CONTROL_CONTINUE值。 | ||||||||||||||||||||||
SERVICE_ACCEPT_SHUTDOWN | ||||||||||||||||||||||
系统关闭时通知服务。这使系统能够向服务发送SERVICE_CONTROL_SHUTDOWN值。ControlService功能无法发送此控制代码。 |
dwWin32ExitCode
指定服务使用的Win32错误代码来报告在启动或停止时发生的错误。要返回特定于服务的错误代码,服务必须将此值设置为ERROR_SERVICE_SPECIFIC_ERROR以指示dwServiceSpecificExitCode成员包含错误代码。该服务在运行时和正常终止时应将此值设置为NO_ERROR。
dwServiceSpecificExitCode
指定在服务启动或停止时发生错误时服务返回的服务特定错误代码。除非dwWin32ExitCode成员设置为ERROR_SERVICE_SPECIFIC_ERROR,否则此值将被忽略。
dwCheckPoint
指定服务周期性增长以在长时间的开始,停止或继续操作期间报告其进度的值。例如,服务应该在启动时完成初始化的每个步骤时增加该值。调用服务操作的用户界面程序使用此值来追踪长时间操作中的服务进度。该值无效,当服务没有开始,停止或继续操作待处理时,该值应为零。
dwWaitHint
指定在服务下一次调用SetServiceStatus函数之前,服务期望待处理的开始,停止或继续操作的时间量(以毫秒为单位)的估计,增量为{??989796130}值或更改dwCurrentState.如果dwWaitHint指定的时间量通过,并且dwCheckPoint尚未增加,或者dwCurrentState未更改,则服务控制管理器或服务控制程序可以假设发生错误。
也可以看看
ControlService, EnumDependentServices, EnumServicesStatus, QueryServiceStatus, SetServiceStatus