Я запускаю программу под названием VMdriver5.exe (левая сторона изображения, которое я прикрепил), которая создает процесс другой программы под названием VMmapper.exe.Внутри кода VMdriver5.c он получает свой PID (используя GetCurrentProcessId ()) и передает его PID в VMmapper.exe при создании, так что VMmapper показывает структуру памяти VMdriver5.exe, чтобы я мог видеть параметры виртуальной памяти.
Мне было интересно, смогу ли я получить какую-то помощь, потому что, когда я вызываю VirtualAlloc () для определенных адресов памяти, он работает нормально.Однако, как вы можете видеть на изображении ниже, есть область памяти с 503 808 байтами, и я пытаюсь резервировать 65 536 байтов этого пространства, используя VirtualAlloc (), но по какой-то причине это не удается.Я передаю адрес памяти 00185000 в качестве одного из параметров.
Код, который я использую, таков:
lpvAddr = VirtualAlloc(vmAddress, units << 16, MEM_RESERVE, flProtect); // only works with PAGE_READONLY
if(lpvAddr == NULL) {
printf("Case 1: Reserve a region, VirtualAlloc() failed. Error: %ld\n", GetLastError());
}
else {
printf("Committed %lu bytes at address 0x%lp\n",dwPageSize, lpvAddr); // %lu = long unsigned decimal integer
}
break;
Буду признателен за любую помощь и могу предоставить любой дополнительный код или информацию, еслинеобходимо.Спасибо, ребята, и счастливой Пасхи.