当前位置: 代码迷 >> WinCE >> 困惑已久的地址有关问题
  详细解决方案

困惑已久的地址有关问题

热度:154   发布时间:2016-04-28 13:39:09.0
困惑已久的地址问题
刚上手WINCE,做一个CAMERA方面的驱动,主要是将inputbuffer中的数据通过驱动转换为outputbuffer,而且inputbu和outputbu都需要和应用程序交互,中间就有一些地址的映射转换。现在是被这些地址搞糊涂了。向各位大侠请教:
  首先程序里用
  pPhytSrcAddr/*pVirtSrcAddr*/ = (PBYTE)HalAllocateCommonBuffer(&Adapter1, 0x71000, &g_PhysSrcAddr, FALSE);
  申请了块连续的物理地址g_PhysSrcAddr,大小是320*240*12=112.5K,即0x71000。
  但这个程序返回的pPhytSrcAddr是物理地址还是虚拟地址,帮助里说返回的是虚拟地址,但下面又用函数
  VirtualCopy((PVOID)pVirtSrcAddr,(PVOID)(((DWORD)pPhytSrcAddr)>>8),0x100000,PAGE_READWRITE | PAGE_NOCACHE | PAGE_PHYSICAL)

  VirtualCopy帮助里说是将物理地址绑定到虚拟地址上,也就是说把物理地址pPhytSrcAddr绑定到虚拟地址pVirtSrcAddr上。这里我就比较糊涂了。

  打印出来
  g_PhysSrcAddr=0x30cf4000,
  pPhytSrcAddr=0x640000
  pVirtSrcAddr=ox760000
  不知道这些地址我们自己可以计算出来吗,为什么地址的前8位没有显示,是默认的80640000?


------解决方案--------------------
pPhytSrcAddr是物理地址还是虚拟地址?

他是堆内存指针了,也不是直接的虚拟地址。

------解决方案--------------------
这个我也比较模糊.需要向大家学习
  相关解决方案