QueryServiceLockStatus函数检索指定的服务控制管理器数据库的锁定状态。
BOOL QueryServiceLockStatus(
SC_HANDLE 【hSCManager】, | //处理svc。Ctrl键。经理。数据库 |
LPQUERY_SERVICE_LOCK_STATUS 【lpLockStatus】, | //锁定状态结构的地址 |
DWORD 【cbBufSize】, | //服务配置缓冲区的大小 |
LPDWORD 【pcbBytesNeeded】 | //所需字节的变量地址 |
); |
参数
【hSCManager】
标识服务控制管理器数据库。OpenSCManager函数返回此句柄,该句柄必须具有SC_MANAGER_QUERY_LOCK_STATUS访问权限。
【lpLockStatus】
指向返回指定数据库的锁定状态的QUERY_SERVICE_LOCK_STATUS结构。
【cbBufSize】
指定由【lpLockStatus】参数指向的缓冲区的大小(以字节为单位)。
【pcbBytesNeeded】
指向一个变量,它接收返回所有锁定状态信息所需的字节数。
返回值
如果函数成功,返回值不为零。
如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.
错误
服务控制管理器可以设置以下错误代码。其他错误代码可以由服务控制管理器调用的注册表函数设置。
值 | 含义 | ||||
ERROR_ACCESS_DENIED | |||||
没有使用SC_MANAGER_QUERY_LOCK_STATUS访问来打开指定的句柄。 | |||||
ERROR_INSUFFICIENT_BUFFER | |||||
与【lpLockStatus】缓冲区相比,锁定状态信息更多。获取所有信息所需的字节数在【pcbBytesNeeded】参数中返回。没有写入【lpLockStatus】缓冲区。 | |||||
ERROR_INVALID_HANDLE | |||||
指定的句柄无效。 |
备注
QueryServiceLockStatus函数返回一个QUERY_SERVICE_LOCK_STATUS结构,指示指定的数据库是否被锁定。如果数据库被锁定,则该结构提供保存锁定的用户的帐户名称以及锁定的时间长度。
过程调用LockServiceDatabase功能来锁定服务控制管理器数据库和UnlockServiceDatabase功能以释放锁定。
【lpLockStatus】缓冲区必须足够大以容纳lpLockOwner结构lpLockOwner成员所指向的字符串。
也可以看看
LockServiceDatabase, OpenSCManager, QUERY_SERVICE_LOCK_STATUS, UnlockServiceDatabase