Dll注入叠加DirectX版本

Dll injection overlay DirectX version

我正在为全屏 DirectX 游戏开发屏幕截图应用程序。 但是有一个问题——对于每个版本的 DirectX 都有自己的截屏方法(据我所知)。

所以问题是如何确定我从这个 DLL 注入我的 DLL 的应用程序的 DirectX 版本?

在我的 DirectX 挂钩中确定实际 DirectX 版本的一个简单技巧是为每个 dx dll 调用 GetModuleHandle。例如:

HINSTANCE hD3D11 = GetModuleHandle(TEXT("D3D11.DLL"));
if (hD3D11)
{
    // DirectX 11 dll is loaded, so we can hook D3D11CreateDeviceAndSwapChain and/or D3D11CreateDevice
}

D3D10.dll 和 D3D9.dll 相同或相似。我认为最好的方法是按以下顺序尝试 GetModuleHandle:d3d11.dll、d3d10.dll 和 d3d9.dll。 这种方法适用于我创建的 DX 挂钩。我希望它也对你有用,或者你必须根据你的目的调整它。当然你应该先注入上面检查DX版本的代码,然后根据版本决定注入哪个DXhook dll。