admin 发表于 2024-2-3 09:41:58

【卸载dll功能和unload函数】

这个一般的用户用不到,属于高级功能

一句话概括就是:使用卸载dll功能时会加载对应子程序中的unload子程序

这是否有点多次一举,但是在特殊情况下无法卸载dll
.版本 2

.子程序 main, 文本型, 公开, 初始化
.参数 get数据, 文本型
.参数 post数据, 文本型
.参数 ip, 文本型
.参数 传递序号, 整数型
.参数 请求序号, 整数型
.局部变量 传入文本值, 文本型
.局部变量 返回文本值, 文本型

线程_启动 (&main)

.子程序 初始化

.判断循环首 (真)

    ' 你的代码

.判断循环尾 ()


当我请求main子程序的时候,main内部加载了一个死循环的初始化子程序,这种写法常用作监测类型的程序,这个时候卸载dll这个功能就会失效,一旦失效我们在测试dll功能的时候就需要不断地重启EWEB程序(EWEB调用了旧的dll,新的dll无法替换成功),这是非常麻烦的

目前的技术不足以结束掉dll循环的线程,因此需要借助unload子程序来销毁掉线程,后续突破了就不需要使用此方法了

下方写法中的相关代码来源于精易模块

.版本 2

.程序集 程序集1
.程序集变量 初始化线程id, 整数型

.子程序 _启动子程序, 整数型, , 请在本子程序中放置动态链接库初始化代码


返回 (0)' 返回值被忽略。

.子程序 main, 文本型, 公开, 初始化
.参数 get数据, 文本型
.参数 post数据, 文本型
.参数 ip, 文本型
.参数 传递序号, 整数型
.参数 请求序号, 整数型
.局部变量 传入文本值, 文本型
.局部变量 返回文本值, 文本型

初始化线程id = 线程_启动 (&main)

.子程序 初始化

.判断循环首 (真)

    ' 你的代码

.判断循环尾 ()


.子程序 unload, 文本型, 公开, 卸载sxd.dll时执行此函数
.参数 get数据, 文本型
.参数 post数据, 文本型
.参数 ip, 文本型
.参数 传递序号, 整数型
.参数 请求序号, 整数型



线程_销毁 (初始化线程id)
返回 (“1”)



点击返回: 【EWEB总览】
页: [1]
查看完整版本: 【卸载dll功能和unload函数】