下面這個函數用來獲取這是此頁內的地址的頁面的基地址:什麼是pAddress&〜訣竅(PAGE_SIZE - 1)獲得頁面的基地址
void* GetPageAddress(void* pAddress)
{
return (void*)((ULONG_PTR)pAddress & ~(PAGE_SIZE - 1));
}
但我無法完全理解它,它在這裏扮演的訣竅是什麼?
結論:
就個人而言,我認爲Amardeep的解釋加上Alex B的例子是最好的答案。由於亞歷克斯B的答案已被投票,我想接受阿馬迪普的答案作爲官方的答案來突出它!謝謝大家。
」然後,將所有這些位補全爲零,並設置比掩碼更高位的所有位。「----要匹配&左邊句柄操作數的大小,右邊? – 2010-06-11 15:28:15
〜將返回與其操作數相同的大小。在這種情況下,如果PAGE_SIZE只是一個定義爲文字數字的宏,它將默認爲目標平臺上的任何「int」,可能是32位。您提供的代碼示例在64位系統上無效。它需要:return(void *)((ULONG_PTR)pAddress&〜(void *)(PAGE_SIZE - 1)); – 2010-06-11 17:34:44