草庐IT

DLL_EXPORT

全部标签

windows - 在 Dll 的 .edata 部分中指定的 Dll 名称的作用

Dll的.edata部分除了单独的函数导出规范外,还包含一个指定Dll名称的字段(参见thisreference,字段“NameRVA”)。然而,在我能找到的所有文档中,导入的解析总是引用Dll文件名和路径,当然这些可能与本条目中指定的“记录的”Dll名称不同。这个字段的用途是什么?它在解决进口方面有什么作用吗? 最佳答案 调试原始内存时,加载DLL的文件名(和路径)可能不容易获得,导出表中的这个字段是识别特定内存区域被特定DLL占用的便捷方式.除了足以作为包含它的理由的调试值之外,Windows加载程序还可以在递归解析导入时使用此

windows - 我如何知道系统调用属于哪个 DLL?

我有一长串程序调用的列表。我需要知道的是每个调用属于哪个DLL。我如何找到它?谢谢, 最佳答案 嗯……你的标题和你的问题指向不同的东西。系统调用意味着一些非常具体的东西,对操作系统内核的调用(而那些在dll中不)。碰巧的是,Windows并没有直接公开这些,而是​​公开了系统DLL中的API,这些API负责自己调用系统调用。假设您实际上没有系统调用列表,而是调用列表。这个列表是从二进制生成的吗?二进制文件实际上有一个它们所依赖的dll列表,dumpbin/importsbinary.exe实际上会准确列出您所要求的内容。

windows - 在第 3 方 DLL 中查看可用的消息字符串(来自 mc.exe)

有没有办法查看DLL中可用的所有消息(即由mc.exe消息编译器为FormatMessage创建的消息)?看起来它们是作为类型11的单个资源添加的。不幸的是,该资源是二进制的。 最佳答案 我使用ResourceHacker对于所有与资源相关的事物。这些消息显示为“消息表”资源,其中包含所有人类可读的字符串及其ID。 关于windows-在第3方DLL中查看可用的消息字符串(来自mc.exe),我们在StackOverflow上找到一个类似的问题: https:

.net - 从哪里获取 Microsoft.GroupPolicy.Management.dll?

看看这段代码http://msdn.microsoft.com/en-us/library/ee862406%28VS.85%29.aspx它说“将Microsoft.GroupPolicy.Management程序集添加到您的项目”,但我似乎无法找到从何处获取Microsoft.GroupPolicy.Management。 最佳答案 说明在这里:http://msdn.microsoft.com/en-us/library/ff182374%28v=VS.85%29.aspx 关于.

windows - Windows Dll 可以在 Windows Phone 上运行吗?

我正在开发一个相对简单的.NET类库,主要使用基本值和引用类型。为了节省代码重复,我想导出到1个WindowsPC和WindowsPhone设备都可以使用的DLL?这可能吗?据我所知,所有方法都与.NET和Compact.NETFramework兼容。 最佳答案 是的,只要您坚持使用CompactFramework子集,它就可以工作。看看这个MSDNarticle关于同一主题。引用:Thetechniquesandprinciplesdiscussedinthisarticlecanbeutilizedwhenwritingcros

c++ - 启用 dll 的 gflags 完整堆不起作用

我正在尝试使用调试gflags工具通过dlls选项启用整页堆。这可以使用应用程序启用整页堆,但仅使用指定的dll。当我不使用dlls选项时它工作正常。我能够在任何试图覆盖已分配内存块的尝试中获得异常。但是,当我尝试使用dlls选项启用相同的功能时,根据文档,当它应该在dll代码上时,我不会在主应用程序代码或dll代码分配的内存块上出现异常。我在WindowsXP和Windows7上都试过,得到了相同的行为。我检查了很多次,以防我输入错误的dll名称而无法在dll上启用整页堆。两个命令都试过了:gflags-p/enabletest_dll1_app.exe/dllstest_dll1.

windows - crypt32.dll 是否包含在 Vista/Windows 7 中?

Crypt32.dll是否包含在WindowsVista和/或Windows7中?确认它是否是/不是的官方微软链接(softlink)会很好。我找到了下面的链接,但它似乎暗示Server2003是包含Crypt32的最后一个版本:http://msdn.microsoft.com/en-us/library/aa379884(VS.85).aspx如果没有,是否有其他方法来访问Crypt32功能(例如CertCreateSelfSignCertificate)?更新:原来链接没有列出Vista等的原因是有一个新的加密API:http://msdn.microsoft.com/en-us

c++ - 当前进程的 DLL

如何判断(使用非CLRC++)给定的运行进程(通过ID)使用了哪些DLL?带有这些DLL和EXE的文件系统路径。提前谢谢你。 最佳答案 如果您尝试在代码中执行此操作,您可能正在寻找EnumProcessModules函数(或K32EnumProcessModules,具体取决于操作系统。有关详细信息,请参阅链接)。EnumProcessModulesEx可以为您提供更多信息。简单地给它一个你想知道加载了哪些模块(DLL)的进程的句柄。如果您不知道句柄,可以使用EnumProcesses找到它,如果您知道PID,则可以使用OpenPr

c++ - 将完整的应用程序转换为 DLL

我有兴趣将一个成熟的MFC应用程序(窗口、菜单、对话框等)应用程序转换成一个DLL,以便它可以进入其他可执行文件的虚拟地址空间。在我投入太多时间之前,我想知道这是否可行,甚至可能。我认为CreateProcess不会起作用,因为它不会(?)像DLL那样将进程带入与调用者相同的地址空间。我做了一些研究并发现了以下内容:MSDN上的一个页面,“TN011:使用MFC作为DLL的一部分”,它很有用,但是是从您从头开始编写DLL的角度编写的。以下引用了EXE和DLL之间的区别:“应用程序可以拥有诸如堆栈、全局内存、文件句柄和消息队列之类的东西,但DLL不能。”我了解DLL的基础知识,但大多数D

c++ - DLL 中的 Windows 消息队列处理

我有一个由应用程序加载的dll,我无法修改应用程序的源代码(因为我没有源代码)并且我想使用插件注册一个系统范围的热键。我可以通过RegisterHotKey(NULL,1,MOD_CONTROL|MOD_NOREPEAT,0x42)之类的方式注册热键(参见here),但我不确定应该如何处理消息队列,我应该一个新线程并在dll初始化时创建消息处理循环?接收消息的是我的dll还是加载dll的应用程序,最后还有更好的方法吗? 最佳答案 这是应该如何完成的:你的DLL创建一个线程此线程运行消息循环(GetMessage()/Dispatch