社区
硬件/系统
帖子详情
我现在的服务什么也做不了,在什么地方加上实现服务功能的代码段呢?
MFCClass
2004-01-07 12:24:14
same
...全文
41
3
打赏
收藏
我现在的服务什么也做不了,在什么地方加上实现服务功能的代码段呢?
same
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yanw0212
2004-01-09
打赏
举报
回复
续
// 接受service的控制命令
VOID WINAPI ServiceCtrlHandler(DWORD dwControl)
{
switch(dwControl)
{
case SERVICE_CONTROL_STOP:
ServiceStatus.dwCurrentState = SERVICE_STOP_PENDING;
m_processAlarm.release();
m_filemappingprocee.release();
handler->release();
m_sockImpl.Del();
ulRet = CopyRightSafe_Logout(ulDogHandle);
if ( ulRet != 0 )
{
MessageBox(NULL,"加密狗异常退出!","服务提示",0 | 0x00200000L);
AddLogtoQ("加密狗异常退出");
}
delete []comkey;
comkey = NULL;
delete []inikey;
inikey = NULL;
delete []basickey;
basickey = NULL;
AddLogtoQ("成功关闭故障报警服务");
m_WriteLog.release();
g_isRunning = false;
ServiceStatus.dwCurrentState = SERVICE_STOPPED;
break;
default:
break;
} //end of switch()
// Send current status.
if ( !SetServiceStatus(ServiceStatusHandle, &ServiceStatus) )
{
}
return;
}
yanw0212
2004-01-09
打赏
举报
回复
// Second function to implement
VOID WINAPI ServiceMain( DWORD argc, LPTSTR *argv )
{
ServiceStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS ;
ServiceStatus.dwCurrentState = SERVICE_START_PENDING; //server处于正在启动状态
ServiceStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP /*| SERVICE_ACCEPT_PAUSE_CONTINUE*/ ,
ServiceStatus.dwWin32ExitCode = 0;
ServiceStatus.dwServiceSpecificExitCode = 0;
ServiceStatus.dwCheckPoint = 0;
ServiceStatus.dwWaitHint = 0;
// 在ServiceMain()中应该立即调用RegisterServiceCtrlHandler()注册一个Handler去处理控
ServiceStatusHandle = RegisterServiceCtrlHandler( "ExceptionService", ServiceCtrlHandler );
// 判断注册信息
if ( ServiceStatusHandle == (SERVICE_STATUS_HANDLE) 0 ) //(SERVICE_STATUS_HANDLE) 0 :类型转换
{
if (!SetServiceStatus(ServiceStatusHandle, &ServiceStatus))
{
sprintf(g_Msg,"IHISSERVICE_ANFANG SetServiceStatus error %ld\n", GetLastError() );
WriteInLogFile( g_Msg );
}
return;
}
else
{
if( !m_WriteLog.create() ) // 创建写日志的守护线程
{
MessageBox(NULL,"创建日至线程失败,服务不能运行","安防服务提示",0 | 0x00200000L);
ServiceStatus.dwCurrentState = SERVICE_STOPPED;
SetServiceStatus(ServiceStatusHandle, &ServiceStatus);
return;
}
Sleep(2000);
ulDogHandle = 0;
ulRet = CopyRightSafe_Login(ulDogHandle);
if ( ulRet == 0 )
{
ulRet = CopyRightSafe_GetLicenseEnable(ulDogHandle, LicenseNumber, MaxLicenseNumber, AddLicenseNumber, MaxAddLicenseNumber);
if ( ulRet == 1 )
{
ulRet = CopyRightSafe_DownLicenseNumber(ulDogHandle);
if ( ulRet == 0 )
{
}
else
{
MessageBox(NULL,"读取加密狗工作次数失败,服务不能运行","故障服务提示",MB_OK | 0x00200000L);
ServiceStatus.dwCurrentState = SERVICE_STOPPED;
SetServiceStatus(ServiceStatusHandle, &ServiceStatus);
AddLogtoQ("读取加密狗工作次数失败,服务不能运行");
return;
}
ZeroMemory(inikey, 8);
ulRet = CopyRightSafe_GetServiceINIKey(ulDogHandle, inikey);
if ( ulRet == 0 )
{
}
else
{
MessageBox(NULL,"读取加密狗密钥1失败,服务不能运行","故障服务提示",MB_OK | 0x00200000L);
ServiceStatus.dwCurrentState = SERVICE_STOPPED;
SetServiceStatus(ServiceStatusHandle, &ServiceStatus);
AddLogtoQ("读取加密狗密钥1失败,服务不能运行");
return;
}
ZeroMemory(basickey, 8);
ulRet = CopyRightSafe_GetBasicKey(ulDogHandle, basickey);
if ( ulRet == 0 )
{
}
else
{
MessageBox(NULL,"读取加密狗密钥2失败,服务不能运行","故障服务提示",MB_OK | 0x00200000L);
ServiceStatus.dwCurrentState = SERVICE_STOPPED;
SetServiceStatus(ServiceStatusHandle, &ServiceStatus);
AddLogtoQ("读取加密狗密钥2失败,服务不能运行");
return;
}
ZeroMemory(comkey, 8);
ulRet = CopyRightSafe_GetInitTempKey(ulDogHandle, comkey);
if ( ulRet == 0 )
{
}
else
{
MessageBox(NULL,"读取加密狗密钥3失败,服务不能运行","故障服务提示",MB_OK | 0x00200000L);
ServiceStatus.dwCurrentState = SERVICE_STOPPED;
SetServiceStatus(ServiceStatusHandle, &ServiceStatus);
AddLogtoQ("读取加密狗密钥2失败,服务不能运行");
return;
}
}
else
{
MessageBox(NULL,"读取加密狗失败,软件不能运行!","故障服务提示",MB_OK | 0x00200000L );
ServiceStatus.dwCurrentState = SERVICE_STOPPED;
SetServiceStatus(ServiceStatusHandle, &ServiceStatus);
AddLogtoQ("读取加密狗失败,软件不能运行");
return;
}
}
else
{
MessageBox(NULL,"没有找到加密狗,软件不能运行!","ExceptionService提示信息",MB_OK | 0x00200000L);
ServiceStatus.dwCurrentState = SERVICE_STOPPED;
SetServiceStatus(ServiceStatusHandle, &ServiceStatus);
AddLogtoQ("没有找到加密狗,软件不能运行");
return;
}
}
GetINIData();
if (servername.IsEmpty() || dbname.IsEmpty() || administratorname.IsEmpty() || loginpwd.IsEmpty() || NoQued==0||PortNum==0 || administratropwd=="AdministratorPWD Error" ||loginname.IsEmpty() )
{
MessageBox(NULL,"读取系统配置文件错误,软件不能运行!","故障服务提示",MB_OK | 0x00200000L);
ServiceStatus.dwCurrentState = SERVICE_STOPPED;
SetServiceStatus(ServiceStatusHandle, &ServiceStatus);
AddLogtoQ("读取系统配置文件错误,软件不能运行!");
return;
}
CString str = "Provider=SQLOLEDB.1;Password="+ loginpwd+";Persist Security Info=True;User ID=" + loginname + ";Initial Catalog=" + dbname + ";Data Source=" + servername ;
strConnection = str;
// socket部分
WSADATA wsadata;
int wsaret=WSAStartup(0x202,&wsadata);
if(wsaret)
{
MessageBox(NULL,"初始化SOCKET错误,软件不能运行!","故障服务提示",MB_OK | 0x00200000L);
ServiceStatus.dwCurrentState = SERVICE_STOPPED;
SetServiceStatus(ServiceStatusHandle, &ServiceStatus);
AddLogtoQ("初始化SOCKET错误,软件不能运行!");
return;
}
ServerSocket server;
server.setnoQued (NoQued);
if ( !server.open(PortNum) )
{
MessageBox(NULL,"初始化服务器IP地址错误,软件不能运行!","故障服务提示",MB_OK | 0x00200000L);
ServiceStatus.dwCurrentState = SERVICE_STOPPED;
SetServiceStatus(ServiceStatusHandle, &ServiceStatus);
AddLogtoQ("初始化服务器IP地址错误,软件不能运行!");
return;
}
createSocket = NULL;
handler = NULL;
createSocket = new CreateSocketHandlerImpl();
handler = new ServerSocketHandler;
handler->setServerSocket(server);
handler->setCreateSocketHandler((CreateSocketHandler *)createSocket);
if(handler->create())
{
}
else
{
MessageBox(NULL,"创建于客户端的通讯器失败,软件不能运行","故障服务提示",MB_OK | 0x00200000L);
ServiceStatus.dwCurrentState = SERVICE_STOPPED;
SetServiceStatus(ServiceStatusHandle, &ServiceStatus);
AddLogtoQ("创建于客户端的通讯器失败,软件不能运行");
return ;
}
// 第三部分:创建守护线程
if( !m_processAlarm.create() ) // 创建处理报警信息的线程
{
ServiceStatus.dwCurrentState = SERVICE_STOPPED;
SetServiceStatus(ServiceStatusHandle, &ServiceStatus);
string str = "创建守护线程失败";
AddLogtoQ(str);
return;
}
if(!m_filemappingprocee.create()) // 创建文件映射守护线程
{
ServiceStatus.dwCurrentState = SERVICE_STOPPED;
SetServiceStatus(ServiceStatusHandle, &ServiceStatus);
string str = "创建文件映射线程失败";
AddLogtoQ(str);
return;
}
ServiceStatus.dwCurrentState = SERVICE_RUNNING;
if ( !SetServiceStatus( ServiceStatusHandle, &ServiceStatus ) )
{
// 注册系统当前的状态,处理错误情况
ServiceStatus.dwCurrentState = SERVICE_STOPPED;
SetServiceStatus(ServiceStatusHandle, &ServiceStatus);
return;
}
AddLogtoQ( "成功启动故障报警服务");
g_isRunning = true;
// 创建任务栏图标的接收窗口
AddTrayIconWindows();
while (1)
{
MSG msg;
BOOL bRet;
if ( (bRet = GetMessage( &msg, NULL, 0, 0 )) != 0)
{
if (bRet == -1)
{
// handle the error and possibly exit
}
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
Sleep(100);
if ( !g_isRunning )
{
break;
}
}
ServiceStatus.dwCurrentState = SERVICE_STOPPED;
SetServiceStatus(ServiceStatusHandle, &ServiceStatus);
return;
}
MFCClass
2004-01-08
打赏
举报
回复
帮帮我这个孤独的人
HOOK大法
实现
不修改程序
代码
给程序添加
功能
【文章标题】: HOOK大法
实现
不修改程序
代码
给程序添加
功能
【文章作者】: 0x18c0 【软件名称】: Scylla 【使用工具】: OD、Stub_PE、ResHacker 【版权声明】: 本文原创于0x18c0, 转载请注明作者并保持文章的完整, 谢谢! 菜鸟第一次发帖,写的不好的
地方
请各位多多包含 本来是第三次培训的作业,要给Scylla
加上
弹窗 @Kido 老师在
html 收藏网站
功能
实现
,网站常用的收藏网站
实现
代码
浏览网站我们经常可以在网站的左上角或者右上角的
地方
看到“收藏本站、网站收藏、加入收藏”,等字眼,点击后可以收藏到本网站。那这个
功能
是怎么
实现
的呢,很简单,一
段
js就好了,一起来看看。1.在html加入以下这
段
js://定义加入收藏夹函数function join_favorite(siteUrl, siteName){//捕获加入收藏过程中的异常try {//判断浏览器是否支持doc...
如何快速的定位程序中某个
功能
对应的
代码
?
如何快速的定位程序中某个
功能
对应的
代码
? http://www.dewen.net.cn/q/2113 4788 我们经常会接手别人开发完的一些
代码
,而且通常有这样一些任务要做: 1.解决某个模块的指定bug。 2.增加或者修改某个模块的feature。 3.添加新的
功能
模块。 因此我们经常需要找到一个
功能
模块的
word贴
代码
相比于word,csdn的博客编写
功能
简直弱爆了。所谓的markdown编写出来的东西也很难看。 写博客还不如在自己在word里面写,word写博客唯一的一点缺陷就是
代码
贴出来很丑,其实是有方法贴出来很好看的
代码
的,至少不比csdn网页上的差。 至少在word里面贴出这么一
段
代码
还是很简单的。 怎么做呢?我一般是直接将
代码
从vs中拷贝出来,直接往word里面贴,这样会保留原有的关键字的高...
volatile作用及底层
实现
原理
这世界上没有优秀的理念,只有脚踏实地的结果 。 本篇文章基于JMM模型及内存的八大原子操作,如果有同学对这些内容不太熟悉可以看我的上一个文章 《 Java内存模型(JMM)与八大原子操作详解》 今天这里主要讲述三个问题: 目录 1、volatile是什么?为什么要使用volatile?使用它能解决什么问题? 2、volatile是怎样
实现
可见性的? 3、volatile是怎样
实现
有序性的? 在并发编程的世界里有三个很重要的特性:原子性、可见性、有序性。 在开始之前我们先来看一
段
代码
...
硬件/系统
2,643
社区成员
17,229
社区内容
发帖
与我相关
我的任务
硬件/系统
VC/MFC 硬件/系统
复制链接
扫一扫
分享
社区描述
VC/MFC 硬件/系统
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章