\Device\PhysicalMemory
- объект раздела, то есть в терминах API Win32 - файл с отображением памяти. Учитывая его название, это может быть MMF полностью при поддержке RAM; будучи одним на одно отображение физических страниц.Требуется уточнение на Device PhysicalMemory в Windows
И это довольно много, на моем вопрос: делает этот раздел объект представляет невыгружаемый физической памяти или неподкачиваемой системы адресного пространство?
И если это первый, то как насчет «дыр» в физической памяти? Например, в системах с поддержкой PAE физическая память, лежащая в основе адресного пространства системы, может быть фактически «фрагментирована». Что произойдет, если я получаю доступ к таким отверстиям после сопоставления вида с объектом раздела \Device\PhysicalMemory
?
Причина, по которой я запутался, заключается в том, что функция MmMapIoSpace
принимает параметр PHYSICAL_ADDRESS PhysicalAddress
и сопоставляет этот физический адрес с адресным пространством невыгружаемой системы. Также см. Другие функции диспетчера памяти, такие как MmAllocateContiguousMemory
. Кажется довольно опасным сделать актуальной доступной физической памятью и притворяться, что к ней можно получить доступ беспрерывно.
Так ясно, что существует сопоставление, которое не обязательно одно между одноранговым физическим запоминающим устройством и невыгружаемым системным адресным пространством.
Пытается найти вышеуказанное и ряд связанных терминов в Windows Internals, 6-е изд. не дал определенного ответа. В главе 10 в основном рассматривается вопрос о том, что документация WDK вызывает системное адресное пространство. Поэтому я спрашиваю здесь.
Обязательно укажите достоверные источники для ответа.
благодарит за детали. Меня действительно интересовали '\ Device \ PhysicalMemory' и больше из любопытства, чем (ab) его использовать. Можете ли вы дать какие-либо источники для претензии в первом абзаце? – 0xC0000022L
У меня нет источника для вас. –
Кстати, я не пытаюсь ничего делать, действительно. Я пытаюсь узнать о внутренностях, которые, как представляется, недокументированы. И я решил, что набрать вопрос здесь более разумно, чем запустить IDA и просеять страницы разборки :) – 0xC0000022L