AllocPhysMem,MmMapIoSpace,VirtualAllocCopyEx在wince6.0中的应用

I need to access a block of memory allocated in driver and passed that
memory into application for read/write. (for large data transfers). I
am using AllocPhysMem to allocate virtual and physical memory. But I
want to map this to user Space (i.e., application side). I used the
following steps to map memory which is allocated by driver to
application side.

=============================================================

(1) VirAddress = (LPVOID)AllocPhysMem(pAllocateNonPagedPool-
>ulNumOfBytes,
PAGE_READWRITE|PAGE_NOCACHE,
0,
0,
&PhyAddress.LowPart);

(2)virtAddrTmp = MmMapIoSpace(PhyAddress,pAllocateNonPagedPool-
>ulNumOfBytes,FALSE);

(3)PhysAddressToUsrSpace = VirtualAllocCopyEx(
(HANDLE)GetDirectCallerProcessId(),
GetCurrentProcess(),
virtAddrTmp,
pAllocateNonPagedPool->ulNumOfBytes,
PAGE_READWRITE);

pAllocateNonPagedPool->pBuffer = (VOID * POINTER_32)
PhysAddressToUsrSpace;


(4)//map the virt address to user space
VirtAddressToUsrSpace = VirtualAllocCopyEx(
(HANDLE)GetDirectCallerProcessId(),
GetCurrentProcess(),
(LPVOID)VirAddress,
pAllocateNonPagedPool->ulNumOfBytes,
PAGE_READWRITE);


===============================================================

Finally, I passed VirtAddressTo UsrSpace (virtual Memory) and
PhysAddressToUsrSpace ( Physical Memory) to User Space (for
Application read/write access).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值