一個(gè)簡(jiǎn)單的服務(wù)管理程序,用于創(chuàng)建/修改/刪除Win32服務(wù)(未涉及內(nèi)核服務(wù),如tcpip,afd等)。
除此之外可以作為服務(wù)的宿主,命令行為:
"ServiceHost.exe" service "somedll.dll" "arg1" "arg2" ......
somedll.dll需要導(dǎo)出Start,Stop,Continue,Pause,Shutdown(可選,用于處理系統(tǒng)關(guān)閉事件),RequestStop(可選,用于服務(wù)主動(dòng)要求停止)
函數(shù)原型:
DWORD WINAPI Start(int argc, TCHAR * const *argv); // 參數(shù)argv[n]即為arg1,arg2,...,返回0表明成功,其它值表明失敗
DWORD WINAPI Stop();
DWORD WINAPI Shutdown();
DWORD WINAPI Pause(); // 返回0表明成功,其它值表明失敗
DWORD WINAPI Continue(); // 返回0表明成功,其它值表明失敗
DWORD WINAPI RequestStop(DWORD (CALLBACK*)(DWORD dwErrorCode)); // 參數(shù)是一個(gè)函數(shù)指針。服務(wù)在啟動(dòng)時(shí),DLL中的RequestStop(如果存在的話)將被調(diào)用,DLL可保存此函數(shù)指針。服務(wù)成功啟動(dòng)后,在任何需要的時(shí)候,DLL都可以通過(guò)調(diào)用此函數(shù)指針來(lái)主動(dòng)要求停止服務(wù)(參數(shù)dwErrorCode為錯(cuò)誤代碼,dwErrorCode為0表明無(wú)錯(cuò)誤)
可執(zhí)行文件 源代碼