Ваша программа НЕ МОЖЕТ доступ адрес памяти другой программы (независимо, что адрес, который вы собираетесь читать не может уместить Int32
см this post, чтобы понять, что это такое), просто используя IntPtr
, потому что они работают в их приватное адресное пространство.
Он должен быть каким-то образом передан первой программой (разделяемая память или что-то еще). Более того, адрес XYZ в одной программе может быть что-то совершенно другое даже в другом экземпляре той же программы (потому что адрес VIRTUAL).
Если вы уверены в адресе памяти (как это может быть необходимо для сканирования памяти процесса), вы должны P/Invoke ReadProcessMemory()
, это функция, предназначенная для целей отладки, и если ваш исполняемый файл имеет достаточно привилегий, вы можете прочитайте память другого процесса.
См. Пример this post here on SO.
Почему вы хотите получить доступ к этому адресу? –
Адрес, который вы пытаетесь прочитать, находится в точке 3 ГБ - в зависимости от вашей ОС. Я считаю, что это ограниченный адрес. – Dave
Просьба предоставить дополнительную информацию. –