Этот код представляет собой DLL, предназначенную для внедрения. Функция создает D3D9Device, однако я всегда получаю сообщение об ошибке с ошибкой. Я проверил все, и рядом с строкой, в которой есть проблемы, есть комментарий.
Если вам нужна дополнительная информация, оставьте комментарий заранее.
bool GetD3D9Device(void ** ptable, size_t size)
{
if (!ptable)
{
return false;
}
g_pD3D = Direct3DCreate9(D3D_SDK_VERSION);
if (!g_pD3D)
{
return false;
}
D3DPRESENT_PARAMETERS d3dpp = {};
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.hDeviceWindow = GetProcessWindow();
d3dpp.Windowed = false;
HRESULT Err = g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, d3dpp.hDeviceWindow,
D3DCREATE_HARDWARE_VERTEXPROCESSING, &d3dpp, &g_pd3dDevice); // this call gives the error
if (!g_pd3dDevice)
{
if (Err == D3DERR_DEVICELOST)
{
MessageBoxA(0, "err device lost", "AOC", MB_OK);
}
else if (Err == D3DERR_INVALIDCALL)
{
MessageBoxA(0, "err invalid call", "AOC", MB_OK);
}
else if (Err == D3DERR_NOTAVAILABLE)
{
MessageBoxA(0, "err Not available", "AOC", MB_OK);
}
else if (Err == D3DERR_OUTOFVIDEOMEMORY)
{
MessageBoxA(0, "err out of mem", "AOC", MB_OK);
}
MessageBoxA(0, "device not valid", "AOC", MB_OK);
g_pd3dDevice->Release();
return false;
}
memcpy(ptable, *reinterpret_cast<void***>(g_pd3dDevice), size);
g_pd3dDevice->Release();
g_pD3D->Release();
return true;
}