草庐IT

AppInit_DLL

全部标签

c++ - 在纯 C++ dll 中捕获由 MFC 应用程序生成的 Windows 消息

首先:这可能吗?我有一个连接某些硬件的第三方dll。它是用MFC编写的。我(从dll供应商那里)收到了一个示例VisualStudio2010解决方案,它只有一个项目:一个调用相关第三方dll的MFC应用程序(.exe)。它工作正常。当我尝试使用我的dll中的第三方dll(纯C++,没有MFC,没有.NET)时,我可以很好地调用它的函数,但有一个问题:示例MFC应用程序似乎“覆盖”MessageProc用于捕获第三方dll生成的某些消息。尽管dll有一个名为“RegisterFuncCallback”的函数并且我使用它,但我的回调从未被调用。问题来了:如何在不创建MFC应用程序的情况下

c++ - DLL 中的共享内存

在DLL中共享内存是如何工作的?当DLL附加到进程时,它使用与进程相同的内存地址。假设我们在DLL中有以下函数:int*data=0;intfoo(){if(!data)data=newint(random());return*data;}当进程A调用此函数时,它会创建新对象(int)并返回其值。但是现在进程B附加了这个DLL。它调用foo()但我不明白它是如何工作的,因为data在进程的内存空间中。B怎么能直接用呢? 最佳答案 你是对的,默认情况下DLL不会跨进程共享内存。在您的示例中,进程A和B都将获得一个单独的“数据”实例。如

C++ Windows dll查看器

我想在C++中模拟非托管dll。有没有什么好的工具可以打开查看它的界面?谢谢 最佳答案 最常用的工具是DependencyWalker.这显示了导出符号的列表。但是,它不显示函数原型(prototype),因为它们不包含在DLL元数据中。要获得该信息,您需要DLL的头文件。此声明的异常(exception)情况是包含带有类型库的COM/ActiveX组件的DLL。即使您有原型(prototype),也不足以了解如何模拟DLL。您需要DLL的完整文档。然后您可能还有很多逆向工程要做。 关于

c++ - Dll 函数调用比普通函数调用更快?

我正在测试DLL中导出函数和普通函数的速度。DLL中的导出函数怎么可能快很多?100000000functioncallsinaDLLcost:0.572682seconds100000000normalfunctionclasscost:2.75258seconds这是DLL中的函数:extern"C"__declspec(dllexport)intexample(){return1;}这是正常的函数调用:intexample(){return1;}这是我测试它的方式:intmain(){LARGE_INTEGERfrequention;LARGE_INTEGERdllCallSta

c - 如何从错误偏移中确定调用的 kernel32.dll 函数

我有一个作为Windows服务运行的应用程序。今天,我被告知该服务已终止。我找到了一个事件查看器条目,其基本信息是:故障模块kernel32.dll,版本6.0.6002.18740,时间戳0x50b58c3d,异常代码0xc0000005,故障偏移量0x0003fc2e我确定我的代码中存在错误。我可以根据偏移量确定kernel32.dll函数(异常来自哪里)吗?我打算回溯到我的代码中的调用。 最佳答案 我同意评论中所说的内容,但无论如何我认为答案可能会有用。如果EventViewer报告了kernel32.dll中失败指令的偏移量

windows - 用 Rust 构建的 DLL 在运行时需要 libgcc.dll 吗?

如果我用Rustlanguage构建一个DLL,它是否需要libgcc*.dll在运行时出现?一方面:我在互联网上的某个地方看到过一个帖子,声称是的;rustc.exe在其目录中有libgcc_s_dw2-1.dll,下载后cargo.exe没有dll将无法运行来自http://crates.io网站;另一方面:我看过有关使用Rust构建玩具操作系统内核的文章,因此它们肯定不需要libgcc动态库。所以,我很困惑。什么是确定的答案? 最佳答案 Rust为Windows提供了两个主要的工具链:x86_64-pc-windows-gnu

windows - NativeCall 在 Kernel32.dll 中找不到函数

我正在尝试移植thiscode到Perl6。虽然我可以调用GetStdHandle、GetConsoleMode和SetConsoleMode,但当我尝试调用ReadConsoleInput时我的脚本会中断:Cannotlocatesymbol'ReadConsoleInput'innativelibrary'Kernel32.dll'inmethodsetupatC:\rakudo\share\perl6\sources\947BDAB9F96E0E5FCCB383124F923A6BF6F8D76B(NativeCall)line287inmethodCALL-MEatC:\rak

python - 如何调试在 Python 中使用的 Windows DLL?

在Windows7上,我有一个使用WindowsDLL的python脚本,使用.NET公共(public)语言运行时(CLR)。使用的DLL之一内部发生错误,但标准Python调试器仅在Python代码级别(而不是DLL)进行调试。如何调试DLL中发生的事情? 最佳答案 如果您有可用的MicrosoftVisualStudio,1)打开您的DLL所属的VisualStudio项目(或创建一个新项目)。2)如果您已经为调试设置了DLL(您已经使用调试信息构建了它,它将成为您的Python程序将使用的那个),您可以在DLL代码中设置断点

windows - 将 .DLL 转换为 .SO

你们谁能帮我把windowsdll文件转换成.so文件。 最佳答案 您可以尝试将源代码重新编译为dll到共享对象。This在确保代码确实可移植后,可能会帮助您入门。编辑:这里是yetanotherlink它可以帮助指导您完成使用GCC和GNU工具链的其他部分创建共享库的过程。Thislink将帮助您发现其他人在进行类似项目时遇到的陷阱。对于这样一项特定的任务,尤其是在有这么多未知数的情况下,只能提供这么多帮助。如果您选择在问题中提供更多信息,请发表评论。注意:我正在从Google中直接提取这些链接。

c# - Kernel32.dll 中的 CreateFile 不允许我打开物理磁盘

我正在尝试使用以下代码从PhysicalDrive0获取MBR:privatestaticbyte[]ReadMbr(stringlpFileName){byte[]mbr=newbyte[512];using(SafeFileHandledrive=CreateFile(lpFileName:lpFileName,dwDesiredAccess:(uint)EFileAccess.GenericRead,//DONOTMODIFYTHEMBR!!!dwShareMode:(uint)EFileShare.Write|(uint)EFileShare.Read|(uint)EFileS