递归火山软件开发平台

标题: 【ServiceDLL】【开源】可以编译Windows 服务DLL了 [打印本页]

作者: urenai    时间: 13 小时前
标题: 【ServiceDLL】【开源】可以编译Windows 服务DLL了
本帖最后由 urenai 于 2025-11-27 00:49 编辑



(, 下载次数: 1) (, 下载次数: 0)
(, 下载次数: 0)


希望优化一下代码,加入火山模板库。

我有几点请求希望吴总酌情考虑
一、服务类丢到模块里,即使不编译服务DLL,也会导出 ServiceMain 函数。
    希望添加限制:
    1、类 未包含 @强制输出,只有被调用时,才导出。
    2、类  包含   @强制输出,不论是否被调用,都导出。

二、@嵌入式方法 =“拟定一个参数=真”
       此时不限定参数被引用次数,即替换次数。
       因为小白压根碰不到封库情景。

三、取消 导出函数 名称字符限制 不能为中文,或其它符号。
安装服务时需要管理员权限。我讲清楚了吗?
哦对,忘记讲了,代码做了win32和X64 适配。

虽然每次都贴二维码,但没人捐赠过。
纯纯为爱发电了。
有没有大侠给我捐个GO平台升级卡??





作者: urenai    时间: 13 小时前
DLL实际导出ServiceMain函数名称是:InitVoldpCN
启动时,会通过修改库导出函数表为:ServiceMain

如果不想多此一举,可直接注释掉: //修改导出函数名称 (模块句柄, "InitVoldpCN", "ServiceMain")
并修改SvcDLL 类下的 ServiceMain函数的 @输出名=“ServiceMain”

  1. <火山程序 类型 = "通常" 版本 = 1 />

  2. 方法 ServiceMain <公开 静态 折叠 折叠2 @输出名 = "ServiceMain" @视窗.输出 = 真>
  3. 参数 argc <类型 = 整数 折叠>
  4. 参数 argv <类型 = 变整数>
  5. {
  6.     @  @<hSrv> = (INT_P)RegisterServiceCtrlHandler(*(LPCWSTR *)@<argv>, (LPHANDLER_FUNCTION)@<ServiceHandler>);
  7.     @  @<TellSCM>( SERVICE_START_PENDING, 0, 1 );
  8.     @  @<TellSCM>( SERVICE_RUNNING, 0, 0 );
  9. }
复制代码

不过,这么一来,别人一眼看上去,就知道你这个DLL 是服务了。

作者: 兵三进一    时间: 5 小时前
不错不错
作者: 火绒    时间: 5 小时前
学习一下
作者: xwlllve    时间: 4 小时前
能力有限只给大佬捐了50。。
作者: j519948746    时间: 3 小时前
打眼一看以为火山服务器也能编译DLL了  期待吴老板完善火山服务器
作者: aycap    时间: 2 小时前
好啊好啊,666
作者: chenshui    时间: 2 小时前
大佬6666
作者: a759077146    时间: 2 小时前
111111111111111111
作者: niuyanbo2021    时间: 2 小时前
学习一下
作者: chenwing    时间: 2 小时前
谢谢分亨!
作者: 寒风    时间: 1 小时前

好啊好啊,666




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4