windows服务和dll问题

moon15 2006-11-10 10:41:22
这几天才接触c++,以前做C#的。现在有一这样的需求:
编写一个windows服务形式程序,然后在此服务目录下 添加一个dll(此dll为处理业务的),windwos服务程序启动时就会一个线程启动此dll,以此类推。windows服务程序就相当于一个容器,不处理具体业务,具体业务有dll来处理。
问题:
1.c++中windows服务怎么写(这个好像不是很难)
2.dll是否要有入口函数,c++中怎么写?windows服务程序启动时怎么以线程方式启动此dll。
3.是否可以windows服务不用多线程处理dll,而是有dll在内部启动线程来处理业务。
要求:
1.dll等要求用配置文件。xml形式
2.dll中需要定时器
======
解决问题分数好说。另开帖子给分。
======
希望大家帮个忙,刚弄c++。对vc环境一点都不熟悉。
...全文
494 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
88480 2006-11-12
  • 打赏
  • 举报
回复
up
kugou123 2006-11-10
  • 打赏
  • 举报
回复
问题:
1.c++中windows服务怎么写(这个好像不是很难)
可以参考以下文章,搭建服务框架:
http://www.xiaozhou.net/ReadNews.asp?NewsID=974
http://www.xiaozhou.net/ReadNews.asp?NewsID=974

2.dll是否要有入口函数,c++中怎么写?windows服务程序启动时怎么以线程方式启动此dll。
因为每个DLL都由windows服务来加载,所以在框架中你可以扫描服务目录下的DLL文件,然后逐个建立线程加载。每个DLL用一个线程来加载。.NET里面可以用反射来实例化程序集的对象,win32下面要麻烦些,你可以用LoadLibrary来加载。每个DLL都由框架来调用,所以你可以规定给每个DLL导出一个相同的函数作为调用接口。加载后的dll的句柄可以用一个类似HashTable的结构来保存,供框架管理
3.是否可以windows服务不用多线程处理dll,而是有dll在内部启动线程来处理业务。
框架可以使用一个线程来遍历每个DLL,然后调用他们的接口函数。不过这样不太保险,如果某个DLL出现问题,导致你的线程死掉,框架也危险。可以每个DLL生成一个线程来调用他们的接口。DLL内部可以使用多线程来处理业务。
要求:
1.dll等要求用配置文件。xml形式
读取XML配置文件,可以使用tinyxml这个库,开源的。
2.dll中需要定时器
用SetTimer函数,或者用while+Sleep来模拟定时。
moon15 2006-11-10
  • 打赏
  • 举报
回复
dll应该使用哪种入口?
DLL_PROCESS_ATTACH,DLL_THREAD_ATTACH,DLL_THREAD_DETACH,DLL_PROCESS_DETACH 哪种更稳定些
laolaoliu2002 2006-11-10
  • 打赏
  • 举报
回复
http://www.vckbase.com/document/viewdoc/?id=1667
flyelf 2006-11-10
  • 打赏
  • 举报
回复
ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.WIN32COM.v10.en/dllproc/base/servicemain.htm
ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.WIN32COM.v10.en/dllproc/base/dllmain.htm
laolaoliu2002 2006-11-10
  • 打赏
  • 举报
回复
http://www.vckbase.com/document/viewdoc/?id=1677
kugou123 2006-11-10
  • 打赏
  • 举报
回复
arrylist/hashtable

STL里面有
moon15 2006-11-10
  • 打赏
  • 举报
回复
加载目录下的dll时,c++中是否有arrylist/hashtable这样的东东,怎么用?
moon15 2006-11-10
  • 打赏
  • 举报
回复
to:kugou123(酷狗)(君看一叶舟,出没风波里)
在c#中,我就是一个线程启动一个dll的。所以框架还算是比较稳定(经过多个月实际运行)

能否给个c++代码?
moon15 2006-11-10
  • 打赏
  • 举报
回复
to: kugou123(酷狗)(君看一叶舟,出没风波里)
以上功能已经在C#中实现,现在想转到c++上。因为客户端不能装framework

to:yjgx007(who's superior)
那篇文章已经看过,不太适合要求,他是调用exe。

思路我会。就是c++中的具体实现不会。因为没用过VC,所以来求助代码
yjgx007 2006-11-10
  • 打赏
  • 举报
回复
http://www.codeproject.com/system/xyntservice.asp

15,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧