3512|5

68

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

VirtualCopy在WinCE6下面不能用 [复制链接]

在wince6下面写一个应用程序,要访问物理地址,发现不能用VirtualCopy,返回错误时87,表示参数错误
代码如下:



        LPVOID VIDEO_BUFFER=VirtualAlloc(
                0,
                0x1000,
                MEM_RESERVE,
                PAGE_NOACCESS);

        VirtualAlloc(
                VIDEO_BUFFER,
                0x1000,
                MEM_COMMIT,
                PAGE_READWRITE);
       
        bool temp=VirtualCopy((LPVOID)VIDEO_BUFFER,(LPVOID)((0x57400000)/256),700*400*3,PAGE_READWRITE | PAGE_NOCACHE | PAGE_PHYSICAL);
        int gg=GetLastError();

最新回复

顶起来  详情 回复 发表于 2009-2-16 21:08
点赞 关注

回复
举报

84

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
WinCE6.0的应用程序不能直接访问物理地址了吧?
你可以写个简单的流驱动来实现。
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
引用 1 楼 sunrain_hjb 的回复:
WinCE6.0的应用程序不能直接访问物理地址了吧?
你可以写个简单的流驱动来实现。


对头,貌似wince6.0可以把驱动放在内核态或者用户态。
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

4
 
wince6好像可以用一些函数来替代
VirtualAllocCopyEx
VirtualCopyEx
VirtualAllocEx

但是这些函数中的一些参数不是很明白
BOOL VirtualCopyEx(
    HANDLE hDstProc,
    LPVOID lpvDest,
    HANDLE hSrcProc,
    LPVOID lpvSrc,
    DWORD cbSize,
    DWORD fdwProtect
);
hDstProc
[in] Handle to the destination process.

lpvDest
[in] Pointer to the destination memory, which must be reserved.

hSrcProc
[in] Handle to the source process.

这两个handle怎么填的?
例如我现在要往物理地址0x58000000写如大小为0x1000字节的东西,怎么办?
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

5
 
不想通过驱动来做,想通过应用程序访问物理内存
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

6
 
顶起来
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表