Partilhar via


Método IHostTaskManager::CallNeedsHostHook

Permite ao anfitrião especificar se o runtime de idioma comum (CLR) pode inline a chamada especificada para uma função não gerida.

Sintaxe

HRESULT CallNeedsHostHook (  
    [in]  SIZE_T target,
    [out] BOOL   *pbCallNeedsHostHook  
);  

Parâmetros

target
[in] O endereço no ficheiro executável portátil (PE) mapeado da função não gerida que deve ser chamada.

pbCallNeedsHostHook
[fora] Um ponteiro para um valor booleano que indica se o anfitrião necessita que a chamada seja ligada.

Devolver Valor

HRESULT Description
S_OK CallNeedsHostHook devolvido com êxito.
HOST_E_CLRNOTAVAILABLE O CLR não foi carregado para um processo ou o CLR está num estado em que não pode executar código gerido ou processar a chamada com êxito.
HOST_E_TIMEOUT A chamada excedeu o limite de tempo.
HOST_E_NOT_OWNER O autor da chamada não é o proprietário do bloqueio.
HOST_E_ABANDONED Um evento foi cancelado enquanto um thread ou fibra bloqueado estava à espera do mesmo.
E_FAIL Ocorreu uma falha catastrófica desconhecida. Quando um método devolve E_FAIL, o CLR já não é utilizável no processo. As chamadas subsequentes para métodos de alojamento devolvem HOST_E_CLRNOTAVAILABLE.

Observações

Para ajudar a otimizar a execução de código, o CLR efetua uma análise de cada chamada de invocação da plataforma durante a compilação para determinar se a chamada pode ser indicada. CallNeedsHostHook permite que o anfitrião substitua essa decisão ao exigir que uma chamada para uma função não gerida seja ligada. Se o anfitrião precisar de um gancho, o runtime não inline a chamada.

Normalmente, o anfitrião necessita de um gancho onde tem de ajustar um estado de vírgula flutuante ou após receber a notificação de que uma chamada está a entrar num estado em que o anfitrião não consegue controlar os pedidos de memória do runtime ou quaisquer bloqueios efetuadas. Quando o anfitrião requer que a chamada seja ligada, o runtime notifica o anfitrião de transições de e para o código gerido através de chamadas para EnterRuntime, LeaveRuntime, ReverseEnterRuntime e ReverseLeaveRuntime.

Requisitos

Plataformas: Veja Requisitos do Sistema.

Cabeçalho: MSCorEE.h

Biblioteca: Incluído como um recurso no MSCorEE.dll

.NET Framework Versões: Disponível desde 2.0

Ver também