Sampel Layanan Lengkap
Topik di bagian ini membentuk sampel layanan lengkap:
- Sample.mc (berisi pesan kesalahan)
- Svc.cpp (berisi kode layanan)
- SvcConfig.cpp (berisi kode konfigurasi layanan)
- SvcControl.cpp (berisi kode kontrol layanan)
Membangun Layanan
Prosedur berikut menjelaskan cara membangun layanan dan mendaftarkan DLL pesan peristiwa.
Untuk membangun layanan dan mendaftarkan DLL pesan peristiwa
Bangun DLL pesan dari Sample.mc menggunakan langkah-langkah berikut:
- mc -U sample.mc
- rc -r sample.rc
- link -dll -noentry -out:sample.dll sample.res
Build Svc.exe, SvcConfig.exe, dan SvcControl.exe dari Svc.cpp, SvcConfig.cpp, dan SvcControl.cpp.
Buat kunci registri HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\SvcName dan tambahkan nilai registri berikut ke kunci ini.
Nilai Jenis Deskripsi EventMessageFile = dll_path REG_SZ Jalur ke DLL khusus sumber daya yang berisi string yang dapat ditulis layanan ke log peristiwa. TypeSupported = 0x00000007 REG_DWORD Masker bit yang menentukan jenis peristiwa yang didukung. Nilai 0x000000007 menunjukkan bahwa semua jenis didukung.
Menguji Layanan
Prosedur berikut menjelaskan cara menguji layanan.
Untuk menguji layanan
Di Panel Kontrol, mulai aplikasi Layanan. (Dalam langkah-langkah berikut, gunakan kunci F5 untuk me-refresh tampilan setelah menjalankan perintah yang memodifikasi informasi dalam aplikasi Layanan .)
Jalankan perintah berikut untuk menginstal layanan:
penginstalan svc
Layanan menulis "Layanan berhasil diinstal" ke konsol jika operasi berhasil atau pesan kesalahan sebaliknya.
Jika penginstalan layanan berhasil, layanan ditampilkan di aplikasi Layanan . Perhatikan bahwa Nama diatur ke "SvcName", Deskripsi dan Status kosong, dan Jenis Startup diatur ke "Manual".
Jalankan perintah berikut untuk memulai layanan:
svccontrol start SvcName
Jika operasi berhasil, program kontrol layanan menulis "Layanan mulai tertunda..." lalu "Layanan berhasil dimulai" ke konsol. Jika tidak, program akan menulis pesan kesalahan ke konsol.
Jika layanan berhasil dimulai, Status diatur ke "Dimulai". Kode dalam fungsi ServiceMain dijalankan oleh SCM. Jika terjadi kesalahan, layanan akan menulis pesan kesalahan ke log peristiwa. Pesan ini mencakup nama fungsi yang gagal dan kode kesalahan yang dikembalikan pada kegagalan.
Jalankan perintah berikut untuk memperbarui deskripsi layanan:
svcconfig menjelaskan SvcName
Program konfigurasi layanan menulis "Deskripsi layanan berhasil diperbarui" ke konsol jika operasi berhasil atau pesan kesalahan sebaliknya.
Jika pembaruan berhasil, Deskripsi diatur ke "Ini adalah deskripsi pengujian".
Jalankan perintah berikut untuk mengkueri konfigurasi layanan:
svcconfig query SvcName
Program konfigurasi layanan menulis informasi konfigurasi layanan ke konsol jika operasi berhasil atau pesan kesalahan sebaliknya.
Jalankan perintah berikut untuk mengubah DACL layanan:
svccontrol dacl SvcName
Program konfigurasi layanan menulis "DACL Layanan berhasil diperbarui" ke konsol jika operasi berhasil atau pesan kesalahan sebaliknya.
Jalankan perintah berikut untuk menonaktifkan layanan:
svcconfig menonaktifkan SvcName
Program konfigurasi layanan menulis "Layanan berhasil dinonaktifkan" ke konsol jika operasi berhasil atau pesan kesalahan sebaliknya.
Jika layanan berhasil dinonaktifkan, Jenis Startup diatur ke "Dinonaktifkan".
Jalankan perintah berikut untuk mengaktifkan layanan:
svcconfig mengaktifkan SvcName
Program konfigurasi layanan menulis "Layanan berhasil diaktifkan" ke konsol jika operasi berhasil atau pesan kesalahan sebaliknya.
Jika layanan berhasil diaktifkan, Jenis Startup diatur ke "Manual".
Jalankan perintah berikut untuk menghentikan layanan:
svccontrol stop SvcName
Jika operasi berhasil, program kontrol layanan menulis "Layanan berhenti tertunda..." lalu "Layanan berhasil dihentikan" ke konsol. Jika tidak, program akan menulis pesan kesalahan ke konsol.
Jika layanan berhasil dihentikan, Status kosong.
Jika layanan gagal berhenti, program kontrol layanan menulis pesan kesalahan ke log peristiwa yang menyertakan nama fungsi yang gagal dan kode kesalahan yang dikembalikan pada kegagalan.
Jalankan perintah berikut untuk menghapus layanan:
svcconfig delete SvcName
Program konfigurasi layanan menulis "Layanan berhasil dihapus" ke konsol jika operasi berhasil atau pesan kesalahan sebaliknya.
Jika layanan berhasil dihapus, layanan tidak lagi ditampilkan di aplikasi Layanan . (Perhatikan bahwa jika Anda mencoba menghapus layanan yang tidak dihentikan, operasi berhasil tetapi Jenis Startup diatur ke "Dinonaktifkan" dan entri layanan akan dihapus saat sistem dimulai ulang atau ketika layanan dihentikan menggunakan Task Manager.)
Topik terkait