VC++ Service编程(四)服务ServiceMain函数

C++编写服务程序 近段时间,在学习使用C++写windows服务。参考了若干的资料,写如下服务,作为学习笔记。 写服务主要有一下步骤 1、使用 StartServiceCtrlDispatcher(SERVICE_TABLE_ENTRY lpServiceStartTable);连接SCM,让SCM控制函数。需要注意的是最后lpServiceStartTable的最后一个结构体的两个属性值都是NULL 2、编 阅读详情

服务ServiceMain函数

    当一个服务控制程序请求开启一个新的服务时,SCM(服务控制管理器)开启服务的同时,向控制调度器发送一个开始请求。控制调度器为服务创建一个新的线程来运行ServiceMain函数。

    ServiceMain函数应该执行下面的这些任务:

    1、立刻为服务调用RegisterServiceCtrlHandlerEx函数,用来注册一个处理控制请求的HandlerEx函数。RegisterServiceCtrlHandlerEx函数的返回值是一个service status handle(服务状态句柄),稍后向SCM通知当前服务状态会用到。

    2、执行初始化。如果初始化的时间非常短(小于一秒),可以直接在ServiceMain函数中完成。

    如果预期初始化的时间会比一秒长,调用SetServiceStatus函数,在SERVICE_STATUS结构中指明等待间隔,以及当前的状态是SERVICE_START_PENDING。当初始化继续时,服务应该再调用SetServiceStatus函数来报告当前状态。多次调用SetServiceStatus函数对调试服务很有用。

    3、初始化结束后,调用SetServiceStatus函数,在SERVICE_STATUS结构中指明SERVICE_RUNNING状态。

    4、执行服务的任务,或者已经没有未完成的任务,那就返回。服务状态有任何改变,都要保证调用SetServiceStatus函数来报告新的状态。

    5、如果在初始化或者运行的过程中遇到错误并且清理的过程会很长,服务应该调用SetServiceStatus函数,在SERVICE_STATUS结构中指定SERVICE_STOP_PENDING状态。一旦清理结束,在最后中止的线程中调用SetServiceStatus函数,在SERVICE_STATUS结构中指定SERVICE_STOPPED状态。确保向SERVICE_STATUS结构里的dwServiceSpecificExitCode和dwWin32ExitCode赋值,来标志错误。

用 VC++建立 Windows 服务程序 1.最简单的创建一个windows service程序 (1)新建一个win32控制台程序 (2)开始->运行->cmd,必须右键—>以管理员身份运行,此时进入dos命令提示符界面。 (3)输入 sc create test binPath= “D:\Code_Test\VS2012_test\test_console\test_console\Release\test_cons... 阅读详情

相关推荐

用VC++建立Service服务应用程序

用VC++建立Service服务应用程序,使一般的应用程序成为服务应用程序。

服务的ServiceMain函数

当服务控制程序请求运行新服务时,服务控制管理器(SCM)启动服务并向控制调度程序发送启动请求。控制调度程序创建一个新线程来执行服务的ServiceMain功能。 ServiceMain函数应执行以下任务: 初始化所有全局变量。 立即调用RegisterServiceCtrlHandler函数以注册Handler函数来处理服务的控制请求。RegisterServiceCtrlHa...

xinqingwuji的博客 3763

电源完整性之Cadence Sigrity Power DC_IR_Drop仿真

之前和大家分享过电源完整性之仿真设计原理链接: link.今天接着上一篇文章总结一下电源直流压降的的仿真操作流程及一些simulation中的设置参数,用到的时候Cadence Sigrity 中的Power DC组件,下面开始享受仿真的快乐吧: 1.仿真模式选择与文件导入 选择Cadence Sigrity下的Power DC组件,然后先择licence,最后就可以打开我们之前转化好的.SPD文件。操作如下图: 2.设置层叠信息和过孔焊盘参数 层叠信息:每层的介质厚度、材料、介电常数、介质损耗角等,如

刘小同学的博客 1万+

调试dll中的ServiceMain函数

调试dll中的导出函数ServiceMain 1、ServiceMain一般是被服务进程调用执行的,创建服务,启动起来之后,被执行,可以按调试服务的方式调试 2、直接rundll32.exe ServiceMain也行 打开OD,打开文件 C:\Windows\System32\rundll32.exe ,输入参数 C:\1.dll ServiceMain dll文件路径 导出函数名称 r...

weixin_46953583的博客 1419

保姆级图解:HKMG工艺中的‘覆盖层’(Cap Layer)到底怎么调阈值电压?

本文深入解析了HKMG工艺中覆盖层(Cap Layer)如何精准调控阈值电压的关键技术。通过原子级精度的ALD工艺和材料选择,覆盖层在半导体制造中扮演着隐形调节器的角色,直接影响晶体管的电气特性。文章详细介绍了La2O3和Al2O3等材料的特性对比、ALD工艺的原子级控制,以及实战调试中的关键步骤和问题排查方法。

weixin_27032989的博客 497

植物叶绿体基因组分析全攻略:从共线性到密码子偏好性

本文全面解析植物叶绿体基因组分析流程,从共线性分析到密码子偏好性研究。详细介绍了叶绿体基因组结构特征、测序数据获取与质量控制、基因组组装与注释方法,以及比较基因组学和进化分析技术。特别关注IR区边界变异分析和选择压力评估,为植物系统发育研究和物种鉴定提供实用指南。

weixin_28475533的博客 222

c语言编写系统服务程序,C语言Windows服务程序编写-ServiceMain

C语言编写的Windows服务程序,可以类比Linux/Unix环境下的daemon进程。一下是VS2010环境下的demo:// windows_service.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #define SLEEP_TIME 5000 /*间隔时间*/#d...

weixin_34832594的博客 875

华为HPLC模组全拆解之电力载波收发原理分析

电力线载波通信(PLC)是一种使用电力线进行数据传输的通信技术,即利用现有电网作为信号的传输介质,使电网在传输电力的同时可以进行数据传输。目前根据所用频段的不同,低压电力线载波通信一般分为窄带电力线载波通信(10KHz~500KHz)和宽带电力线载波通信(2MHz~20MHz)。这里的频率可以简单理解为单片机串口的通信波特率,频率越小通信速度越慢,频率越大通信速度越快。为了研究电力载波通信原理,笔者以华为的一款宽带电力载波模组为例进行详细的分析,该模组主控采用的是海思芯片,型号为Hi3921EV100。

xingxingdiandeng69的博客 2万+

VC++ Service编程(二)编写ServiceMain函数

编写ServiceMain函数     下面例子中的MyServiceStart函数是这个服务的ServiceMain函数。MyServiceStart函数可以使用命令行参数,就像控制台程序中main函数那样的方式。第一个参数是传递给服务的值的个数,并且这个个数的最小值总是1。第二个参数是一个字符数组指针。数组的第一项总是当前服务的名称。     MyServiceStart函数首先填充一个S

Wang Shen 2357

高通平台 Android T 蓝牙技术全解析:A2DP 与 AVRCP 核心代码路径与交互流程

A2DP 接收端 - 连接流程(AVDTP 打开)

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 290

目前固态激光雷达在机器人领域的应用难点汇总

固态激光雷达在机器人领域面临性能与成本的双重挑战:探测性能上,动态范围不足(60-80dB)导致高/低反射物体识别困难,近距盲区(30-50cm)与长距精度(±3cm)矛盾突出;结构上视场角与点云密度难以平衡,多雷达拼接又带来同步误差。成本方面,核心元件(SPAD/OPA芯片)良率低(<50%)、校准工序复杂,单机成本超200美元。环境适应性上,粉尘附着、振动偏移(±2°)和光衰(1万小时衰减15%)制约可靠性。

start_up_go的博客 482

文章索引-Windows Service

SERVICE_STATUS结构各成员解析 Windows Service 介绍

Just_So_So~的博客 193

Transformer从菜鸟到新手(一)

从本文开始回顾一下Transformer的原理与实现细节,包括分词算法BPE的实现。最终利用从零实现的Transformer模型进行英中翻译。

日积月累,天道酬勤 2125

VC++ Service编程(一)编写main函数

翻译自MSDN,是好多年前我发布在好网博客上的,现在把它转过来 编写服务程序的main函数     服务程序的main函数调用StartServiceCtrlDispatcher函数,将它与SCM(服务控制管理器)联系起来,并开启一个控制调度线程。控制调度线程不停的循环,等待接收在调度表中已经定义好的控制请求。除非程序中的所有服务都中止或者遇到错误,要不这个线程不会返回。当程序中的所有服务

Wang Shen 2467

华为od统一考试B卷【宜居星球改造计划】Java&Go 实现

XXX年,人类通过对火星的大气进行宜居改造分析,使得火星已在理论上具备人类宜居的条件,由于技术原因,无法一次性将火星大气全部改造,只能通过局部处理形式,假设将火星待改造的区域为row * column的网格每个网格有3个值,宜居区、可改造区、死亡区,使用YES、NO、NA代替,YES表示该网格已经完成大气改造,NO表示该网格未进行改造,后期可进行改造,NA表示死亡区,不作为判断是否改造完成的宜居,无法穿过 初始化下,该区域可能存在多个宜居区,并且每个宜居区能同时在每个太阳日单位向上下左右四个方向的相邻格子进

MISAYAONE的博客 1万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

VC++ Service编程(三)服务入口

服务入口     通常,我们把服务做成控制台程序。控制台程序的入口是main函数。main函数从注册表中的ImagePath值来获取参数,提供给服务。     当SCM(服务控制管理器)开启一个服务,它就开始等待这个服务调用StartServiceCtrlDispatcher函数。使用下面的原则:     1、SERVICE_WIN32_OWN_PROCESS类型的服务必须在主线程中马上调用

Wang Shen 1654

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

vc++搭建一个NT服务框架

#include #include SERVICE_STATUS m_ServiceStatus;SERVICE_STATUS_HANDLE m_ServiceStatusHandle;BOOL bRunning=true;void WINAPI ServiceMain(DWORD argc, LPTSTR *argv);//服务主函数void WINAPI ServiceCtrlHandler(

尹成的技术博客 3231

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

C++后台服务程序开发模式

一直感觉VC++太复杂了,但昨天看了汪蒲阳编著的因特网应用编程,其中写到后台服务程序的编写,论述的非常详细,而且逻辑清晰,看了之后感觉明白不少,故拿来与需要之人共享,并更正了原程序的一些错误,补充了一些材料。另外还有一种用C++编写后台服务程序的思路(不算.NET上服务程序开发模型),以后整理好了再发上来。   在2000/XP等基于NT 的操作系统中,有一个服务管理器,它管理的后

liujiayu2的专栏 1248

Windows服务程序的原理及实现

今天给大家讲下怎样做一个服务程序...本来是想详细讲的,不过写着写着累得要命..很多  地方就没详细...不过代码我加了点注...如果还有一些不明白的自己查下MSDN......便宜  环境,,VC++6.0...代码有俩段,一段是服务程序的..另一段是安装服务程序的...这个程序  的功能是开机发出滴滴声....安装成功后自己点启动...下次开机就自动起动了....

jiangxinyu的专栏 4594
上一篇: VC++ Service编程(三)服务入口
下一篇: VC++ Service编程(五)编写Control Handler函数
0皮皮0
博客等级 码龄22年 26粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值