[Win32] SCManager 服务控制管理器API(2)

本文详细介绍了Windows API中的服务控制管理器相关函数,包括EnumServicesStatus用于枚举服务状态,QueryServiceConfig获取服务配置参数,以及如何通过ChangeServiceConfig修改服务配置。这些函数涉及的服务状态、配置信息和访问权限对理解和操作Windows服务至关重要。
摘要由CSDN通过智能技术生成
本博文由CSDN博主zuishikonghuan所作,版权归zuishikonghuan所有,转载请注明出处: http://blog.csdn.net/zuishikonghuan/article/details/47808805
在上一篇博文“[Win32] SCManager 服务控制管理器API(1)”中(地址: http://blog.csdn.net/zuishikonghuan/article/details/47803033),讲到了打开服务控制管理器、创建服务、打开服务、删除服务、获取服务状态、启动服务、发送控制码,这一篇继续。

9。EnumServicesStatus 枚举服务

BOOL WINAPI EnumServicesStatus(
  _In_        SC_HANDLE             hSCManager,
  _In_        DWORD                 dwServiceType,
  _In_        DWORD                 dwServiceState,
  _Out_opt_   LPENUM_SERVICE_STATUS lpServices,
  _In_        DWORD                 cbBufSize,
  _Out_       LPDWORD               pcbBytesNeeded,
  _Out_       LPDWORD               lpServicesReturned,
  _Inout_opt_ LPDWORD               lpResumeHandle
);

hSCManager:服务控制管理器句柄。此句柄是OpenSCManager函数返回的,并且必须具有 SC_MANAGER_ENUMERATE_SERVICE 访问权限。

dwServiceType:要枚举的服务类型。

SERVICE_DRIVER:SERVICE_KERNEL_DRIVER 和 SERVICE_FILE_SYSTEM_DRIVER。

SERVICE_FILE_SYSTEM_DRIVER:文件系统驱动程序服务。

SERVICE_KERNEL_DRIVER:驱动程序服务。

SERVICE_WIN32:SERVICE_WIN32_OWN_PROCESS 和 SERVICE_WIN32_SHARE_PROCESS。

SERVICE_WIN32_OWN_PROCESS:在他们自己的进程中运行的服务。

SERVICE_WIN32_SHARE_PROCESS:与一个或多个其他服务共享一个进程的服务。
一般为SERVICE_WIN32

dwServiceState:服务要枚举的状态。此参数可以是下列值之一:

SERVICE_ACTIVE:枚举是处于以下状态的服务: SERVICE_START_PENDING、 SERVICE_STOP_PENDING、 SERVICE_RUNNING、SERVICE_CONTINUE_PENDING、 SERVICE_PAUSE_PENDING 和 SERVICE_PAUSED。

SERVICE_INACTIVE:枚举服务处于 SERVICE_STOPPED 状态。

SERVICE_STATE_ALL:SERVICE_ACTIVE 和 SERVICE_INACTIVE。

lpServices:指向包含数组的 ENUM_SERVICE_STATUS 结构,它接收名称服务数据库中的每个服务的状态信息的缓冲区的指针。缓冲区必须足够大以容纳结构,再加上他们的成员所指向的字符串。此数组的最大大小为 256 K 字节。若要确定所需的大小,请为此参数与 cbBufSize 参数置 0。该函数将失败,时出错将返回 ERROR_INSUFFICIENT_BUFFER。PcbBytesNeeded 参数将收到所需的大小。

ENUM_SERVICE_STATUS 结构:

typedef struct _ENUM_SERVICE_STATUS {
  LPTSTR         lpServiceName;
  LPTSTR         lpDisplayName;
  SERVICE_STATUS ServiceStatus;
} ENUM_SERVICE_STATUS, *LPENUM_SERVICE_STATUS;

lpServiceName:服务名称

lpDisplayName:显示名称

ServiceStatus:服务状态

SERVICE_STATUS结构见 上一篇 和

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值