PDA

Просмотр полной версии : [Помогите!] Reset Font


D1kiy
28.05.2011, 00:02
Этот кусок кода работает не корректно, что приводит к крешу игры.. Можете подсказать в чем моя ошибка ? Заранее благодарен..

void PreReset(pD3DdeviceX pDevice)
{
if (pFont) {
pFont->InvalidateDeviceObjects();
pFont->DeleteDeviceObjects();
pFont = NULL;
}
}

void PostReset(pD3DdeviceX pDevice)
{
pFont = new CD3DFont("Arial", 8, D3DFONT_BOLD);
if (pFont) {
pFont->InitDeviceObjects(pDevice);
pFont->RestoreDeviceObjects();
}
}

HRESULT WINAPI myReset ( pD3DdeviceX pDevice, D3DPRESENT_PARAMETERS* pPresentationParameters )
{
if (pFont){
PreReset(pDevice);
return pReset(pDevice, pPresentationParameters);
}
}

HRESULT WINAPI myEndScene (pD3DdeviceX pDevice)
{
if (pFont==NULL)
PostReset(pDevice); // Create font
else
DoMenu(pDevice);

return pEndScene(pDevice);
}

warl0ck
29.05.2011, 14:31
краш в EndScene или Reset?
пс багтрап пишет где ошибка

D1kiy
29.05.2011, 23:56
warl0ck, в Reset-е ошибка.. Если это поможет, могу лог багтрапа скинуть..

Добавлено через 13 минут
Stack Trace

RtlFreeHeap()+298byte(s) ntdll.dll
RtlFreeHeap()+126byte(s) ntdll.dll
HeapFree()+20byte(s) kernel32.dll
free()+205byte(s) MSVCR90.dll
myReset()+35byte(s) Мой ВХ
i3RenderContext::ResetDevice()+144byte(s) i3GfxDx.dll

warl0ck
30.05.2011, 15:37
warl0ck, в Reset-е ошибка.. Если это поможет, могу лог багтрапа скинуть..

Добавлено через 13 минут
Stack Trace

i3RenderContext::ResetDevice()+144byte(s) i3GfxDx.dll
i3GfxDx.dll - отвечает за заставку, значит хукать д3 девайс нужно после загрузки, я бы сделал так.


void knopka()
{
while(1)
{
if(GetAsyncKeyState(VK_DELETE)&1) //ждем пока нажмут кнопку, после чего лезем хукать д3д
{
CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE) ХУК Д3Д ДЕВАЙСА, NULL, NULL, NULL);
goto end;
}
}
end: return;
}

BOOL WINAPI DllMain(HMODULE hDll, DWORD dwReason, LPVOID lpReserved)
{
if (dwReason==DLL_PROCESS_ATTACH) //если длл винжектилась
{
//здесь всякие руткит хуки, сообщения и тп
CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)kno pka,NULL,NULL,NULL);
}
}

D1kiy
01.06.2011, 00:22
Сделал, не помогло.. Багтрап точно такой же..