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.