关于编写服务应用程序的一点总结
来源:互联网 发布:变频器仿真软件下载 编辑:程序博客网 时间:2024/04/29 17:25
@1 定义全局变量。主要为设置服务句柄和状态。
@2 添加Init初始化函数。
@3 添加安装和删除服务函数。
@4 添加服务主线程函数和控制函数。
@5 在主线程函数里注册控制函数和程序执行主体
@6 在 main主函数内注册添加安装,删除,注册主函数。
###############
大致的主函数:
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
Init(); //调用初始化函数
dwThreadID = ::GetCurrentThreadId(); //获取当前线程ID号
SERVICE_TABLE_ENTRY st[] =
{
{ szServiceName, (LPSERVICE_MAIN_FUNCTION)ServiceMain },
{ NULL, NULL }
};
if (stricmp(lpCmdLine, "/install") == 0)
{
Install();
}
else if (stricmp(lpCmdLine, "/uninstall") == 0)
{
Uninstall();
}
else
{
if (!::StartServiceCtrlDispatcher(st))
{
LogEvent(_T("Register Service Main Function Error!"));
}
}
return 0;
}
#################
创建服务函数为:
SC_HANDLE CreateService(
SC_HANDLE hSCManager, //服务控制管理程序维护的登记数据库的句柄,由系统函数OpenSCManager 返回
LPCTSTR lpServiceName, //以NULL 结尾的服务名,用于创建登记数据库中的关键字
LPCTSTR lpDisplayName, //以NULL 结尾的服务名,用于用户界面标识服务
DWORD dwDesiredAccess, //指定服务返回类型
DWORD dwServiceType, //指定服务类型
DWORD dwStartType, //指定何时启动服务
DWORD dwErrorControl, //指定服务启动失败的严重程度
LPCTSTR lpBinaryPathName, //指定服务程序二进制文件的路径
LPCTSTR lpLoadOrderGroup, //指定顺序装入的服务组名
LPDWORD lpdwTagId, //忽略,NULL
LPCTSTR lpDependencies, //指定启动该服务前必须先启动的服务或服务组
LPCTSTR lpServiceStartName, //以NULL 结尾的字符串,指定服务帐号。如是NULL,则表示使用LocalSystem 帐号
LPCTSTR lpPassword //以NULL 结尾的字符串,指定对应的口令。为NULL表示无口令。但使用LocalSystem时填NULL
);
#################
打开服务函数为:
SC_HANDLE WINAPI OpenService( _In_ SC_HANDLE hSCManager, _In_ LPCTSTR lpServiceName, _In_ DWORD dwDesiredAccess);
具体详略查看MSDN文档。
##################
停止服务函数为:
BOOL WINAPI ControlService(
_In_ SC_HANDLE hService,
_In_ DWORD dwControl,
_Out_ LPSERVICE_STATUS lpServiceStatus
);
删除服务函数为:
BOOL WINAPI DeleteService(
_In_ SC_HANDLE hService
);
- 关于编写服务应用程序的一点总结
- 关于C语言多文件编写的一点小小总结
- 关于C语言多文件编写的一点小小总结
- 关于C语言多文件编写的一点小小总结
- NET编写简单的Windows 服务应用程序
- 关于应用程序配置文件的一点思索
- 关于编写程序的一点见解
- 关于多线程的一点总结
- 关于SYS_CONNECT_BY_PATH 的一点总结
- 关于数据库的一点总结
- 关于反编译的一点总结
- 关于dijkstra的一点总结
- 关于floyd的一点 总结
- 关于ActiveMQ的一点总结
- 关于线程的一点总结
- 关于DM的一点总结
- 关于NSSet的一点总结
- 关于NorFlash的一点总结
- OOP学习目录
- GoldenGate实施参考
- sql 取dataTime的天
- Bootstrup的炫酷jQuery开关按钮插件
- WebKit加载流程 - 概述
- 关于编写服务应用程序的一点总结
- hdu 1305 Immediate Decodability (字典树)
- 简易改写Ffmpeg
- 维护在线redo log
- VC获取系统时间、程序运行时间(精确到秒,毫秒)的五种方法
- Java 基础知识No.1——Java的类和对象
- 新的想法不是关键
- 关于EditText或WebView文字长按,actionMode出错问题解决方案
- CentOS-6.3安装配置JDK-7