Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dient als logischer Wrapper für die entsprechende Win32-Funktion. Die Win32-Implementierung von VirtualAlloc belegt oder übergibt einen Seitenbereich im virtuellen Adressbereich des aufrufenden Prozesses.
HRESULT VirtualAlloc (
[in] void* pAddress,
[in] SIZE_T dwSize,
[in] DWORD flAllocationType,
[in] DWORD flProtect,
[in] EMemoryCriticalLevel dwCriticalLevel,
[out] void** ppMem
);
Parameter
pAddress
[in] Ein Zeiger auf die Startadresse des Bereichs, der belegt werden soll.dwSize
[in] Die Größe des Bereichs in Bytes.flAllocationType
[in] Der Typ der Speicherbelegung.flProtect
[in] Arbeitsspeicherschutz für den Bereich der Seiten, die belegt werden sollen.dwCriticalLevel
[in] Ein EMemoryCriticalLevel-Wert, der die Auswirkungen eines Belegungsfehlers angibt.ppMem
[out] Ein Zeiger auf die Startadresse des belegten Arbeitsspeichers oder NULL, wenn die Anforderung nicht erfüllt werden konnte.
Rückgabewert
HRESULT |
Beschreibungen |
|---|---|
S_OK |
VirtualAlloc erfolgreich zurückgegeben. |
HOST_E_CLRNOTAVAILABLE |
Die Common Language Runtime (CLR) wurde nicht in einen Prozess geladen oder befindet sich in einem Zustand, in dem sie weder verwalteten Code ausführen noch den Aufruf erfolgreich verarbeiten kann. |
HOST_E_TIMEOUT |
Der Aufruf hat das Zeitlimit überschritten. |
HOST_E_NOT_OWNER |
Der Aufrufer ist nicht Besitzer der Sperre. |
HOST_E_ABANDONED |
Ein Ereignis wurde abgebrochen, während ein blockierter Thread oder eine blockierte Fiber auf das Ereignis gewartet hat. |
E_FAIL |
Ein unbekannter, schwerwiegender Fehler ist aufgetreten. Wenn eine Methode E_FAIL zurückgibt, kann die CLR innerhalb des Prozesses nicht mehr verwendet werden. Nachfolgende Aufrufe von Hostmethoden geben HOST_E_CLRNOTAVAILABLE zurück. |
E_OUTOFMEMORY |
Zur Erfüllung der Belegungsanforderung war nicht genügend Arbeitsspeicher verfügbar. |
Hinweise
Um einen Bereich im Adressbereich des Prozesses zu belegen, müssen Sie VirtualAlloc aufrufen. Der pAddress-Parameter enthält die Startadresse des gewünschten Speicherblocks. Dieser Parameter ist normalerweise auf NULL festgelegt. Das Betriebssystem zeichnet freie Adressbereiche auf, die für den Prozess verfügbar sind. Der pAddress-Wert NULL weist das System an, einen passenden Bereich zu belegen. Alternativ können Sie eine bestimmte Startadresse für den Speicherblock bereitstellen. In beiden Fällen wird der Ausgabeparameter ppMem als Zeiger auf den belegten Speicher zurückgegeben. Die Funktion selbst gibt einen HRESULT-Wert zurück.
Die Win32-VirtualAlloc-Funktion verfügt über keinen ppMem-Parameter und gibt stattdessen den Zeiger auf den belegten Speicher zurück. Weitere Informationen finden Sie in der Dokumentation zur Windows-Plattform.
Anforderungen
Plattformen: siehe Systemanforderungen für .NET Framework.
Header: MSCorEE.h
Bibliothek: als Ressource in MSCorEE.dll enthalten
.NET Framework-Versionen: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0