我正在开发一个系统,我想在该系统中拦截 Direct3D 调用以创建平铺显示。我正在使用类似 APITrace 的拦截器来创建消息流并在第二个程序中重新创建调用,就像旧的 Chromium 项目一样。应用程序端工作正常,但处理消息流的程序却不能。我发现,当我调用 CreateSwapChain() 时,函数返回 S_OK 但 GetLastError() 返回“错误 = 0x00000594:无法在没有模块句柄的情况下设置非本地钩子(Hook)。”我在调用 CreateSwapChain() 之前使用 GetLastError() 检查错误状态,并且没有错误。这个错误对我来说没有意义。有人能解释一下吗?
最佳答案
我发现了问题。 CreateSwapChain 函数的参数 pDesc 结构包括一个输出窗口句柄。由于消息流中包含消息处理端的参数,因此在处理器端调用函数之前,必须将窗口句柄替换为正确的句柄。
关于direct3d11 - IDXGIFactory->CreateSwapChain 设置系统错误 0X594,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32911536/