\Device\PhysicalMemory
ist ein Abschnitt Objekt, das in Win32-API-Bedingungen eine Speicherabbilddatei ist. Angesichts seines Namens könnte es ein MMF vollständig RAM unterstützt werden; Eins-zu-Eins-Mapping von physikalischen Seiten.Erläuterung erforderlich unter Device PhysicalMemory unter Windows
Und das ist so ziemlich meine Frage: ist dieser Abschnitt Objekt repräsentiert physische Speicher oder den nicht ausgelagerten Systemadressraum nicht ausgelagerten?
Und wenn es ersteres ist, was ist mit "Löchern" im physischen Speicher? Zum Beispiel auf PAE-fähigen Systemen kann der physikalische Speicher, der dem Systemadressraum zugrunde liegt, tatsächlich "fragmentiert" sein. Was passiert, wenn ich nach dem Zuordnen einer Ansicht in dieses \Device\PhysicalMemory
Sektionsobjekt auf solche Löcher zugreifen würde?
Der Grund, warum ich verwirrt bin, ist, weil die MmMapIoSpace
-Funktion einen PHYSICAL_ADDRESS PhysicalAddress
-Parameter übernimmt und diese physische Adresse dem nicht ausgelagerten Systemadressraum zuordnet. Siehe auch andere Speichermanagerfunktionen wie MmAllocateContiguousMemory
. Es scheint ziemlich gefährlich, tatsächlichen physischen Speicher zur Verfügung zu stellen und so zu tun, es kann in zusammenhängender Weise zugegriffen werden.
So eindeutig gibt es eine Zuordnung, die nicht unbedingt eins zu eins zwischen nicht ausgelagerten physischen Speicher und nicht ausgelagerten Systemadressraum ist.
Der Versuch, die oben genannten und eine Reihe von verwandten Begriffen in Windows Internals, 6. Ausgabe zu finden. gab keine definitive Antwort. Kapitel 10 befasst sich hauptsächlich mit dem, was die WDK-Dokumentation Systemadressraum nennt. Deshalb frage ich hier.
Stellen Sie sicher, dass Sie auf autoritative Quellen für Ihre Antwort verweisen.
danke für die Details. Ich war wirklich hauptsächlich an '\ Device \ PhysicalMemory' interessiert und eher aus Neugierde, als um es zu benutzen. Kannst du irgendwelche Quellen für den Anspruch im ersten Absatz angeben? – 0xC0000022L
Ich habe keine Quelle, die ich Ihnen geben kann. –
Übrigens, ich versuche wirklich nichts zu tun *. Ich versuche etwas über Interna zu lernen, die undokumentiert zu sein scheinen. Und ich dachte mir, dass das Eintippen einer Frage sinnvoller ist als das Starten von IDA und das Durchsieben von Disassemblierungsseiten :) – 0xC0000022L