Управляемый в неуправляемый код, значение DWORD в LPVOID - PullRequest
0 голосов
/ 17 ноября 2010

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

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

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

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

Спасибо.

1 Ответ

0 голосов
/ 17 ноября 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...