<Return[PQ]><Top>

QueryServiceStatus

Declare Function Api_QueryServiceLockStatus& Lib "advapi32" Alias "QueryServiceLockStatusA" (ByVal hSCManager&, lpLockStatus As QUERY_SERVICE_LOCK_STATUS, ByVal cbBufSize&, pcbBytesNeeded&)

Declare Function QueryServiceLockStatus Lib "advapi32" Alias "QueryServiceLockStatusA" (ByVal hSCManager As Long, lpLockStatus As QUERY_SERVICE_LOCK_STATUS, ByVal cbBufSize As Long, pcbBytesNeeded As Long) As Long

サービス制御マネージャ(Service Control Manager:SCM)の指定されたデータベースのロックステータスを取得する。

パラメータ
hSCManager
    [入力]サービス制御マネージャのデータベースのハンドルを指定する。OpenSCManager 関数が返したハンドルを指定し、これには

    SC_MANAGER_QUERY_LOCK_STATUS アクセス権が必要である。
lpLockStatus
    [出力]指定されたデータベースのロックステータスを示す 構造体とそのメンバが指す文字列を受け取るバッファへのポインタを指定する。
cbBufSize
    [入力]lpLockStatus パラメータが指すバッファのサイズをバイト数で指定する。
pcbBytesNeeded
    [出力]この関数が失敗した場合に、すべてのロックステータス情報を取得するために必要なバイト数を受け取る変数へのポインタを指定す

    る。
 

戻り値
    関数が成功すると、0 以外の値が返る。
    関数が失敗すると、0 が返る。拡張エラー情報を取得するには、 関数を使う。
    サービス制御マネージャは次のエラーコードを設定することがある。サービス制御マネージャが呼び出したレジストリ関数は、その他のエラー

    コードを設定することがある。

    エラーコード                                        

意味                                                                                                                  

    ERROR_ACCESS_DENIED

 

指定されたハンドルを開く際に、SERVICE_QUERY_STATUS アクセス権が指定されていなかった。

    ERROR_INSUFFICIENT_BUFFER

 

 

lpLockStatus パラメータが指すバッファに収容しきれないロックステータス情報が存在する。

すべての情報を取得するために必要なバイト数は、pcbBytesNeeded パラメータに書き込まれる。

lpLockStatus バッファには何も書き込まれない。

    ERROR_INVALID_HANDLE

指定されたハンドルは無効である。


解説
     QueryServiceLockStatus 関数は、指定されたデータベースがロックされているかどうかを示す QUERY_SERVICE_LOCK_STATUS 構

    造体を返す。データベースがロックされている場合、この構造体はそのロックを所有しているユーザーのアカウント名と、ロックが保持されてい

    る期間の長さについての情報を提供する。
    プロセスは LockServiceDatabase 関数を呼び出してサービス制御マネージャのデータベースのロックを取得し、UnlockServiceDatabase 関

    数を呼び出してロックを解放する。