Bagikan melalui


Fungsi LockServiceDatabase (winsvc.h)

[Pada Windows Vista, fungsi ini disediakan untuk kompatibilitas aplikasi dan tidak berpengaruh pada database.]

Meminta kepemilikan kunci database manajer kontrol layanan (SCM). Hanya satu proses yang dapat memiliki kunci pada waktu yang ditentukan.

Sintaks

SC_LOCK LockServiceDatabase(
  [in] SC_HANDLE hSCManager
);

Parameter

[in] hSCManager

Handel ke database SCM. Handel ini dikembalikan oleh fungsi OpenSCManager , dan harus memiliki hak akses SC_MANAGER_LOCK . Untuk informasi selengkapnya, lihat Keamanan Layanan dan Hak Akses.

Mengembalikan nilai

Jika fungsi berhasil, nilai yang dikembalikan adalah kunci ke database SCM yang ditentukan.

Jika fungsi gagal, nilai yang dikembalikan adalah NULL. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.

Kode kesalahan berikut dapat diatur oleh SCM. Kode kesalahan lainnya dapat diatur oleh fungsi registri yang dipanggil oleh SCM.

Menampilkan kode Deskripsi
ERROR_ACCESS_DENIED
Handel tidak memiliki hak akses SC_MANAGER_LOCK .
ERROR_INVALID_HANDLE
Handel yang ditentukan tidak valid.
ERROR_SERVICE_DATABASE_LOCKED
Database dikunci.

Keterangan

Kunci adalah protokol yang digunakan oleh program penyiapan dan konfigurasi dan SCM untuk membuat serialisasi akses ke pohon layanan di registri. Satu-satunya waktu SCM meminta kepemilikan kunci adalah ketika memulai layanan.

Program yang memperoleh kunci database SCM dan gagal melepaskannya mencegah SCM memulai layanan lain. Karena tingkat keparahan masalah ini, proses tidak lagi diizinkan untuk mengunci database. Untuk kompatibilitas dengan aplikasi yang lebih lama, fungsi LockServiceDatabase mengembalikan kunci tetapi tidak memiliki efek lain.

Windows Server 2003 dan Windows XP: Memperoleh kunci database SCM mencegah SCM memulai layanan hingga kunci dilepaskan. Misalnya, program yang harus mengonfigurasi beberapa layanan terkait sebelum salah satunya dimulai dapat memanggil LockServiceDatabase sebelum mengonfigurasi layanan pertama. Atau, ini dapat memastikan bahwa tidak ada layanan yang dimulai sampai konfigurasi selesai.

Panggilan ke fungsi StartService untuk memulai layanan dalam database terkunci gagal. Tidak ada fungsi SCM lain yang dipengaruhi oleh kunci.

Kunci ditahan hingga handel SC_LOCK ditentukan dalam panggilan berikutnya ke fungsi UnlockServiceDatabase . Jika proses yang memiliki kunci berakhir, SCM secara otomatis membersihkan dan melepaskan kepemilikan kunci.

Gagal melepaskan kunci dapat menyebabkan masalah sistem. Proses yang memperoleh kunci harus melepaskannya sesegera mungkin.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows XP [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Target Platform Windows
Header winsvc.h (sertakan Windows.h)
Pustaka Advapi32.lib
DLL Advapi32.dll

Lihat juga

ChangeServiceConfig

OpenSCManager

QueryServiceLockStatus

Konfigurasi Layanan

Fungsi Layanan

SetServiceObjectSecurity

StartService

UnlockServiceDatabase