QueryVirtualMemoryInformation与VirtualQueryEx的差异探究
VirtualQueryEx 与 QueryVirtualMemoryInformation 的核心差异
这俩API的核心差异主要体现在兼容性、功能扩展性和使用场景上,具体如下:
兼容性范围不同
VirtualQueryEx是Windows NT时期就存在的经典API,全版本Windows系统(从WinXP到Win11)都支持;而QueryVirtualMemoryInformation是Windows 10 1607版本才新增的API,仅能在Win10及以上的较新系统中使用。功能扩展性差异极大
VirtualQueryEx只能返回固定的MEMORY_BASIC_INFORMATION结构体,仅包含内存页的基础状态、保护属性、类型等信息;QueryVirtualMemoryInformation则通过指定不同的MEMORY_INFORMATION_CLASS枚举值(你提到的DUMMYSTRUCTNAME其实是该枚举的占位成员),可以获取大量扩展内存信息——比如进程工作集详情、内存分区信息、页面优先级数据等,这些都是VirtualQueryEx无法提供的。使用灵活性与效率不同
VirtualQueryEx每次调用只能查询单个连续内存区域的基础信息,若要遍历进程所有内存区域,需要多次循环调用;而QueryVirtualMemoryInformation支持批量获取特定维度的内存数据,比如一次性获取整个进程的工作集信息,在复杂查询场景下效率更高。当然,在仅需要基础内存页信息的简单场景中,VirtualQueryEx的轻量调用反而更直接。
内容的提问来源于stack exchange,提问作者Einstein
相关产品推荐
相关产品推荐

