EnumServicesStatus

【勇芳软件工作室】汉化HomePreviousNext

EnumServicesStatus函数枚举指定的服务控制管理器数据库中的服务。提供每个服务的名称和状态。

BOOL EnumServicesStatus(

SC_HANDLE 【hSCManager】,//处理服务控制管理器数据库
DWORD 【dwServiceType】,//枚举类型的服务
DWORD 【dwServiceState】,//枚举的服务状态
LPENUM_SERVICE_STATUS 【lpServices】,//指向服务状态缓冲区的指针
DWORD 【cbBufSize】,//服务状态缓冲区的大小
LPDWORD 【pcbBytesNeeded】,//指向需要字节的变量的指针
LPDWORD 【lpServicesReturned】,//指向返回的数字的变量的指针
LPDWORD 【lpResumeHandle】//指向下一个条目的变量的指针
); 

参数

【hSCManager】

标识服务控制管理器数据库。OpenSCManager函数返回此句柄,该句柄必须具有SC_MANAGER_ENUMERATE_SERVICE访问权限。

【dwServiceType】

指定要枚举的服务类型。它必须是以下值之一或两者:

含义
SERVICE_WIN32枚举SERVICE_WIN32_OWN_PROCESS和SERVICE_WIN32_SHARE_PROCESS类型的服务。
SERVICE_DRIVER列举SERVICE_KERNEL_DRIVER和SERVICE_FILE_SYSTEM_DRIVER类型的服务。

【dwServiceState】

根据运行状态指定要枚举的服务。它必须是以下值之一或两者:

含义
SERVICE_ACTIVE枚举以下状态的服务:SERVICE_START_PENDING,SERVICE_STOP_PENDING,SERVICE_RUNNING,SERVICE_CONTINUE_PENDING,SERVICE_PAUSE_PENDING和SERVICE_PAUSED。
SERVICE_INACTIVE枚举处于SERVICE_STOPPED状态的服务。

【lpServices】

指向ENUM_SERVICE_STATUS结构的数组,其中返回数据库中每个服务的名称和服务状态信息。

【cbBufSize】

指定【lpServices】参数指向的缓冲区的大小(以字节为单位)。

【pcbBytesNeeded】

指向一个变量,它接收返回剩余服务条目所需的字节数。

【lpServicesReturned】

指向接收返回的服务条目数的变量。

【lpResumeHandle】

指向一个32位变量,在输入时,指定枚举的起始点。第一次调用此函数时,变量的值设置为零。在输出中,如果函数成功,变量的值为零。如果函数返回FALSE,并且GetLastError函数返回ERROR_MORE_DATA,则当再次调用函数以检索附加数据时,该变量的值用于指示下一个未读服务条目。

返回值

如果函数成功,返回值不为零。

如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.

错误

服务控制管理器可以设置以下错误代码。其他错误代码可以由服务控制管理器调用的注册表函数设置。

含义
ERROR_ACCESS_DENIED 
 没有使用SC_MANAGER_ENUMERATE_SERVICE访问来打开指定的句柄。
ERROR_INVALID_HANDLE 
 指定的句柄无效。
ERROR_INVALID_PARAMETER 
 指定的参数无效。
ERROR_MORE_DATA 
 有更多的服务条目比适合【lpServices】缓冲区。在【lpServicesReturned】参数中返回写入【lpServices】的实际服务条目数。在【pcbBytesNeeded】参数中返回获取剩余条目所需的字节数。剩余的服务可以通过额外的EnumServicesStatus呼叫进行枚举,【lpResumeHandle】参数指示下一个要读取的服务。

也可以看看

EnumDependentServices, ENUM_SERVICE_STATUS, OpenSCManager