Freigeben über


IHostMemoryManager::VirtualAlloc-Methode

Dient als logischer Wrapper für die entsprechende Win32-Funktion. Die Win32-Implementierung von VirtualAlloc reserviert oder committet einen Bereich von Seiten im virtuellen Adressraum des aufrufenden Prozesses.

Syntax

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 zuzuordnenden Bereichs.

dwSize
[in] Die Größe des Bereichs in Byte.

flAllocationType
[in] Der Typ der Speicherbelegung.

flProtect
[in] Der Arbeitsspeicherschutz für den Bereich der Seiten, die zugeordnet werden sollen.

dwCriticalLevel
[in] Ein EMemoryCriticalLevel-Wert, der die Auswirkungen eines Zuordnungsfehlers angibt.

ppMem
[out] Ein Zeiger auf die Startadresse des zugeordneten Arbeitsspeichers oder NULL, wenn die Anforderung nicht erfüllt werden konnte.

Rückgabewert

HRESULT BESCHREIBUNG
S_OK VirtualAlloc wurde erfolgreich zurückgegeben.
HOST_E_CLRNOTAVAILABLE Die Common Language Runtime (CLR) wurde nicht in einen Prozess geladen, oder die CLR befindet sich in einem Zustand, in dem sie keinen verwalteten Code ausführen oder den Aufruf nicht erfolgreich verarbeiten kann.
HOST_E_TIMEOUT Timeout des Aufrufs.
HOST_E_NOT_OWNER Der Aufrufer besitzt die Sperre nicht.
HOST_E_ABANDONED Ein Ereignis wurde abgebrochen, während ein blockierter Thread oder eine blockierte Fiber darauf gewartet hat.
E_FAIL Es ist ein unbekannter katastrophaler Fehler aufgetreten. Wenn eine Methode E_FAIL zurückgibt, kann die CLR nicht mehr innerhalb des Prozesses verwendet werden. Nachfolgende Aufrufe von Hostingmethoden geben HOST_E_CLRNOTAVAILABLE zurück.
E_OUTOFMEMORY Es war nicht genügend Arbeitsspeicher verfügbar, um die Zuordnungsanforderung abzuschließen.

Bemerkungen

Sie reservieren einen Bereich im Adressraum Ihres Prozesses, indem Sie VirtualAlloc aufrufen. Der pAddress-Parameter enthält die Anfangsadresse des gewünschten Speicherblocks. Dieser Parameter ist in der Regel auf NULL festgelegt. Das Betriebssystem speichert eine Aufzeichnung der freien Adressbereiche, die für Ihren Prozess verfügbar sind. Der pAddress-Wert NULL weist das System an, den Bereich an einer beliebigen geeigneten Stelle zu reservieren. Alternativ können Sie eine bestimmte Startadresse für den Speicherblock angeben. In beiden Fällen wird der Ausgabeparameter ppMem als Zeiger auf den zugeordneten Arbeitsspeicher zurückgegeben. Die Funktion selbst gibt einen HRESULT-Wert zurück.

Die Win32-Funktion VirtualAlloc verfügt nicht über einen ppMem-Parameter und gibt stattdessen den Zeiger auf den zugeordneten Speicher zurück. Weitere Informationen finden Sie in der Dokumentation zur Windows-Plattform.

Anforderungen

Plattformen: Informationen finden Sie unter Systemanforderungen.

Header: MSCorEE.h

Bibliothek: Als Ressource in „MsCorEE.dll“ enthalten.

.NET Framework-Versionen: Seit 2.0 verfügbar.

Siehe auch