首页
社区
课程
招聘
[求助]VirtualQueryEx函数中有个参数不知道怎么用啊???
发表于: 2006-3-4 15:54 7132

[求助]VirtualQueryEx函数中有个参数不知道怎么用啊???

2006-3-4 15:54
7132

DWORD VirtualQueryEx(

    HANDLE hProcess,        // handle of process
    LPCVOID lpAddress,        // address of region
    PMEMORY_BASIC_INFORMATION lpBuffer,        // address of information buffer  
    DWORD dwLength         // size of buffer
   );       
这个函数中的第二个参数是什么意思啊??怎么用啊??请大家帮下忙解答,谢谢!


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 7
支持
分享
最新回复 (9)
雪    币: 1852
活跃值: (504)
能力值: (RANK:1010 )
在线值:
发帖
回帖
粉丝
2
内存区域的指针
2006-3-4 16:34
0
雪    币: 214
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
最初由 北极星2003 发布
内存区域的指针

是要我自己先去分配一段内存,再用这段内存的起始地址当参数,是吗?
能不能详细点,我是初学者,谢谢你啊!!
2006-3-4 16:40
0
雪    币: 371
活跃值: (790)
能力值: ( LV12,RANK:570 )
在线值:
发帖
回帖
粉丝
4
VirtualQueryEx一般用来查询其他进程的内存的属性。如果你自己先分配一段内存,就不用VirtualQuery了,因为分配的时候你就已经指定了该内存的属性,再查岂不是多此一举?:)
lpAddress是一个指针,你要查询的内存的地址。
2006-3-8 10:27
0
雪    币: 214
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
最初由 kongfoo 发布
VirtualQueryEx一般用来查询其他进程的内存的属性。如果你自己先分配一段内存,就不用VirtualQuery了,因为分配的时候你就已经指定了该内存的属性,再查岂不是多此一举?:)
lpAddress是一个指针,你要查询的内存的地址。


谢谢楼上的解答,不过还是不明白.
我的原意是用openProcess()函数打开一个进程,再用VirtualQueryEx函数查询进程在内存中的虚拟地址.这个lpAddress参数指向的内存地址去哪里找啊???
2006-3-8 18:53
0
雪    币: 775
活跃值: (3420)
能力值: ( LV7,RANK:140 )
在线值:
发帖
回帖
粉丝
6
你是要查询全部内存的话,参数就是0,从头开始查,如果是有目的的查,比如从0x400000开始查,那么参数就是0x400000
2006-3-8 20:03
0
雪    币: 214
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
LOCAL    @mbi:MEMORY_BASIC_INFORMATION   ;局部变量定义

invoke  VirtualQueryEx,@hProcess,NULL,addr @mbi,sizeof @mbi

这样用没错吧,为什么函数都是执行失败啊,???
2006-3-9 15:38
0
雪    币: 291
活跃值: (213)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
8
VirtualQueryEx是查询内存页属性的
第二个参数是欲查询的那个页面中的某个线性地址
一页是4KB大小, 只要指定了这4KB中的任何一个线性地址就会返回整个页面的信息
如果试图查询内核模式下的页面(如线性地址80000000h以上的内存页), 函数会执行失败
2006-3-9 16:30
0
雪    币: 214
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
最初由 thebutterfly 发布
VirtualQueryEx是查询内存页属性的
第二个参数是欲查询的那个页面中的某个线性地址
一页是4KB大小, 只要指定了这4KB中的任何一个线性地址就会返回整个页面的信息
如果试图查询内核模式下的页面(如线性地址80000000h以上的内存页), 函数会执行失败


谢谢楼上的解答.不过我是用openProcess()函数随便打开的一个进程,我怎么去确定这个参数是多少啊?用什么知道这个地址呢??还有这个参数用NULL有没有错啊??但我的函数还是执行失败啊!
2006-3-9 18:02
0
雪    币: 1852
活跃值: (504)
能力值: (RANK:1010 )
在线值:
发帖
回帖
粉丝
10
VirtualQueryEx是用来查询内存页面保护属性的
假设你需要修改PE文件头的“PE”标志,那么首先你需要取得指向文件头的指针pFileHeader,然后把pFileHeader作为第二个参数就可以了。
如果对“指针”,“取地址”等概念不清楚的话,看看那些程序设计的书籍
2006-3-9 18:24
0
游客
登录 | 注册 方可回帖
返回
//