WinCE 下进程可访问的代码页的地址获取
2014-04-02 19:18
357 查看
此功能是在看 TCPMP 代码时发现的,感觉以后的工作中可能用到此部分功能,所以记录下来。
#include "windef.h" #include "windows.h" /* * 功能: 进程可访问的代码页 * 参数: pPtr(in) 进程中一函数的指针 ppucMin,ppucMax(out) 输出进程可访问地址的最小/最大值 puiPageSize(in/out) 页面大小设置与输出 */ void CodeAddrFindPages(void *pPtr,unsigned char **ppucMin,unsigned char **ppucMax,unsigned int *puiPageSize) { unsigned char *pucMin = NULL; unsigned char *pucMax = NULL; unsigned int uiPageSize = #if defined(MIPS) 1024; #else 4096; #endif if(puiPageSize) *puiPageSize = uiPageSize; pucMin = pucMax = (unsigned char *)((unsigned int)pPtr & (~(uiPageSize - 1))); // ~ 的优先级高于位操作符 & // Leo: IsBadCodePtr - Determines whether the calling process has read access to the memory at the specified address. while(!IsBadCodePtr((FARPROC)(pucMin - uiPageSize))) pucMin -= uiPageSize; while(!IsBadCodePtr((FARPROC)pucMax)) pucMax += uiPageSize; *ppucMin = pucMin; *ppucMax = pucMax; #ifdef _USE_WINDOWS_CE_PLATFORM RETAILMSG(1,(L"[CodeAddr]min = 0x%X; max = 0x%X\r\n",pucMin,pucMax)); #else printf("[CodeAddr]min = 0x%X; max = 0x%X\r\n",pucMin,pucMax); #endif } 运行结果: [CodeAddr]min = 0x11000; max = 0x195000
相关文章推荐
- JAVA语言的特点
- Java 单例模式详解
- Java读取property配置文件的方法
- javaweb问题求解
- oc第一天课程代码(NSString常用函数及初始化方式)
- LeetCode | Search in Rotated Sorted Array
- spring的AOP面向切面编程
- oc第一天课程代码(创建矩形类)
- c2java 第3篇 红黑树删除的理解和jdb调试初步(2014.04.03更新)
- Java反射机制(2)
- LeetCode | Longest Valid Parentheses
- java反射机制(1)
- PHP获取url的方式
- Spring Data JPA 简单介绍
- Eclipse代码自动补全设置
- PHP文件上传详解
- matlab读取mat文件
- Java正则表达式较验手机号、邮箱
- 最大公约数问题
- 基于ajax二级联动