Método IHostTaskManager::LeaveRuntime
Notifica o host de que a tarefa atualmente em execução está prestes a sair do Common Language Runtime (CLR) e inserir código não gerenciado.
Importante
Uma chamada correspondente para IHostTaskManager::EnterRuntime notifica o host de que a tarefa atualmente em execução está reinserindo o código gerenciado.
Sintaxe
HRESULT LeaveRuntime (
[in] SIZE_T target
);
Parâmetros
target
[in] O endereço dentro do arquivo executável portátil mapeado da função não gerenciada a ser chamada.
Valor Retornado
HRESULT | Descrição |
---|---|
S_OK | LeaveRuntime retornado com êxito. |
HOST_E_CLRNOTAVAILABLE | O CLR não foi carregado em um processo, ou o CLR está em um estado no qual não pode executar código gerenciado ou processar a chamada com êxito. |
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 alocação solicitada. |
Comentários
As sequências de chamadas de e para código não gerenciado podem ser aninhadas. Por exemplo, a lista abaixo descreve uma situação hipotética na qual a sequência de chamadas para LeaveRuntime
, IHostTaskManager::ReverseEnterRuntime , IHostTaskManager::ReverseLeaveRuntime e IHostTaskManager::EnterRuntime
permite que o host identifique as camadas aninhadas.
Ação | Chamada de método correspondente |
---|---|
Um executável gerenciado do Visual Basic chama uma função não gerenciada escrita em C usando invocação de plataforma. | IHostTaskManager::LeaveRuntime |
A função C não gerenciada chama um método em uma DLL gerenciada escrita em C#. | IHostTaskManager::ReverseEnterRuntime |
A função C# gerenciada chama outra função não gerenciada escrita em C, também usando invocação de plataforma. | IHostTaskManager::LeaveRuntime |
A segunda função não gerenciada retorna a execução para a função C#. | IHostTaskManager::EnterRuntime |
A função C# retorna a execução para a primeira função não gerenciada. | IHostTaskManager::ReverseLeaveRuntime |
A primeira função não gerenciada retorna a execução para o programa Visual Basic. | IHostTaskManager::EnterRuntime |
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