MEMORY_BASIC_INFORMATION32 больше не является законным?

Я пытаюсь запросить информацию о памяти с помощью Windows API.
Я хочу ориентироваться как на x86, так и на x64. Поэтому я читаю документы о
MEMORY_BASIC_INFORMATION и обнаружил, что мне нужно два, чтобы сделать
разные запросы в зависимости от целевого процесса «битность».

Но когда я запрашиваю процесс x86 и использую MEMORY_BASIC_INFORMATION32
Структура Я получаю код ошибки системы 24. В котором говорится о длине команды
не законно

Но когда я использую версию MEMORY_BASIC_INFORMATION64, вызов работает как для процессов x86, так и для x64.
Что с этим. Это не то, что я понимаю, документация говорит мне.
https://msdn.microsoft.com/en-us/library/windows/desktop/aa366775(v=vs.85).aspx

Так ли это поведение переносимо между версиями. Так может кто-нибудь объяснить это поведение. Или это просто моя система, которая полностью испорчена?

Это код, который я использую:

class Process {
HANDLE m_handle;

bool Process::query_impl(RemotePointer address, void *info, size_t size) {
return VirtualQueryEx(m_handle, address.get(), (MEMORY_BASIC_INFORMATION*) info, size);
}
public:

bool Process::query(RemotePointer address, MEMORY_BASIC_INFORMATION64 &info) {
return query_impl(address, &info, sizeof(MEMORY_BASIC_INFORMATION64));
}

bool Process::query(RemotePointer address,  MEMORY_BASIC_INFORMATION32 &info) {
return query_impl(address, &info, sizeof(MEMORY_BASIC_INFORMATION32));
}
}

Спасибо заранее.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]