EnumDependentServices

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

EnumDependentServices函数枚举依赖于另一个指定服务的服务;也就是指定的服务必须在枚举服务运行之前运行。提供每个从属服务的名称和状态。

BOOL EnumDependentServices(

SC_HANDLE 【hService】,//处理服务
DWORD 【dwServiceState】,//枚举的服务状态
LPENUM_SERVICE_STATUS 【lpServices】,//指向服务状态缓冲区的指针
DWORD 【cbBufSize】,//服务状态缓冲区的大小
LPDWORD 【pcbBytesNeeded】,//指向需要字节的变量的指针
LPDWORD 【lpServicesReturned】//指向返回的数字的变量的指针
); 

参数

【hService】

处理标识服务。该句柄由OpenServiceCreateService函数返回,并且必须具有SERVICE_ENUMERATE_DEPENDENTS访问权限。

【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】

指向一个变量的指针,该变量接收存储服务条目数组所需的字节数。如果【lpServices】指向的缓冲区太小,变量仅接收该值,由功能故障和ERROR_MORE_DATA错误指示;否则,* 【pcbBytesNeeded】的内容未定义。

【lpServicesReturned】

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

返回值

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

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

错误

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

含义
ERROR_ACCESS_DENIED 
 指定的句柄未被打开,并且已经被SERVICE_ENUMERATE_DEPENDENTS访问。
ERROR_INVALID_HANDLE 
 指定的句柄无效。
ERROR_INVALID_PARAMETER 
 指定的参数无效。
ERROR_MORE_DATA 
 【lpServices】指向的缓冲区不够大。该函数将【lpServicesReturned】指向的变量设置为存储到缓冲区中的实际服务条目数。该函数将【pcbBytesNeeded】指向的变量设置为存储所有服务条目所需的字节数。

备注

返回的服务条目按照起始订单的相反顺序排列,并考虑组顺序。如果您需要停止依赖服务,您可以使用写入【lpServices】缓冲区的条目顺序以适当的顺序停止依赖服务。

也可以看看

CreateService, ENUM_SERVICE_STATUS, EnumServicesStatus, OpenService