Заезженная тема,но что-то туплю :
LONG Size = 0;
PVOID UserMemory = NULL;
PVOID Memory = NULL;
PMDL Mdl = NULL;
__try
{
Memory = ExAllocatePool(NonPagedPool,Size);
if(Memory)
{
Mdl = IoAllocateMdl(Memory,Size,FALSE,FALSE,NULL);
if(Mdl)
{
MmBuildMdlForNonPagedPool(Mdl);
UserMemory = MmMapLockedPagesSpecifyCache(Mdl,UserMode,MmCached,NULL,FALSE,NormalPagePriority);
}
}
}
__except(EXCEPTION_EXECUTE_HANDLER){}
Затем я передаю UserMemory адрес в приложение.
Но по какому адресу мне в драйвере обращаются к выделенной памяти? — Memory? — происходит PAGE_FAULT,UserMemory — та же история....
Задача банальна — разделить память между приложением и драйвером,организовав в ней что-то на подобии очереди объектов...