IHostTaskManager::CallNeedsHostHook-Methode
Ermöglicht es dem Host anzugeben, ob die CLR den angegebenen Aufruf einer nicht verwalteten Funktion in einen Inlineaufruf umwandeln kann.
HRESULT CallNeedsHostHook (
[in] SIZE_T target,
[out] BOOL *pbCallNeedsHostHook
);
Parameter
target
[in] Die Adresse innerhalb der zugeordneten PE-Datei (Portable Executable) der nicht verwalteten Funktion, die aufgerufen werden soll.pbCallNeedsHostHook
[out] Ein Zeiger auf einen booleschen Wert, der angibt, ob der Aufruf eine Hookfunktion für den Host aufweisen muss.
Rückgabewert
HRESULT |
Beschreibungen |
---|---|
S_OK |
CallNeedsHostHook erfolgreich zurückgegeben. |
HOST_E_CLRNOTAVAILABLE |
Die CLR wurde nicht in einen Prozess geladen oder befindet sich in einem Zustand, in dem sie weder verwalteten Code ausführen noch den Aufruf erfolgreich verarbeiten kann. |
HOST_E_TIMEOUT |
Der Aufruf hat das Zeitlimit überschritten. |
HOST_E_NOT_OWNER |
Der Aufrufer ist nicht Besitzer der Sperre. |
HOST_E_ABANDONED |
Ein Ereignis wurde abgebrochen, während ein blockierter Thread oder eine blockierte Fiber auf das Ereignis gewartet hat. |
E_FAIL |
Ein unbekannter, schwerwiegender Fehler ist aufgetreten. Wenn eine Methode E_FAIL zurückgibt, kann die CLR innerhalb des Prozesses nicht mehr verwendet werden. Nachfolgende Aufrufe von Hostmethoden geben HOST_E_CLRNOTAVAILABLE zurück. |
Hinweise
Um die Codeausführung zu optimieren, führt die CLR eine Analyse jedes Plattformaufrufs während der Kompilierung durch, um zu bestimmen, ob der Aufruf in einen Inlineaufruf umgewandelt werden kann. Mithilfe von CallNeedsHostHook kann der Host diese Entscheidung überschreiben, indem er vorgibt, dass ein Aufruf einer nicht verwalteten Funktion mit einem Hook versehen sein muss. Wenn der Host eine Hookfunktion erfordert, kann die Laufzeit den Aufruf nicht in einen Inlineaufruf umwandeln.
Der Host erfordert normalerweise eine Hookfunktion, wenn er einen Gleitkommazustand anpassen muss oder wenn er eine Benachrichtigung erhalten hat, dass ein Aufruf einen Zustand annimmt, in dem der Host die Anforderungen der Laufzeit in Bezug auf Arbeitsspeicher und angewendete Sperren nicht überwachen kann. Wenn der Aufruf für den Host mit einer Hookfunktion versehen sein muss, benachrichtigt die Laufzeit den Host über Übergänge in verwalteten und von verwaltetem Code, bei denen Aufrufe von EnterRuntime, LeaveRuntime, ReverseEnterRuntime und ReverseLeaveRuntime verwendet werden.
Anforderungen
Plattformen: siehe Systemanforderungen für .NET Framework.
Header: MSCorEE.h
Bibliothek: als Ressource in MSCorEE.dll enthalten
.NET Framework-Versionen: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0