Teilen über


Bereich des zugewiesenen Speichers

Der gesamte Speicher, den ein Prozess zuweist, wird mithilfe der Speicherzuweisungsfunktionen ( HeapAlloc, VirtualAlloc, GlobalAlloc-oder LocalAlloc-) nur für den Prozess zugänglich. Der von einer DLL zugewiesene Arbeitsspeicher wird jedoch im Adressraum des Prozesses zugewiesen, der die DLL aufgerufen hat und nicht auf andere Prozesse mit derselben DLL zugegriffen werden kann. Um gemeinsam genutzten Speicher zu erstellen, müssen Sie die Dateizuordnung verwenden.

Benannte Dateizuordnung bietet eine einfache Möglichkeit, einen Block freigegebenen Speichers zu erstellen. Ein Prozess kann einen Namen angeben, wenn er die CreateFileMapping--Funktion verwendet, um ein Dateizuordnungsobjekt zu erstellen. Andere Prozesse können denselben Namen entweder für die CreateFileMapping- oder OpenFileMapping--Funktion angeben, um ein Handle für das Zuordnungsobjekt abzurufen.

Jeder Prozess gibt das Handle für das Dateizuordnungsobjekt in der MapViewOfFile--Funktion an, um eine Ansicht der Datei in einem eigenen Adressbereich zuzuordnen. Die Ansichten aller Prozesse für ein einzelnes Dateizuordnungsobjekt werden auf den gleichen seiten des physischen Speichers zugeordnet. Die virtuellen Adressen der zugeordneten Ansichten können jedoch von Einem Prozess zu einem anderen variieren, es sei denn, die MapViewOfFileEx--Funktion wird verwendet, um die Ansicht an einer angegebenen Adresse zuzuordnen. Auch wenn die Seiten des physischen Speichers, der für eine zugeordnete Dateiansicht verwendet wird, nicht global sind; Sie können nicht auf Prozesse zugreifen, die keine Ansicht der Datei zugeordnet haben.

Alle Seiten, die durch Zuordnen einer Ansicht einer Datei zugesichert werden, werden freigegeben, wenn der letzte Prozess mit einer Ansicht des Zuordnungsobjekts beendet oder aufgehoben wird, indem die UnmapViewOfFile--Funktion aufgerufen wird. Zurzeit wird die angegebene Datei (sofern vorhanden) aktualisiert, die dem Zuordnungsobjekt zugeordnet ist. Eine angegebene Datei kann auch durch Aufrufen der FlushViewOfFile--Funktion aktualisiert werden.

Weitere Informationen finden Sie unter Dateizuordnung. Ein Beispiel für gemeinsam genutzten Speicher in einer DLL finden Sie unter Verwenden des freigegebenen Speichers in einer Dynamic-Link Library.

Wenn mehrere Prozesse Schreibzugriff auf gemeinsam genutzten Speicher haben, müssen Sie den Zugriff auf den Arbeitsspeicher synchronisieren. Weitere Informationen finden Sie unter Synchronisierung.