Lezen in het Engels

Delen via


Bereik van toegewezen geheugen

Al het geheugen dat een proces toewijst met behulp van de geheugentoewijzingsfuncties (HeapAlloc, VirtualAlloc, GlobalAllocof LocalAlloc) is alleen toegankelijk voor het proces. Geheugen dat door een DLL is toegewezen, wordt echter toegewezen in de adresruimte van het proces dat het DLL-bestand wordt genoemd en is niet toegankelijk voor andere processen die gebruikmaken van dezelfde DLL. Als u gedeeld geheugen wilt maken, moet u bestandstoewijzing gebruiken.

Toewijzing van benoemde bestanden biedt een eenvoudige manier om een blok gedeeld geheugen te maken. Een proces kan een naam opgeven wanneer deze gebruikmaakt van de functie CreateFileMapping om een object voor bestandstoewijzing te maken. Andere processen kunnen dezelfde naam opgeven voor de CreateFileMapping- of functie OpenFileMapping om een ingang voor het toewijzingsobject te verkrijgen.

Elk proces specificeert de ingang van het object voor bestandstoewijzing in de MapViewOfFile-functie om een weergave van het bestand toe te wijzen aan een eigen adresruimte. De weergaven van alle processen voor één object voor bestandstoewijzing worden toegewezen aan dezelfde deelbare pagina's van fysieke opslag. De virtuele adressen van de toegewezen weergaven kunnen echter variëren van het ene proces naar het andere, tenzij de functie MapViewOfFileEx- wordt gebruikt om de weergave toe te wijzen op een opgegeven adres. Hoewel deelbaar, zijn de pagina's van fysieke opslag die worden gebruikt voor een toegewezen bestandsweergave niet globaal; ze zijn niet toegankelijk voor processen die geen weergave van het bestand hebben toegewezen.

Pagina's die zijn vastgelegd door een weergave van een bestand toe te kennen, worden vrijgegeven wanneer het laatste proces met een weergave van het toewijzingsobject wordt beëindigd of de toewijzing ervan ongedaan maakt door de UnmapViewOfFile- functie aan te roepen. Op dit moment wordt het opgegeven bestand (indien aanwezig) dat is gekoppeld aan het toewijzingsobject bijgewerkt. Een opgegeven bestand kan ook worden gedwongen om bij te werken door de FlushViewOfFile functie aan te roepen.

Zie Bestandstoewijzingvoor meer informatie. Zie Gedeeld geheugen gebruiken in een Dynamic-Link Bibliotheekvoor een voorbeeld van gedeeld geheugen in een DLL-bestand.

Als meerdere processen schrijftoegang hebben tot gedeeld geheugen, moet u de toegang tot het geheugen synchroniseren. Zie Synchronisatievoor meer informatie.