wince5.0下直接读写内存

milong 2007-09-11 08:32:02
想在wince5.0下直接读写内存,往指定的空间读写数据,该怎么实现,忘达人们给点建议!!谢谢!!
...全文
243 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
LanceJin 2007-09-14
  • 打赏
  • 举报
回复
嘿,给你转个文档,先好好看看吧http://www.xrss.cn/Info/9328.Html

VirtualAlloc对虚拟内存的申请分为两步,保留MEM_RESERVE和提交MEM_COMMIT。其中MEM_RESERVE只是在进程的虚拟地址空间内保留一段,并不分配实际的物理内存,因此保留的虚拟内存并不能被应用程序直接使用。MEM_COMMIT阶段才真正的为虚拟内存分配物理内存

kingmax54212008 2007-09-14
  • 打赏
  • 举报
回复
关注
milong 2007-09-12
  • 打赏
  • 举报
回复
是不是沉了,自己顶起来~
milong 2007-09-11
  • 打赏
  • 举报
回复
这是我在流驱动INIT函数中添加的相关代码,大家帮我看看,谢谢!

volatile int *lpv;

lpv = (volatile int*)VirtualAlloc(0, SIZE, MEM_RESERVE, PAGE_NOACCESS);
if(lpv!=NULL)
OutputDebugString(TEXT("VirtualAlloc succeed!\r\n"));

bRet = VirtualCopy((LPVOID)lpv,(LPVOID)(PHYSADDR>>8), SIZE, PAGE_READWRITE | PAGE_NOCACHE | PAGE_PHYSICAL);
if(bRet)
OutputDebugString(L"VirtualCopy succeed!\r\n");
*(lpv) = 3; //出错,调试的时候直接跳过
int temp = *(lpv); //显示结果根本不是3
milong 2007-09-11
  • 打赏
  • 举报
回复
谢谢各位!
我现在的情况是用virtualalloc 和virtualcopy 函数在应用程序中能申请到空间,读写也好像正确,但在流驱动中去用两个函数的时候就出错,不能读写,为什么?在驱动中没有读写权限了?
我对硬件不怎么了解,这样汇编可以吗?只要不与内核区冲突就可以了吧,是吗?而且我想要读写的一个内存区域比较大。
KevinCEC 2007-09-11
  • 打赏
  • 举报
回复
可以用汇编语言实现.代码量少可以的,不过不推荐这样做,除非你对硬件的了解超过软件的


例如
__asm
{
mov al,0000H
mov dx,0443H
out dx,al
}
yyhzpk 2007-09-11
  • 打赏
  • 举报
回复
什么意思,是直接向物理内存地址写吗?
VirtualAlloc ,VirtualCopy结合使用,前提是你
有访问这块内存的权限,也可以用DMA直接读写
yashi 2007-09-11
  • 打赏
  • 举报
回复
最好不要这样做,你可以写一个驱动来实现这种功能,让后用应用程序去调用驱动。

19,504

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧