使用C语言编写windows服务一般框架
来源:互联网 发布:照片制作mv软件 编辑:程序博客网 时间:2024/05/17 22:49
编写windows服务和编写windows应用程序一样,有一些回调函数必须填写且向windows 服务管理器(service manager)进行注册,否则会导致服务启动失败。因近期写个服务,其中遇到一些有问题,有部分内容想和大家分享一下,请大家指正。
windows服务一般框架代码如下:
#include <Windows.h>
#include <tchar.h>VOID WINAPI ServiceHandler(DWORD dwControl)
{
switch (dwControl)
{
case SERVICE_CONTROL_STOP:
{
ExitProcess(0);
}
break;
}
}
DWORD WINAPI ThreadFunc(PVOID pv)
{
Sleep(2*1000);
return TerminateProcess(GetCurrentProcess(),1);
}
VOID WINAPI ServiceMain(DWORD dwNumServicesArgs,PSTR *ppcServiceArgVectors)
{
SERVICE_STATUS_HANDLE hService = NULL;
//如果下面不初始化,导致service manager无法收到消息
SERVICE_STATUS SrvStatus = {0};
OutputDebugStringA("service main.....");
hService= RegisterServiceCtrlHandlerA("winservice",ServiceHandler);
SrvStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
SrvStatus.dwCurrentState= SERVICE_RUNNING;
//服务接受停止的控制,如果你不想让别人停止你的服务,下面这行代码可以删除
SrvStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP;
SetServiceStatus(hService,&SrvStatus);
//这句话也很重要,我刚开始就是没这句话,导致服务不能启动CreateThread(0,0,ThreadFunc,0,0,0);//线程只是一个示例,2S后,服务启动后自动退出
return;
}
int _tmain(int argc, _TCHAR* argv[])
{
SERVICE_TABLE_ENTRYA scArrTable[] =
{
{"winservice",ServiceMain},
{NULL,NULL}
};
StartServiceCtrlDispatcherA(scArrTable);
return 0;
}
以上实例,仅供参考。
大家可以将编译后的exe使用如下命令行进行服务的注册:
sc create "windowsservice" binPath= "windowssrv.exe" //“binPath=”这个等于符号后有个空格,否则无法注册服务,请将windowssrv.exe改为你自己EXE所在全路径。
- 使用C语言编写windows服务一般框架
- 利用C++编写Windows服务程序的一般框架
- C语言编写Windows服务程序。
- 用C语言编写Windows服务程序
- 用 C 语言编写 Windows 服务程序
- 用C语言编写Windows服务程序
- C语言编写Windows服务程序
- C语言编写Windows服务程序
- 用C语言编写windows服务程序
- C语言Windows服务程序编写-ServiceMain
- 编写Windows服务(C#)
- C++编写Windows服务程序 用 C 语言编写 Windows 服务程序的五个步骤
- 用 C 语言编写 Windows 服务程序的五个步骤
- 用 C 语言编写 Windows 服务程序的五个步骤
- 用C语言编写Windows服务程序的五个步骤
- 用 C 语言编写 Windows 服务程序的五个步骤
- 用C 语言编写 Windows 服务程序的五个步骤
- 用C语言编写Windows服务程序的五个步骤
- VS嵌入汇编ASM
- 英伟达在线程序测评——后续遍历二叉树的序列转前序输出
- POJ 2109 Power of Cryptography
- 11级_Java_曹建波 9.18 枚举&内省&beanutils
- 秋雨寄相思
- 使用C语言编写windows服务一般框架
- linux下屏保设置
- WebForm注册界面
- HDU 2577 How to Type
- paip.提升效率---源码生成流程图工具
- org.apache.jasper.JasperException: /update.jsp(1,69)equal symbol expected
- Hadoop在MapReduce中使用压缩详解
- 内部类访问规则
- 记第一次百度电话面试