- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为某个系统编写一个插件,但是有一些行为不端的应用程序在 dll 初始化期间调用了我的插件(来自 DllMain 或 InitInstance,它是 DllMain 的包装器)。
我想知道是否有办法找出代码是否在 DllMain 中执行。我不想优雅地失败而不导致死锁(我的插件正在执行的代码涉及 dll 加载、线程创建和等待事件,如果在 DllMain 中执行会导致死锁)。
我知道 CreateThread 在 DllMain 退出之前不会执行,但是我无法从另一个线程进行初始化,因为它涉及 COM。
最佳答案
实际上,您需要一种查看加载程序锁定状态的方法,但是 Windows API 不允许这样做,因为它不会以任何方式公开加载程序锁定。即使您能够获得锁定状态,您也无法保证它在后续代码的执行过程中保持不变——您将不得不获取它,这超出了整个目的,因为这是您想要避免的事情.
所以据我所知,解决这个问题的唯一实用方法是记录你的插件并禁止 DllMain() 的使用。如果这意味着某些组件所有者将不得不对其 DLL 初始化进行轻微的重新设计,那么就这样吧。
关于winapi - 如何检查我的代码是否在 DllMain 中执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5562759/
我正在学习 DLL,我在 MSDN 中看到了以下段落: If you are providing your own entry-point, see the DllMain function. The
我正在写这样一个 dllmain: #include "main.h" #include "init.h" #include BOOL WINAPI DllMain(HINSTANCE hinstD
行情: 来自文档“创建 DLL 的最佳实践”http://download.microsoft.com/download/a/f/7/af7777e5-7dcd-4800-8a0a-b18336565
似乎当在 DLL_PROCESS_ATTACH 上从 DllMain 中创建线程时,只有在加载所有 dll 后,该线程才会开始。由于我需要确保线程在继续之前运行,因此出现了死锁。有没有办法强制线程启动
我正在编写一个定义全局静态对象的 DLL。 在对象的构造函数中,我正在执行一些可能成功也可能不成功的初始化。 是否可以在 DllMain() 中发出初始化过程成功或失败的信号?这两个中哪一个先被调用?
我正在为某个系统编写一个插件,但是有一些行为不端的应用程序在 dll 初始化期间调用了我的插件(来自 DllMain 或 InitInstance,它是 DllMain 的包装器)。 我想知道是否有办
这个问题在这里已经有了答案: Creating a thread in DllMain? (4 个答案) 关闭 7 年前。 这可能是显而易见的事情,但对我来说意义不大。我正在尝试创建一个 dll,它
我正在编写一个非托管 dll(使用 C++ 和 WinAPI),但我想使用一些 C# 方法,因此,我使用 C++/CLI 创建了一个包装器。 但问题是:非托管 dll 将被“注入(inject)”(L
我有一个 C++ 程序,它有一个 DLLMain 函数,当这个程序(实际上是一个 DLL)被另一个程序加载时,该函数运行一些代码。这工作正常。 现在,当我这次编译同一个 C++ 程序时,包括一个已经定
我正在尝试创建 DLL 文件,但在 DLLMAIN() 中运行函数时遇到问题。 我想做这样的事情: #include "stdafx.h" #include #include INT APIENT
我尝试在 Borland c++ 5.02 中创建 *.dll 文件,我对这个函数有疑问 BOOL APIENTRY DllMain( HANDLE hModule,
我有一个 Dllmain,它在线程附加到此 DLL 时分配线程本地存储。代码如下: BOOL APIENTRY DllMain(HMODULE hModule,
知名度之一DLLMain函数参数是 LPVOID lpvReserved。来自 MSDN 文档: If fdwReason is DLL_PROCESS_ATTACH, lpvReserved is
我想编写 DLL,但我想测试我正在编写的内容。 我尝试用 F5 调试它,但我收到一个错误: 我读了文章Walkthrough: Creating and Using a Dynamic Link Li
哪些函数在 DllMain() 之前被调用?如果在 C 运行时初始化期间不止一个,那么顺序很重要。 最佳答案 来自source :- If your DLL is linked with the C
在 *nix .so 库中,是否存在在加载和卸载库时由系统调用的入口点? 更实用的一点是:如果 .so 是用 C++ 编写的,并且它包含带有构造函数和析构函数的全局对象,并且它是从没有构造/析构概念的
我在多个来源中了解到,CreateProcess 不得从 DllMain 函数中调用。 CreateProcess : 不要从 DllMain 函数调用 CreateProcess。这会导致应用程序停
我在多个来源中了解到,CreateProcess 不得从 DllMain 函数中调用。 CreateProcess : 不要从 DllMain 函数调用 CreateProcess。这会导致应用程序停
当设置了线程特定的 Hook 时,DLL 中的原因代码是什么? 谁能帮我解决这个问题吗? 谢谢,阿什什。 最佳答案 您的问题仍然不清楚,但我假设您的意思是使用 SetWindowsHookEx() 安
我想创建一个 dll,在某些情况下自行卸载,这意味着 BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID
我是一名优秀的程序员,十分优秀!