递归火山软件开发平台

标题: 内存模块的问题 [打印本页]

作者: sfmf520    时间: 2023-12-2 17:11
标题: 内存模块的问题
JU文件 = 取特定目录 (特定目录类型.系统桌面) + "124.dll"
JU模块句柄 = 内存模块.从文件加载 (JU文件)

请问下,内存模块 加载的DLL文件,是不是里面不能带窗口的?我试了两个DLL文件,不带窗口的DLL可以加载,带窗口的DLL它报错了。

错误: 接收到未经处理的严重异常,代码为: 0xE06D7363

作者: Xelloss0618    时间: 2023-12-2 19:19
内存模块不是通过系统 API 正常加载 DLL,而是模拟了系统加载 DLL 的流程,但有些系统内部的操作是无法还原的。
比如内存加载的 DLL 对系统而言是不可见的,这带来的优点是隐蔽性,但同样也导致了内存 DLL 调用一些 API 无法得到正常的结果。

加载带窗口 DLL 出错的原因也是如此,MFC 内部会调用 GetModuleFileName,内存加载后,这个 API 只能返回 NULL。
而正常情况下会返回非空的文本指针,所以 MFC 内部没有对此做判断,接着 MFC 继续调用了这个空指针,自然就出错了。
作者: fengyishen    时间: 2023-12-2 22:03
Xelloss0618 发表于 2023-12-2 19:19
内存模块不是通过系统 API 正常加载 DLL,而是模拟了系统加载 DLL 的流程,但有些系统内部的操作是无法还原 ...

擦,太生猛了。。之前加载大漠免注册DLL也是闪退




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