Teilen über


IHostTaskManager::CallNeedsHostHook-Methode

Ermöglicht dem Host anzugeben, ob die Common Language Runtime (CLR) den angegebenen Aufruf einer nicht verwalteten Funktion inline schalten kann.

Syntax

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

Parameter

target
[in] Die Adresse der aufzurufenden nicht verwalteten Funktion in der zugeordneten portablen ausführbaren Datei.

pbCallNeedsHostHook
[out] Ein Zeiger auf einen booleschen Wert, der angibt, ob der Host einen Hook für den Aufruf erfordert.

Rückgabewert

HRESULT BESCHREIBUNG
S_OK CallNeedsHostHook wurde erfolgreich zurückgegeben.
HOST_E_CLRNOTAVAILABLE Die CLR wurde nicht in einen Prozess geladen, oder die CLR befindet sich in einem Zustand, in dem sie keinen verwalteten Code ausführen oder den Aufruf nicht erfolgreich verarbeiten kann.
HOST_E_TIMEOUT Timeout des Aufrufs.
HOST_E_NOT_OWNER Der Aufrufer besitzt die Sperre nicht.
HOST_E_ABANDONED Ein Ereignis wurde abgebrochen, während ein blockierter Thread oder eine blockierte Fiber darauf gewartet hat.
E_FAIL Es ist ein unbekannter katastrophaler Fehler aufgetreten. Wenn eine Methode E_FAIL zurückgibt, kann die CLR nicht mehr innerhalb des Prozesses verwendet werden. Nachfolgende Aufrufe von Hostingmethoden geben HOST_E_CLRNOTAVAILABLE zurück.

Bemerkungen

Um die Codeausführung zu optimieren, führt die CLR während der Kompilierung eine Analyse jedes Plattformaufrufs durch, um festzustellen, ob der Aufruf inline durchgeführt werden kann. CallNeedsHostHook ermöglicht es dem Host, diese Entscheidung außer Kraft zu setzen, indem er verlangt, dass ein Aufruf einer nicht verwalteten Funktion einen Hook erhält. Wenn der Host einen Hook erfordert, wird der Aufruf von der Runtime nicht inline ausgeführt.

Der Host benötigt in der Regel einen Hook, wenn er einen Gleitkommazustand anpassen muss, oder wenn er die Benachrichtigung erhält, dass ein Aufruf in einen Zustand wechselt, in dem der Host die Anforderungen der Runtime an den Arbeitsspeicher oder die vorgenommenen Sperren nicht nachverfolgen kann. Wenn der Host erfordert, dass der Aufruf einen Hook erhält, benachrichtigt die Runtime den Host über Übergänge zu und von verwaltetem Code mithilfe der Aufrufe EnterRuntime, LeaveRuntime, ReverseEnterRuntime und ReverseLeaveRuntime.

Anforderungen

Plattformen: Informationen finden Sie unter Systemanforderungen.

Header: MSCorEE.h

Bibliothek: Als Ressource in „MsCorEE.dll“ enthalten.

.NET Framework-Versionen: Seit 2.0 verfügbar.

Siehe auch