2010-11-17 3 views
0

У меня есть обработанный процесс, который передает значение адреса как DWORD. Я хочу использовать это значение DWORD в функции потока, которая требует, чтобы параметр передавался как LPVOID, как я могу передать значение без его искажения? Это не настоящий код, но он настолько же запоминающийся, насколько я помню!Управляется неуправляемым кодом, значение DWORD для LPVOID

void incoming(DWORD addr) 
{ 
    CreateThread(...threadfunc, addr...); 
} 

DWORD WINAPI threadfunc(LPVOID param) 
{ 
    DWORD _addr = param 
} 

Проблема в том, принимающий ThreadFunc значения адр искажен так, когда я использую ReadProcessMemory(), например, он теперь мусор!

Спасибо.

+0

Что это за указатель 'addr', указывающий на? –

+0

Это требует проблем на 64-битных системах. Значение адреса 64 бит просто не помещается в DWORD. Вы не можете предотвратить его искажение. – MSalters

ответ

0

Вам нужен управляемый процесс, чтобы передать указатель на incoming как System.IntPtr. Это стандартный способ передачи значений указателей в неуправляемые API.

Тип IntPtr может использоваться языков, поддерживающих указатели и в качестве общего средства со ссылкой на данные между языками, которые делают и не указателей поддержки.

Как отмечено это будет терпеть неудачу на Win64 - вам действительно нужно изменить параметр incoming быть типа INT_PTR.

+0

Стив не мог бы вы ответить на этот вопрос, пожалуйста. Итак, я жестко закодировал значение адреса в потоке. Этот адрес действителен, если я исключил весь код потока и вернул ожидаемое значение. Но как только (с жестко закодированным адресом в потоке), когда я запускаю его как поток, он возвращает мусор! Почему адрес памяти становится недействительным? Является ли поток рассмотрением другого адресного пространства? – flavour404

+0

Можете ли вы опубликовать соответствующий код в редактировании на свой вопрос? –

+0

Я работал над этим, Стив, я использовал неправильный метод CreateThread, поэтому я стал мусором. Указатель был правильным и досадно, что поток работал. Спасибо за помощь. – flavour404

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