检索每个依赖于指定服务的服务的名称和状态;也就是说,在依赖服务能够运行之前,指定的服务必须运行。
语法:
BOOL EnumDependentServicesA(
SC_HANDLE hService,
DWORD dwServiceState,
LPENUM_SERVICE_STATUSA lpServices,
DWORD cbBufSize,
LPDWORD pcbBytesNeeded,
LPDWORD lpServicesReturned
);
参数:
hService
服务的句柄。这个句柄由OpenService或CreateService函数返回,它必须具有service_enumerate_dependent访问权限。
dwServiceState
要枚举的服务的状态。此参数可以是以下值之一。
SERVICE_ACTIVE
0 x00000001
枚举处于以下状态的服务:SERVICE_START_PENDING、SERVICE_STOP_PENDING、SERVICE_RUNNING、SERVICE_CONTINUE_PENDING、SERVICE_PAUSE_PENDING和SERVICE_PAUSED.。
SERVICE_INACTIVE
0 x00000002
枚举处于SERVICE_STOPPED状态的服务。
SERVICE_STATE_ALL
0 x00000003
组合以下状态:SERVICE_ACTIVE和SERVICE_INACTIVE。
lpServices
指向ENUM_SERVICE_STATUS结构数组的指针,该数组接收数据库中每个依赖服务的名称和服务状态信息。缓冲区必须大到足以容纳结构,加上成员指向的字符串。
这个数组中的服务顺序与服务的开始顺序相反。换句话说,数组中的第一个服务是最后启动的服务,数组中的最后一个服务是第一个启动的服务。
这个数组的最大大小是64,000字节。要确定所需的大小,请为该参数指定NULL,为cbBufSize参数指定0。函数将失败,GetLastError将返回ERROR_MORE_DATA。pcbbytesrequired参数将接收所需的大小。
cbBufSize
由lpServices参数指向的缓冲区大小(以字节为单位)。
pcbBytesNeeded
指向一个变量的指针,该变量接收存储服务项数组所需的字节数。只有当lpServices指向的缓冲区太小时,该变量才会接收到这个值,这个值由函数故障和ERROR_MORE_DATA错误表示;否则,pcbbytesrequired的内容是未定义的。
lpServicesReturned
指向一个变量的指针,该变量接收返回的服务条目的数量。