virtualquery()这个函数你可以用它来得到
解决方案 »
- sdk c 记事本
- 自绘对话框标题栏问题(已经成功自绘,但程序启动时会闪过原来的蓝色标题栏)
- 怎样做网页自动填表软件???
- SDK下, 我隐藏了标题栏后, 如果在任务样上达到点击对话框名按钮,最小化和还原呢....
- 内存泄漏怎么处理?
- 一个菜单的问题!这种情况的原因是?
- 关于得到浮动工具条当前位置的问题?
- 如何检测串口和并口上是否有设备存在???
- CreateFileMapping 做的文件映像,怎样配置才可以不让文件映像不自动提交 dirty page 到磁盘,而等到我FlushViewOfFile才真正提交 dirty page 到磁盘呢?
- 哪位高手能写一个类似MessageBox()的函数,但可以指定显示位置?
- 关于m_edit.SetWindowText的问题
- 我今天买了一套.net的开发包,5CD,老板说是正式版,不知道是不是啊?
我试 一下
virtualqueryex为什么我得到的大小始终是0??
DWORD VirtualQueryEx(
HANDLE hProcess, // handle to process
LPCVOID lpAddress, // address of region
PMEMORY_BASIC_INFORMATION lpBuffer, // information buffer
SIZE_T dwLength // size of buffer
);该函数的返回值是在information buffer中实际返回的字节数。如果在调用的时候传递了一个核心态的指针给VirtualQueryEx函数,则会导致没有信息返回,这是由于安全性的要求,在这种情况下,返回值总是0。这是一种调用该函数,返回值为正常的做法,您可以参考一下:unsigned long GetTotalCommittedMemory(){
//HANDLE handle = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE);
HANDLE handle = GetCurrentProcess(); MEMORY_BASIC_INFORMATION mi; LPVOID pAddr = 0L; DWORD dwTotalCommit = 0; DWORD retvalue = 0; while ( (retvalue = VirtualQueryEx(handle, pAddr, &mi, sizeof(MEMORY_BASIC_INFORMATION))) == sizeof(MEMORY_BASIC_INFORMATION)) { // Count allocated memory
// retvalue在我的机器上正常时返回28(WinXP) if (mi.State == MEM_COMMIT) dwTotalCommit += mi.RegionSize; pAddr = ((BYTE*) mi.BaseAddress + mi.RegionSize); } return dwTotalCommit;}关于进一步的信息,您可以参考:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/memory/memman_6im0.asp- 微软全球技术中心 VC技术支持本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款
(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。为了为您创建更好的讨论环境,请参加我们的用户满意度调查
(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。
ReadProcessMemory函数。结果我始终读取的到的数据是自己的程序中的。连程序的源代码都读出来了。
可以保证的是ReadProcssMemory中的handle为其它的程序的。????