簡體   English   中英

VirtualQueryEx的dwLength參數的目的是什么?

[英]What is the purpose of dwLength parameter of VirtualQueryEx?

VirtualQueryEx的dwLength參數的目的是什么? 這里描述如下:

lpBuffer [out]指向MEMORY_BASIC_INFORMATION結構的指針,其中返回有關指定頁面范圍的信息。

dwLength [in] lpBuffer參數指向的緩沖區大小,以字節為單位。

是否有任何理由使用sizeof(MEMORY_BASIC_INFORMATION)任何東西?

  1. 與Windows API一樣,size字段用於結構版本控制。 未來版本的Windows可以為更大的結構提供更多信息的附加信息,以便了解新功能而不會破壞與舊應用程序的二進制兼容性。

  2. 還有一個更有趣的用例:當前的Windows版本允許32位和64位進程在同一台機器上共存。 每個進程都獲得具有正確數據類型大小和API的API,但是如果64位進程(例如,調試器)想要弄亂32位進程的內存頁面或反之亦然會發生什么? 在這種情況下,它不能使用“常規”MEMORY_BASIC_INFORMATION結構 - 這是適合其“位數”的結構的別名,但必須使用適合目標進程的版本(參見此處 ,在頁面底部)。 在這種情況下,VirtualQueryEx可以使用大小信息來檢查調用者是否提供了正確的結構,並提供錯誤而不是寫入錯誤的內存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM