一个简单的服务管理程序,用于创建/修改/删除Win32服务(未涉及内核服务,如tcpip,afd等)。
除此之外可以作为服务的宿主,命令行为:
"ServiceHost.exe" service "somedll.dll" "arg1" "arg2" ......
somedll.dll需要导出Start,Stop,Continue,Pause,Shutdown(可选,用于处理系统关闭事件),RequestStop(可选,用于服务主动要求停止)
函数原型:
DWORD WINAPI Start(int argc, TCHAR * const *argv); // 参数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)); // 参数是一个函数指针。服务在启动时,DLL中的RequestStop(如果存在的话)将被调用,DLL可保存此函数指针。服务成功启动后,在任何需要的时候,DLL都可以通过调用此函数指针来主动要求停止服务(参数dwErrorCode为错误代码,dwErrorCode为0表明无错误)
可执行文件 源代码