- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
可能是什么原因?
从 DLL_PROCESS_ATTACH 上的 DllMain() 调用 IDirect3D9::CreateDevice(),它挂起
代码很简单,就像:
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
if (ul_reason_for_call = DLL_PROCESS_ATTACH) {
IDirect3D9* d3d = Direct3DCreate9(D3D_SDK_VERSION);
D3DPRESENT_PARAMETERS pp = {};
pp.BackBufferWidth = 1;
pp.BackBufferHeight = 1;
pp.BackBufferFormat = D3DFMT_X8R8G8B8;
pp.BackBufferCount = 1;
pp.SwapEffect = D3DSWAPEFFECT_DISCARD;
pp.Windowed = TRUE;
IDirect3DDevice9* device = NULL;
HRESULT hr = d3d->CreateDevice(
D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL,
GetDesktopWindow(),
D3DCREATE_HARDWARE_VERTEXPROCESSING,
&pp,
&device);
device->Release();
d3d->Release();
}
return TRUE;
}
GetDesktopWindow() 是为了简单起见,我尝试创建自己的窗口并使用它,结果相同
最佳答案
您不能在 DllMain
中执行此类操作。具体来说,您不能从其他 DLL 调用函数。您只能在主应用程序调用导出函数时执行此操作。
引用the docs on MSDN :
Threads in DllMain hold the loader lock so no additional DLLs can be dynamically loaded or initialized.
Calling functions that require DLLs other than Kernel32.dll may result in problems that are difficult to diagnose. For example, calling User, Shell, and COM functions can cause access violation errors, because some functions load other system components.
关于directx - 从 DllMain 调用 IDirect3D9::CreateDevice() 挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4220640/
我正在尝试从全屏 DirectX 游戏中捕获屏幕。 我设法从窗口游戏中截取屏幕截图,但是当我尝试从全屏游戏创 build 备时,它会引发异常。 这是我的代码: #include "stdafx.h"
可能是什么原因? 从 DLL_PROCESS_ATTACH 上的 DllMain() 调用 IDirect3D9::CreateDevice(),它挂起 代码很简单,就像: BOOL APIENTRY
我正在编写一个 DLL,它通过更改注入(inject)进程的 VMT 中所需的指针来 Hook 某些 D3D 函数。算法是这样的: 获取虚拟窗口句柄。 初始化虚拟 D3D 对象,创建 D3D 设备。
如果我的怀疑是愚蠢的或愚蠢的,请原谅我。我对 DirectX 编程完全陌生。只要有 C++ 知识(非常基本的 COM 知识)。 以下代码示例来自 MSDN Creating D3D device其中解
在创建启用多重采样的 Allegro 5 Direct3D 窗口时,我正在调试窗口创建闪烁。我已将问题缩小到在 allegro 的 d3d_disp.cpp 源文件中创建窗口。但是,我无法从 Dire
前段时间我发了一篇关于创建 dll 的帖子,用于注入(inject)目的,这将导致主机应用程序触发 Nvidia Optimus 笔记本电脑以“唤醒”dGpu。这是必要的,因为 nvidia 在这里创
我正在尝试使用 BlueZ 4.X DBus 接口(interface)在 Linux 上建立与蓝牙 4.0 LE 设备的连接。 为了测试这一点,我使用以下命令: dbus-send --system
我是一名优秀的程序员,十分优秀!