IHostMemoryManager::VirtualAlloc — Metoda
Służy jako logiczna otoka dla odpowiedniej funkcji Win32. Implementacja VirtualAlloc
win32 rezerw lub zatwierdza region stron w wirtualnej przestrzeni adresowej procesu wywołującego.
Składnia
HRESULT VirtualAlloc (
[in] void* pAddress,
[in] SIZE_T dwSize,
[in] DWORD flAllocationType,
[in] DWORD flProtect,
[in] EMemoryCriticalLevel dwCriticalLevel,
[out] void** ppMem
);
Parametry
pAddress
[w] Wskaźnik do adresu początkowego regionu do przydzielenia.
dwSize
[w] Rozmiar w bajtach regionu.
flAllocationType
[w] Typ alokacji pamięci.
flProtect
[w] Ochrona pamięci dla regionu stron do przydzielenia.
dwCriticalLevel
[w] Wartość EMemoryCriticalLevel wskazująca wpływ awarii alokacji.
ppMem
[out] Wskaż adres początkowy przydzielonej pamięci lub wartość null, jeśli żądanie nie może być spełnione.
Wartość zwracana
HRESULT | Opis |
---|---|
S_OK | VirtualAlloc zwrócono pomyślnie. |
HOST_E_CLRNOTAVAILABLE | Środowisko uruchomieniowe języka wspólnego (CLR) nie zostało załadowane do procesu lub CLR jest w stanie, w którym nie może uruchomić kodu zarządzanego ani pomyślnie przetworzyć wywołania. |
HOST_E_TIMEOUT | Upłynął limit czasu wywołania. |
HOST_E_NOT_OWNER | Obiekt wywołujący nie jest właścicielem blokady. |
HOST_E_ABANDONED | Zdarzenie zostało anulowane, gdy zablokowany wątek lub światłowod czekał na nie. |
E_FAIL | Wystąpił nieznany katastrofalny błąd. Gdy metoda zwraca E_FAIL, clR nie będzie już można używać w ramach tego procesu. Kolejne wywołania metod hostingu zwracają HOST_E_CLRNOTAVAILABLE. |
E_OUTOFMEMORY | Za mało pamięci było dostępne, aby ukończyć żądanie alokacji |
Uwagi
Region należy zarezerwować w przestrzeni adresowej procesu przez wywołanie metody VirtualAlloc
. Parametr pAddress
zawiera początkowy adres żądanego bloku pamięci. Ten parametr jest zwykle ustawiony na wartość null. System operacyjny przechowuje rekord wolnych zakresów adresów dostępnych dla procesu. pAddress
Wartość null nakazuje systemowi rezerwowanie regionu wszędzie tam, gdzie jest ona widoczna. Alternatywnie można podać określony adres początkowy bloku pamięci. W obu przypadkach parametr ppMem
wyjściowy jest zwracany jako wskaźnik do przydzielonej pamięci. Sama funkcja zwraca wartość HRESULT.
Funkcja Win32 VirtualAlloc
nie ma parametru ppMem
i zwraca wskaźnik do przydzielonej pamięci. Aby uzyskać więcej informacji, zobacz dokumentację platformy systemu Windows.
Wymagania
Platformy: Zobacz Wymagania systemowe.
Nagłówka: MSCorEE.h
Biblioteki: Uwzględnione jako zasób w MSCorEE.dll
.NET Framework wersje: dostępne od wersji 2.0