QueryServiceLockStatus
The QueryServiceLockStatus
function retrieves the lock status of the specified service control manager
database.
BOOL QueryServiceLockStatus(
|
SC_HANDLE hSCManager, |
// handle of svc.
ctrl. mgr. database |
|
LPQUERY_SERVICE_LOCK_STATUS lpLockStatus, |
// address of lock
status structure |
|
DWORD cbBufSize, |
// size of service
configuration buffer |
|
LPDWORD pcbBytesNeeded |
// address of
variable for bytes needed |
|
); |
|
Parameters
hSCManager
Identifies
the service control manager database. The OpenSCManager function returns this
handle, which must have SC_MANAGER_QUERY_LOCK_STATUS access.
lpLockStatus
Points to a QUERY_SERVICE_LOCK_STATUS structure in which the
lock status of the specified database is returned.
cbBufSize
Specifies the
size, in bytes, of the buffer pointed to by the lpLockStatus parameter.
pcbBytesNeeded
Points to a
variable that receives the number of bytes needed to return all the lock status
information.
Return Values
If the
function succeeds, the return value is nonzero.
If the
function fails, the return value is zero. To get extended error information,
call GetLastError.
Errors
The following
error codes may be set by the service control manager. Other error codes may be
set by the registry functions that are called by the service control manager.
|
Value |
Meaning |
|
ERROR_ACCESS_DENIED |
|
|
|
The
specified handle was not opened with SC_MANAGER_QUERY_LOCK_STATUS access. |
|
ERROR_INSUFFICIENT_BUFFER |
|
|
|
There is
more lock status information than would fit into the lpLockStatus
buffer. The number of bytes required to get all the information is returned
in the pcbBytesNeeded parameter. Nothing is written to the lpLockStatus
buffer. |
|
ERROR_INVALID_HANDLE |
|
|
|
The
specified handle is invalid. |
Remarks
The QueryServiceLockStatus
function returns a QUERY_SERVICE_LOCK_STATUS structure that indicates
whether the specified database is locked. If the database is locked, the
structure provides the account name of the user that holds the lock and the
length of time that the lock has been held.
A process calls
the LockServiceDatabase
function to lock a service control manager database and the UnlockServiceDatabase function to release the
lock.
The lpLockStatus
buffer must be large enough to hold the string pointed to by the lpLockOwner
member of the QUERY_SERVICE_LOCK_STATUS structure.
See Also