Compartilhar via


Método IHostMemoryManager::VirtualAlloc

Serve como um wrapper lógico para a função Win32 correspondente. A implementação win32 de VirtualAlloc reserva ou confirma uma região de páginas no espaço de endereço virtual do processo de chamada.

Sintaxe

HRESULT VirtualAlloc (  
    [in]  void*   pAddress,  
    [in]  SIZE_T  dwSize,  
    [in]  DWORD   flAllocationType,  
    [in]  DWORD   flProtect,  
    [in]  EMemoryCriticalLevel dwCriticalLevel,  
    [out] void**  ppMem  
);  

Parâmetros

pAddress
[in] Um ponteiro para o endereço inicial da região a ser alocada.

dwSize
[in] O tamanho, em bytes, da região.

flAllocationType
[in] O tipo de alocação de memória

flProtect
[in] Proteção de memória para a região das páginas a serem alocadas.

dwCriticalLevel
[in] Um valor EMemoryCriticalLevel que indica o impacto de uma falha de alocação.

ppMem
[out] Ponteiro para o endereço inicial da memória alocada ou nulo se a solicitação não puder ser atendida.

Valor Retornado

HRESULT Descrição
S_OK VirtualAlloc retornado com êxito.
HOST_E_CLRNOTAVAILABLE O CLR (Common Language Runtime) não foi carregado em um processo ou está em um estado no qual não pode executar o código gerenciado ou processar a chamada com sucesso.
HOST_E_TIMEOUT Uma chamada atingiu o tempo limite.
HOST_E_NOT_OWNER O chamador não possui o bloqueio.
HOST_E_ABANDONED Um evento foi cancelado enquanto uma fibra ou um thread bloqueado estava esperando por ele.
E_FAIL Uma falha catastrófica desconhecida ocorreu. Quando um método retorna E_FAIL, o CLR não pode mais ser usado no processo. Chamadas subsequentes para métodos de hospedagem retornam HOST_E_CLRNOTAVAILABLE.
E_OUTOFMEMORY Não havia memória suficiente disponível para concluir a solicitação de alocação

Comentários

Você reserva uma região no espaço de endereço do processo chamando VirtualAlloc. O parâmetro pAddress contém o endereço inicial do bloco de memória desejado. Normalmente, esse parâmetro é definido como nulo. O sistema operacional mantém um registro de intervalos de endereços gratuitos disponíveis para o processo. Um valor pAddress nulo instrui o sistema a reservar a região onde quer que ela se ajuste. Como alternativa, você pode fornecer um endereço inicial específico para o bloco de memória. Em ambos os casos, o parâmetro de saída ppMem é retornado como um ponteiro para a memória alocada. A função em si retorna um valor HRESULT.

A função Win32 VirtualAlloc não tem um parâmetro ppMem e retorna o ponteiro para a memória alocada. Para obter mais informações, confira a documentação da plataforma Windows.

Requisitos

Plataformas: confira Requisitos do sistema.

Cabeçalho: MSCorEE.h

Biblioteca: incluída como um recurso no MSCorEE.dll

Versões do .NET Framework: disponíveis desde 2.0

Confira também