Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Menghubungkan utas utama proses layanan ke manajer kontrol layanan, yang menyebabkan utas menjadi utas dispatcher kontrol layanan untuk proses panggilan.
Sintaksis
BOOL StartServiceCtrlDispatcherA(
[in] const SERVICE_TABLE_ENTRYA *lpServiceStartTable
);
Parameter
[in] lpServiceStartTable
Penunjuk ke array struktur SERVICE_TABLE_ENTRY yang berisi satu entri untuk setiap layanan yang dapat dijalankan dalam proses panggilan. Anggota entri terakhir dalam tabel harus memiliki nilai NULL untuk menunjuk akhir tabel.
Mengembalikan nilai
Jika fungsi berhasil, nilai yang dikembalikan bukan nol.
Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, panggil GetLastError.
Kode kesalahan berikut dapat diatur oleh manajer kontrol layanan. Kode kesalahan lain dapat diatur oleh fungsi registri yang dipanggil oleh manajer kontrol layanan.
| Mengembalikan kode | Deskripsi |
|---|---|
|
Kesalahan ini dikembalikan jika program dijalankan sebagai aplikasi konsol daripada sebagai layanan.
Jika program akan dijalankan sebagai aplikasi konsol untuk tujuan penelusuran kesalahan, strukturnya sedih sehingga kode khusus layanan tidak dipanggil ketika kesalahan ini dikembalikan. |
|
Tabel pengiriman yang ditentukan berisi entri yang tidak dalam format yang tepat. |
|
Proses ini telah memanggil StartServiceCtrlDispatcher. Setiap proses dapat memanggil StartServiceCtrlDispatcher hanya satu kali. |
Komentar
Ketika manajer kontrol layanan memulai proses layanan, ia menunggu proses untuk memanggil fungsi StartServiceCtrlDispatcher. Alur utama proses layanan harus melakukan panggilan ini sesegera mungkin setelah dimulai (dalam waktu 30 detik). Jika StartServiceCtrlDispatcher berhasil, itu menghubungkan utas panggilan ke manajer kontrol layanan dan tidak kembali sampai semua layanan yang berjalan dalam proses telah memasuki status SERVICE_STOPPED. Manajer kontrol layanan menggunakan koneksi ini untuk mengirim kontrol dan permintaan mulai layanan ke utas utama proses layanan. Utas utama bertindak sebagai dispatcher dengan memanggil fungsi
Parameter
Jika layanan berjalan dalam prosesnya sendiri, utas utama proses layanan harus segera memanggil StartServiceCtrlDispatcher. Semua tugas inisialisasi dilakukan dalam fungsi ServiceMain layanan saat layanan dimulai.
Jika beberapa layanan berbagi proses dan beberapa inisialisasi seluruh proses umum perlu dilakukan sebelum fungsi
Layanan tidak boleh mencoba menampilkan antarmuka pengguna secara langsung. Untuk informasi selengkapnya, lihat Interactive Services.
Contoh
Misalnya, lihat MenulisFungsi Utama Program Layanan .
Nota
Header winsvc.h mendefinisikan StartServiceCtrlDispatcher sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta preprosedisor UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.
Persyaratan
| Syarat | Nilai |
|---|---|
| klien minimum yang didukung | Windows XP [hanya aplikasi desktop] |
| server minimum yang didukung |
Windows Server 2003 [hanya aplikasi desktop] |
| Platform Target |
Windows |
| Header |
winsvc.h (termasuk Windows.h) |
| Pustaka |
Advapi32.lib |
| DLL |
Advapi32.dll |
Lihat juga
HandlerEx
Titik Masuk Layanan
ServiceMain