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.
Titik masuk untuk layanan.
Jenis LPSERVICE_MAIN_FUNCTION menentukan penunjuk ke fungsi panggilan balik ini. ServiceMain adalah tempat penampung untuk nama fungsi yang ditentukan aplikasi.
Sintaksis
LPSERVICE_MAIN_FUNCTIONA LpserviceMainFunctiona;
VOID LpserviceMainFunctiona(
[in] DWORD dwNumServicesArgs,
[in] LPSTR *lpServiceArgVectors
)
{...}
Parameter
[in] dwNumServicesArgs
Jumlah argumen dalam array lpServiceArgVectors
[in] lpServiceArgVectors
String argumen yang dihentikan null yang diteruskan ke layanan oleh panggilan ke fungsi StartService
Jika pengguna memulai layanan manual menggunakan snap-in Layanan dari Panel Kontrol, string untuk parameter lpServiceArgVectors berasal dari kotak dialog properti untuk layanan (dari snap-in Layanan, klik kanan entri layanan, klik properti , dan masukkan parameter di parameter Mulai .)
Mengembalikan nilai
Tidak
Komentar
Program layanan dapat memulai satu atau beberapa layanan. Proses layanan memiliki struktur SERVICE_TABLE_ENTRY untuk setiap layanan yang dapat dimulai. Struktur menentukan nama layanan dan penunjuk ke fungsi serviceMain
Ketika manajer kontrol layanan menerima permintaan untuk memulai layanan, manajer kontrol layanan memulai proses layanan (jika belum berjalan). Alur utama proses layanan memanggil fungsi StartServiceCtrlDispatcher dengan pointer ke array struktur SERVICE_TABLE_ENTRY. Kemudian manajer kontrol layanan mengirimkan permintaan mulai ke dispatcher kontrol layanan untuk proses layanan ini. Dispatcher kontrol layanan membuat utas baru untuk menjalankan fungsi ServiceMain layanan yang sedang dimulai.
Fungsi
Service Control Manager (SCM) menunggu hingga layanan melaporkan status SERVICE_RUNNING. Disarankan agar layanan melaporkan status ini secepat mungkin, karena komponen lain dalam sistem yang memerlukan interaksi dengan SCM akan diblokir selama waktu ini. Beberapa fungsi mungkin memerlukan interaksi dengan SCM baik secara langsung maupun tidak langsung.
SCM mengunci database kontrol layanan selama inisialisasi, jadi jika layanan mencoba memanggil StartService selama inisialisasi, panggilan akan diblokir. Ketika layanan melaporkan ke SCM bahwa layanan telah berhasil dimulai, layanan dapat memanggil StartService. Jika layanan memerlukan layanan lain untuk dijalankan, layanan harus mengatur dependensi yang diperlukan.
Selain itu, Anda tidak boleh memanggil fungsi sistem apa pun selama inisialisasi layanan. Kode layanan harus memanggil fungsi sistem hanya setelah melaporkan status SERVICE_RUNNING.
Fungsi
Contoh
Misalnya, lihat Menulis Fungsi ServiceMain.
Nota
Header winsvc.h mendefinisikan LPSERVICE_MAIN_FUNCTION sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta praprosesor 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) |
Lihat juga
HandlerEx