Dll инъекция оверлея версия DirectX

Я работаю над приложением скриншотов для полноэкранных игр DirectX.
Но есть одна проблема — для каждой версии DirectX есть свой способ сделать скриншот (насколько я понимаю).

Таким образом, вопрос заключается в том, как определить версию приложения DirectX, которую я внедряю с моей DLL из этой DLL?

0

Решение

Одна простая уловка, чтобы определить фактическую версию DirectX в моих хуках DirectX — это вызвать GetModuleHandle для каждой библиотеки dx. Например:

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 внедрить в соответствии с версией.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector