Разделяемая память
От: AlexCasual  
Дата: 13.06.12 11:42
Оценка:
Заезженная тема,но что-то туплю :


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 — та же история....
Задача банальна — разделить память между приложением и драйвером,организовав в ней что-то на подобии очереди объектов...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.