Добрый день!
Возникла такая проблема: необходимо изменить атрибут READONLY на READWRITE страницы памяти (есть виртуальный адрес (в верхних 2 gb)). Кто-нибудь знает как?
Пробовал так (выводит ерунду):
int GetPageAttributes(unsigned long VirtualAddress, unsigned long *PageAttributes)
{
unsigned long *PageTableEntry;
*PageAttributes = 0;
PageTableEntry = (unsigned long *)0xC0000000U + (VirtualAddress >> 12);
DbgPrint("PageDirectoryEntry: %X", *PageTableEntry);
if ((*PageTableEntry)&0x01) {
//*PageAttributes = (*PageTableEntry)&0x00000FFFU;
*PageAttributes = ((*PageTableEntry)&0xFFFFF000U) + (VirtualAddress&0x00000FFFU);//физический адрес
return 0; //status_success
} else {
#if DBG
DbgPrint("PageTableEntry was bad for %x: %X", VirtualAddress, *PageTableEntry);
#endif
return 1; //status_unsuccessfull
}
}