QueryServiceLockStatusW 関数 (winsvc.h)
[この関数は、Windows Vista の時点では効果がありません。]
指定したサービス コントロール マネージャー データベースのロック状態を取得します。
構文
BOOL QueryServiceLockStatusW(
[in] SC_HANDLE hSCManager,
[out, optional] LPQUERY_SERVICE_LOCK_STATUSW lpLockStatus,
[in] DWORD cbBufSize,
[out] LPDWORD pcbBytesNeeded
);
パラメーター
[in] hSCManager
サービス コントロール マネージャー データベースへのハンドル。 OpenSCManager 関数は、このハンドルを返します。このハンドルには、SC_MANAGER_QUERY_LOCK_STATUSアクセス権が必要です。 詳細については、「 サービス セキュリティとアクセス権」を参照してください。
[out, optional] lpLockStatus
指定したデータベースのロック状態を受け取る QUERY_SERVICE_LOCK_STATUS 構造体へのポインターと、そのメンバーが指す文字列が返されます。
[in] cbBufSize
lpLockStatus パラメーターが指すバッファーのサイズ (バイト単位)。
[out] pcbBytesNeeded
関数が失敗した場合に、すべてのロック状態情報を返すために必要なバイト数を受け取る変数へのポインター。
戻り値
関数が成功すると、戻り値は 0 以外になります。
関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。
次のエラー コードは、サービス コントロール マネージャーによって設定できます。 その他のエラー コードは、サービス コントロール マネージャーによって呼び出されるレジストリ関数によって設定できます。
リターン コード | 説明 |
---|---|
|
ハンドルには、SC_MANAGER_QUERY_LOCK_STATUSアクセス権がありません。 |
|
lpLockStatus バッファーに収まるよりも多くのロック状態情報があります。 すべての情報を取得するために必要なバイト数は、 pcbBytesNeeded パラメーターで返されます。 lpLockStatus には何も書き込みされません。 |
|
指定されたハンドルが無効です。 |
解説
QueryServiceLockStatus 関数は、指定したデータベースがロックされているかどうかを示すQUERY_SERVICE_LOCK_STATUS構造体を返します。 データベースがロックされている場合、構造体はロックを所有するユーザーのアカウント名と、ロックが保持されている時間の長さを提供します。
プロセスは LockServiceDatabase 関数を呼び出して、サービス コントロール マネージャー データベース ロックの所有権を取得し、 UnlockServiceDatabase 関数を呼び出してロックを解放します。
Note
winsvc.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして QueryServiceLockStatus を定義します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | winsvc.h (Windows.h を含む) |
Library | Advapi32.lib |
[DLL] | Advapi32.dll |