请问下创建windows服务程序步骤及各函数功能参数描述
请问下创建windows服务程序步骤及各函数功能参数描述,还有要执行的服务的内容放在哪部分,主要是这几个函数的功能及调用的步骤顺序,
我创建的是win32 Application 程序,主要涉及到的函数:WinMain,StartServiceCtrlDispatcher,SERVICE_STATUS_HANDLE,SERVICE_STATUS,RegisterServiceCtrlHandler
SetServiceStatus,OpenSCManager,OpenService,CreateService,ControlService
我想把要执行的服务的内容做成控制台程序,服务另外做一个,在服务中调用控制抬程序的.exe文件,不知道是不是把那个.exe文件的路径放到CreateService中的那个lpBinaryPathName参数中?
[解决办法]
Programming Server-Side Applications for MS Windows 2000
[解决办法]
直接看MSDN就可以了.
[解决办法]
给你举个例子:
首先建一个空的控制台工程,然后建立四个源文件,分别是ServApp.cpp, Serv.cpp, Serv.h, ServMsg.h
1.
ServMsg.h中声明EVMSG_INSTALLED等宏定义
2.
Serv.cpp, Serv.h中写一个CServ的类
class CServ
{
public:
CServ(const char* szServiceName, const char* szServiceDescription);
virtual CServ();
BOOL ParseStandardArgs(int argc, char* argv[]);
BOOL IsInstalled();
BOOL Install();
BOOL Uninstall();
void LogEvent(WORD wType, DWORD dwID,
const char* pszS1 = NULL,
const char* pszS2 = NULL,
const char* pszS3 = NULL);
BOOL StartService();
void SetStatus(DWORD dwState);
BOOL Initialize();
virtual BOOL OnInit();
virtual void OnStop();
virtual void OnInterrogate();
virtual void OnPause();
virtual void OnContinue();
virtual void OnShutdown();
virtual BOOL OnUserControl(DWORD dwOpcode);
virtual void Run();
static void WINAPI ServiceMain(DWORD dwArgc, LPTSTR* lpszArgv);
static void WINAPI Handler(DWORD dwOpcode);
char m_szServiceName[64];
char m_szServiceDescription[128];
int m_iMajorVersion;
int m_iMinorVersion;
SERVICE_STATUS_HANDLE m_hServiceStatus;
SERVICE_STATUS m_Status;
static CServ* m_pThis;// Singleton pattern
private:
HANDLE m_hEventSource;
};
要执行的东西放在Run()里面循环执行
3.
ServApp.cpp中
int main(int argc, char* argv[])
{
// Create the service object
CServ MyServ( "Name ", "Description ");
// Parse for standard arguments
if (!MyServ.ParseStandardArgs(argc, argv))
{
MyServ.StartService();
}
return MyServ.m_Status.dwWin32ExitCode;
}
你可以下载一个例子在上面改,这样上手快