QueryServiceLockStatus

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

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