118 / 5 / 4
Регистрация: 05.05.2013
Сообщений: 334
1

Невозможно преобразовать long to DWORD

09.12.2016, 14:54. Показов 713. Ответов 0
Метки нет (Все метки)

Добрый вечер. Есть обычная библиотека Directx 9 hook, но, т.к. все было в каше на самом виду, то я решил просто распихать все по полочкам. Сам перехват запихал в класс Directx9.

Тот же самый код, который работал в "каше", никак не хочет избавить меня от ошибок:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
typedef long(__stdcall *PRESENT9)(IDirect3DDevice9*, const RECT*, const RECT*, HWND, void*);
 
//моя перехваченная функция Present9
long __stdcall HookedPresent9(IDirect3DDevice9* self, const RECT* src, const RECT* dest, HWND hWnd, void* unused);
 
//инициализируем прыжок на наш Present9 перезаписывая байты
void DirectX9::HookDevice9Methods(){
    HMODULE hD3D9 = GetModuleHandle(L"d3d9.dll");
    g_D3D9_Present = (PRESENT9)((DWORD)hD3D9 + present9);
    g_jmp_p9[0] = 0xE9;
    DWORD addr = (DWORD)HookedPresent9 - (DWORD)g_D3D9_Present - 5; // <-- Ошибка, просто нужно записать адрес функции
    memcpy(g_jmp_p9 + 1, &addr, sizeof(DWORD));
    memcpy(g_codeFragment_p9, g_D3D9_Present, 5);
    VirtualProtect(g_D3D9_Present, 8, PAGE_EXECUTE_READWRITE, &g_savedProtection_p9);
    memcpy(g_D3D9_Present, g_jmp_p9, 5);
}
Ошибка:
Ошибка 1 error C2440: приведение типов: невозможно преобразовать "long (__stdcall DirectX9::* )(IDirect3DDevice9 *,const RECT *,const RECT *,HWND,void *)" в "DWORD"
Что можно сделать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.12.2016, 14:54
Ответы с готовыми решениями:

Невозможно преобразовать 'const char [6]' в 'long'
Есть код: FILE *Protectdll; FILE *Coredll; FILE *Console; Protectdll =...

C2664: "BOOL PlaySoundA (LPCSTR,HMODULE,DWORD)": невозможно преобразовать аргумент 1 из unsigned char в LPCSTR
Есть массив, который я пытаюсь проиграть через PlaySoundA https://pastebin.com/dqCvsmmB Пытаюсь...

error C2664: CWnd::MessageBoxW: невозможно преобразовать параметр 2 из "long" в "LPCTSTR"
при компиляции выдаёт ошибку указанную в теме, код: void Clab_12_2Dlg::OnClickedAri() { //...

Как преобразовать const char * в long в С++, 0xE0E040BF в long
Помогите пожалуйста преобразовать текст в число на C++ const char * value=cmd; long ircode = ...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.12.2016, 14:54
Помогаю со студенческими работами здесь

Как преобразовать char[8] к unsigned long long?
Требуется выполнить преобразование char к unsigned long long и обратно

Требуется написать функцию long long pow(long long a, unsigned int p), которая возводит число a в степень p
Требуется написать функцию long long pow(long long a, unsigned int p), которая возводит число a в...

Error C2440: return: невозможно преобразовать "unsigned long" в "unsigned long &"
У меня есть ref-класс с полем типа System::Collections::Generic::List&lt;unsigned long int&gt; ^, и...

Невозможно преобразовать параметр 1 из "long *" в "time_t *
if(CubeMemList) { CNetMsg msg; long lastCubePoint; time(&amp;lastCubePoint); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru