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 |
---|---|
|
Handel tidak memiliki hak akses SC_MANAGER_LOCK . |
|
Handel yang ditentukan tidak valid. |
|
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 |