wince6下访问物理内存
来源:互联网 发布:win10禁止某个软件联网 编辑:程序博客网 时间:2024/05/21 11:03
在Wince下面已经不能通过简单的VirtualAlloc+VirtualCopy在应用程序中访问物理内存了。
应用程序直接访问物理地址可以极大的方便硬件驱动开发.如直接访问LCD控制器,可以很直接的对各种参数进行微调,不必一次次的编译打包,下载运行.
wince6.0之前可以通过MmMapIoSpace将物理地址映射到程序空间.MmMapIoSpace内部实现就是常见的VirtualAlloc+VirtualCopy.
Wince6.0对内核模式也用户模式做了相当大的改动,具体如何还不是很明了,清楚的是用户态程序调用VirtualCopy物理地址时会返回失败,导致MmMapIoSpace返回0.
绕过去的思路就是加载部分代码到内核模式,在这部分代码中完成地址映射.有两种实现的方法,一个是通过ActivateDevice加载一个流接口驱动,有点繁琐,实现标准接口的驱动,修改注册表,再加载调用.另一个就是通过LoadKernelLibrary加载动态库到内核空间,然后通过KernelLibIoControl完成映射.
代码中几个关键的地方
1 上面我们提到是在内核空间完成映射,而不是在内核空间访问物理地址.因为wince6.0提供了VirtualAlloc+VirtualCopy的增强版:VirtualAllocEx+VirtualCopyEx,可以直接将物理地址映射到用户程序的地址空间.
2 LoadKernelLibrary没有相应的FreeKernelLibrary,我们可以在内核模式动态库中通过FreeLibrary或者FreeLibraryAndExitThread自身来实现
一些替代的函数:
Virtual Memory APIs
CeVirtualSharedAlloc
LockPages
LockPagesEx
UnlockPages
UnlockPagesEx
VirtualAllocCopyEx
VirtualCopyEx
VirtualSetAttributes
CreateStaticMapping
NKDeleteStaticMapping
VirtualCopy
File System APIs
ReadRegistryFromOEM
SetStoreQueueBase
WriteRegistryToOEM
Power APIs
PowerOffSystem (很多测试AP用到)
Miscellaneous APIs
SetOOMEvent
- wince6下访问物理内存
- wince6下访问物理内存
- Windows 95/98下直接访问物理内存
- Windows CE下访问物理内存的方法
- Windows CE下访问物理内存的一些方法!!
- Windows CE下访问物理内存的一些方法
- Windows CE下访问物理内存的一些方法!!
- Windows CE下访问物理内存的方法
- Windows CE下访问物理内存的一些方法
- Windows CE下访问物理内存的方法
- Windows CE下访问物理内存的方法
- WinCE6.0中应用程序如何直接访问物理空间
- WinCE6.0中应用程序如何直接访问物理空间
- WinCE6.0中应用程序如何直接访问物理空间
- WinCE6.0中应用程序如何直接访问物理空间
- WinCE6.0中应用程序如何直接访问物理空间
- WinCE6.0中应用程序如何直接访问物理空间
- WinCE6.0中应用程序如何直接访问物理空间
- 清华梦的粉碎—写给清华大学的退学申请
- 金融超限战(一)
- GTK下的扫雷程序
- “3年内不会买车!”业内人揭秘真实汽车行业内幕
- Oracle SQL的优化规则
- wince6下访问物理内存
- minicom的配置
- vivi的配置与编译
- 超级终端的配置
- 如何编出健壮的代码,java编程30条规则(一)
- NFS服务器的配置
- linux-2.4.18-rmk7-pxal-mz4的编译
- 一个命令解释器的源代码
- 如何编出健壮的代码,java编程30条规则(二)