PDA

Просмотр полной версии : Глюки с VirtualAlloc


slesh
05.06.2007, 12:50
Вот сталкнулся с проблемой выделения памяти в нужном для меня месте.
юзаю код:

windows.VirtualAlloc(pointer($00400000),$6000,MEM_ COMMIT, PAGE_EXECUTE_READWRITE );
showmessage(sysutils.SysErrorMessage(GetlastError) );

При запуске выдает ошибку: The parameter is incorrect
В опциях проекта указал IMAGE BASE = $00600000
И вообще через дибагер запускаю - этот участок памяти абсолютно свободен! т.е. никем не выделен!
Думал баг из-за дельвы. Но попробывал написать на ASM - тотже результат.
Также заметил что при параметрах MEM_COMMIT+MEM_RESERVE вылетает ошибка: Attempt to access invalid address

Xserg
05.06.2007, 16:13
Попробуй так

var MBI: MEMORY_BASIC_INFORMATION;
VirtualQuery(pointer($400000),MBI,$1000);
if (MBI.State and MEM_FREE) = MEM_FREE then
if (MBI.RegionSize -(dword(MBI.AllocationBase)-$400000)) >= $6000 then
VirtualAlloc(pointer($00400000),$6000,MEM_COMMIT, PAGE_EXECUTE_READWRITE)
else xyz;

у меня при любом IMAGE BASE регион $00400000 занят.

slesh
06.06.2007, 18:48
Пробывал. Нифега не хочет. Странная какаято винда