Arbeiten mit Seiten

Um die Größe einer Seite auf dem aktuellen Computer zu bestimmen, verwenden Sie die GetSystemInfo-Funktion .

Die Funktionen VirtualQuery und VirtualQueryEx geben Informationen zu einer Region von aufeinander folgenden Seiten zurück, beginnend mit einer angegebenen Adresse im Adressraum eines Prozesses. VirtualQuery gibt Informationen zum Arbeitsspeicher im Aufrufprozess zurück. VirtualQueryEx gibt Informationen zum Arbeitsspeicher in einem angegebenen Prozess zurück und wird verwendet, um Debugger zu unterstützen, die Informationen zu einem Prozess benötigen, der debuggen wird. Der Bereich der Seiten wird durch die angegebene Adresse gerundet auf die nächste Seitengrenze gebunden. Es erweitert sich über alle nachfolgenden Seiten mit den folgenden Attributen in gemeinsamen:

  • Der Zustand aller Seiten ist identisch: entweder verpflichtet, reserviert oder kostenlos.
  • Wenn die anfängliche Seite nicht kostenlos ist, sind alle Seiten in der Region Teil der gleichen anfänglichen Zuordnung von Seiten, die von einem Aufruf an VirtualAlloc reserviert wurden.
  • Der Zugriffsschutz aller Seiten ist identisch (das heißt, PAGE_READONLY, PAGE_READWRITE oder PAGE_NOACCESS).

Die VirtualLock-Funktion ermöglicht es einem Prozess, einen oder mehrere Seiten des gebundenen Arbeitsspeichers in physischen Arbeitsspeicher (RAM) zu sperren, um das System daran zu hindern, die Seiten in die Pagingdatei zu tauschen. Sie kann verwendet werden, um sicherzustellen, dass kritische Daten ohne Datenträgerzugriff zugänglich sind. Das Sperren von Seiten in den Arbeitsspeicher ist gefährlich, da sie die Fähigkeit des Systems zum Verwalten des Arbeitsspeichers beschränkt. Übermäßige Verwendung von VirtualLock kann die Systemleistung beeinträchtigen, indem ausführbarer Code in die Pagingdatei getauscht werden kann. Die VirtualUnlock-Funktion entsperrt Arbeitsspeicher, der von VirtualLock gesperrt ist.

Mit der VirtualProtect-Funktion kann ein Prozess den Zugriffsschutz einer beliebigen gebundenen Seite im Adressbereich eines Prozesses ändern. Ein Prozess kann beispielsweise Lese-/Schreibseiten zum Speichern vertraulicher Daten zuweisen und dann den Zugriff auf schreibgeschützte oder keinen Zugriff ändern, um versehentliches Überschreiben zu schützen. VirtualProtect wird in der Regel mit Seiten verwendet, die von VirtualAlloc zugewiesen wurden, aber es funktioniert auch mit Seiten, die von allen anderen Zuordnungsfunktionen festgelegt wurden. VirtualProtect ändert jedoch den Schutz aller Seiten, und Zeiger, die von den anderen Funktionen zurückgegeben werden, werden nicht unbedingt auf Seitengrenzen ausgerichtet. Die VirtualProtectEx-Funktion ähnelt VirtualProtect, außer es ändert den Schutz des Arbeitsspeichers in einem angegebenen Prozess. Das Ändern des Schutzes ist nützlich für Debugger im Zugriff auf den Speicher eines Prozesses, der debuggen wird.