Dll注入覆盖DirectX版本

Dll injection overlay DirectX version

本文关键字:版本 DirectX 覆盖 注入 Dll      更新时间:2023-10-16

我正在制作全屏DirectX游戏的截图应用程序。但是有一个问题——每个版本的DirectX都有自己的截图方式(据我所知)。

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

在我的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。