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.