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.
Ketika fungsiHandlerdipanggil oleh utas dispatcher, fungsi ini menangani kode kontrol yang diteruskan dalam parameter Opcode dan kemudian memanggil fungsi ReportSvcStatus untuk memperbarui status layanan. Ketika fungsi Handler menerima kode kontrol, fungsi tersebut harus melaporkan status layanan hanya jika penanganan kode kontrol tersebut menyebabkan status layanan berubah. Jika layanan tidak bertindak terhadap kontrol, layanan tidak boleh melaporkan statusnya kepada manajer kontrol layanan. Untuk kode sumber untuk ReportSvcStatus, lihat Menulis Fungsi ServiceMain.
Dalam contoh berikut, fungsi SvcCtrlHandler adalah contoh fungsi Handler. Perhatikan bahwa variabel ghSvcStopEvent adalah variabel global yang harus diinisialisasi dan digunakan sebagaimana ditunjukkan dalam Menulis fungsi ServiceMain.
//
// Purpose:
// Called by SCM whenever a control code is sent to the service
// using the ControlService function.
//
// Parameters:
// dwCtrl - control code
//
// Return value:
// None
//
VOID WINAPI SvcCtrlHandler( DWORD dwCtrl )
{
// Handle the requested control code.
switch(dwCtrl)
{
case SERVICE_CONTROL_STOP:
ReportSvcStatus(SERVICE_STOP_PENDING, NO_ERROR, 0);
// Signal the service to stop.
SetEvent(ghSvcStopEvent);
ReportSvcStatus(gSvcStatus.dwCurrentState, NO_ERROR, 0);
return;
case SERVICE_CONTROL_INTERROGATE:
break;
default:
break;
}
}
Topik terkait