2014-11-19 4 views
-1

У меня есть ULONG64SYMBOL_INFO переменные из структуры, которая содержит виртуальный адрес, представленный в виде 18446744073709551572 значения, и мне нужно, чтобы преобразовать его в void* так что я могу передать его функции ReadProcessMemory.Как конвертировать ULONG64 указателю

Если я просто

reinterpret_cast<void*>(pSymInfo->Address) 

это дает мне FFFFFFD4.

Почему? Что я делаю не так? Как я могу это исправить?

Заранее спасибо.

+1

Это значение преобразуется в '0xFFFFFFFFFFFFFFD4' в шестнадцатеричном, так это выглядит, как ваш бросок просто усечение, что до 32-бита - предполагая, у вас есть только 32-битные построить. В качестве знакового значения оно равно '-44'. В любом случае это не действительный указатель - откуда взялось это значение? –

+0

@Jonathan Potter Он пришел из следующего кода - http://pastie.org/9728688 – FrozenHeart

+0

Это не похоже на настоящий адрес. Если вы не предоставите код, детали и контекст, вы вряд ли получите намного больше, чем было написано выше. –

ответ

0

Не знаю, почему reinterpret_cast не работает должным образом, но я обычно использую ULongToPtr для выполнения подобных операций.

ReadProcessMemory(process, ULongToPtr(virtual_address), &content, sizeof content, nullptr); 
+0

К сожалению, ULongToPtr возвращает то же значение – FrozenHeart

 Смежные вопросы

  • Нет связанных вопросов^_^