- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
VirtualQueryEx 的dwLength 参数的作用是什么? Here它是这样描述的:
lpBuffer [out] A pointer to a MEMORY_BASIC_INFORMATION structure in which information about the specified page range is returned.
dwLength [in] The size of the buffer pointed to by the lpBuffer parameter, in bytes.
除了 sizeof(MEMORY_BASIC_INFORMATION)
之外,还有其他原因吗?
最佳答案
与 Windows API 中经常发生的情况一样,大小字段用于结构版本控制。 Windows 的 future 版本可以在更大的结构中为了解新功能的应用程序提供附加信息,而不会破坏与旧应用程序的二进制兼容性。
还有一个更有趣的用例:当前的 Windows 版本允许 32 位和 64 位进程在同一台机器上共存。每个进程都获得具有正确数据类型大小的 API,但是如果 64 位进程(比如调试器)想要弄乱 32 位进程的内存页会发生什么,反之亦然?在这种情况下,它不能使用“常规”MEMORY_BASIC_INFORMATION 结构 - 这是适合其“位数”的结构的别名,但必须使用适合目标进程的版本(参见页面底部的 here ) ).在这种情况下,VirtualQueryEx 可以使用大小信息来检查调用者是否提供了正确的结构,并提供错误信息而不是写入错误的内存。
关于c - VirtualQueryEx 的 dwLength 参数的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24961639/
因此,我编写了一个程序,它能够使用 VirtualQueryEx 从大多数进程中成功读取内存。但是,我遇到过此功能失败的过程。不是系统进程,只是游戏进程。没有调试权限,我什至无法打开进程的句柄。通过它
我正在尝试使用 VirtualQueryEx 读取 32 位进程的一些内存页使用 Visual Studio 2012。 但是,当我运行该程序时,出现 VirtualQueryEx 错误 6:无效句柄
我使用 VirtualQueryEx 通过以下代码枚举模块的内存页: unsigned char *p = (unsigned char *)module; MEMORY_BASIC_INFO
我正在尝试获取给定进程正在使用的 DLL 列表,我正在尝试通过 VirtualQueryEx 来实现。我的问题是它只返回部分 DLL 列表,而不是全部(我可以使用 Process Explorer 或
VirtualQueryEx 的dwLength 参数的作用是什么? Here它是这样描述的: lpBuffer [out] A pointer to a MEMORY_BASIC_INFORMATI
我知道 Windows 进程是通过加载 PE header 然后加载以下部分(.text .data 等)映射到 ram 中的,并且我可以使用 ReadProcessMemory 读取它们,但是 Vi
您好,我尝试调用 VirtualQueryEx 函数来获取有关内存保护的一些信息,但是我的代码给我错误 0x18 (ERROR_BAD_LENGTH),我不知道我的代码有什么问题; 代码片段: PME
我试图在我的流程中保留有关所有区域的信息。为此,我使用了 VirtualQueryEx。我的主要在哪里` int _tmain(int argc, _TCHAR* argv[]) { MEMO
我经历了this blog和 this videocast .在 Windows 中,如果我想检索有关指定进程的虚拟地址空间内的一系列页面的信息,我可以使用 WinAPI VirtualQueryEx
我正在尝试将 PSHunt ( https://github.com/Infocyte/PSHunt/blob/master/Surveys/Survey.ps1 ) 的特定功能移植到 Go。具体来说
我正在尝试从 kernal32.dll Windows API 函数使用 VirtualQueryEx。 我在调用此函数之前获得的所有指针/地址都是正确的。 对 VirtualQueryEx 的调用返
TL;DR:如果我从 64 位进程调用 32 位进程的 VirtualQueryEx,我应该使用 MEMORY_BASIC_INFORMATION 还是 MEMORY_BASIC_INFORMATIO
我是一名优秀的程序员,十分优秀!