Condividi tramite


Metodo IHostTaskManager::CallNeedsHostHook

Consente all'host di specificare se Common Language Runtime (CLR) può inline la chiamata specificata a una funzione non gestita.

Sintassi

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

Parametri

target
[in] Indirizzo all'interno del file PE (Portable Executable) mappato della funzione non gestita da chiamare.

pbCallNeedsHostHook
[out] Puntatore a un valore booleano che indica se l'host richiede l'associazione della chiamata.

Valore restituito

HRESULT Descrizione
S_OK CallNeedsHostHook restituito correttamente.
HOST_E_CLRNOTAVAILABLE CLR non è stato caricato in un processo oppure CLR si trova in uno stato in cui non può eseguire codice gestito o elaborare correttamente la chiamata.
HOST_E_TIMEOUT Timeout della chiamata.
HOST_E_NOT_OWNER Il chiamante non possiede il blocco.
HOST_E_ABANDONED Un evento è stato annullato durante l'attesa di un thread o di una fibra bloccata.
E_FAIL Si è verificato un errore irreversibile sconosciuto. Quando un metodo restituisce E_FAIL, CLR non è più utilizzabile all'interno del processo. Le chiamate successive ai metodi di hosting restituiscono HOST_E_CLRNOTAVAILABLE.

Commenti

Per ottimizzare l'esecuzione del codice, CLR esegue un'analisi di ogni chiamata platform invoke durante la compilazione per determinare se la chiamata può essere inlined. CallNeedsHostHook consente all'host di eseguire l'override di tale decisione richiedendo l'associazione di una chiamata a una funzione non gestita. Se l'host richiede un hook, il runtime non è inline alla chiamata.

L'host richiede in genere un hook in cui deve regolare uno stato a virgola mobile o quando riceve una notifica che una chiamata entra in uno stato in cui l'host non può tenere traccia delle richieste di memoria del runtime o di eventuali blocchi eseguiti. Quando l'host richiede l'hook della chiamata, il runtime invia una notifica all'host delle transizioni da e verso il codice gestito tramite chiamate a EnterRuntime, LeaveRuntime, ReverseEnterRuntime e ReverseLeaveRuntime.

Requisiti

Piattaforme: vedere Requisiti di sistema di .NET Framework.

Intestazione: MSCorEE.h

Libreria: Incluso come risorsa in MSCorEE.dll

Versioni di .NET Framework: Disponibile dalla versione 2.0

Vedi anche