首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

地址窗口扩展AWE写入数据发生访问冲突的异常

2012-02-04 
地址窗口扩展AWE写入数据发生访问冲突的错误 - C++ Builder / Windows SDK/APIULONG_PTR ulRAMBytes1024*

地址窗口扩展AWE写入数据发生访问冲突的错误 - C++ Builder / Windows SDK/API
ULONG_PTR ulRAMBytes=1024*1024;
SYSTEM_INFO sinf;
GetSystemInfo(&sinf);
LPVOID pvWindow=(LPVOID)VirtualAlloc(NULL,ulRAMBytes,MEM_RESERVE | MEM_PHYSICAL,PAGE_READWRITE);
ULONG_PTR ulRAMPages=(ulRAMBytes+sinf.dwPageSize-1);
ULONG_PTR * aRAMPages=(ULONG_PTR*)new ULONG_PTR[ulRAMPages];
AllocateUserPhysicalPages(GetCurrentProcess(),&ulRAMPages,aRAMPages);
MapUserPhysicalPages(pvWindow,ulRAMPages,aRAMPages);

unsigned char *ustr = (unsigned char *) pvWindow;
ustr[0]=0x89;

FreeUserPhysicalPages(GetCurrentProcess(),&ulRAMPages,aRAMPages);
VirtualFree(pvWindow,0,MEM_RELEASE);
delete[] aRAMPages;

代码是windows核心第五版书中的...我加了
unsigned char *ustr = (unsigned char *) pvWindow;
ustr[0]=0x89;
两行...

出现0x00416913 处未处理的异常: 0xC0000005: 写入位置 0x01010000 时发生访问冲突的错误。

将LPVOID pvWindow=(LPVOID)VirtualAlloc(NULL,ulRAMBytes,MEM_RESERVE | MEM_PHYSICAL,PAGE_READWRITE);的第三个参数改为MEM_RESERVE | MEM_COMMIT就不会出现错误了。但是这样是不是就不是AWE了?


[解决办法]
你的系统有没有启用AWE?你的应用程序是否有启用AWE?

热点排行