IHostTaskManager::LeaveRuntime-Methode
Benachrichtigt den Host, dass die aktuell ausgeführte Aufgabe im Begriff ist, die Common Language Runtime (CLR) zu verlassen und in nicht verwalteten Code zu wechseln.
Wichtig
Ein entsprechender Aufruf von IHostTaskManager::EnterRuntime benachrichtigt den Host, dass die aktuell ausgeführte Aufgabe wieder in den verwalteten Code wechselt.
Syntax
HRESULT LeaveRuntime (
[in] SIZE_T target
);
Parameter
target
[in] Die Adresse der aufzurufenden nicht verwalteten Funktion in der zugeordneten portablen ausführbaren Datei.
Rückgabewert
HRESULT | BESCHREIBUNG |
---|---|
S_OK | LeaveRuntime 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. |
E_OUTOFMEMORY | Es ist nicht genügend Arbeitsspeicher verfügbar, um die angeforderte Zuordnung abzuschließen. |
Bemerkungen
Aufrufsequenzen an und von nicht verwaltetem Code können geschachtelt werden. In der folgenden Liste ist z. B. eine hypothetische Situation beschrieben, in der die Abfolge der Aufrufe LeaveRuntime
, IHostTaskManager::ReverseEnterRuntime, IHostTaskManager::ReverseLeaveRuntime und IHostTaskManager::EnterRuntime
es dem Host ermöglicht, die geschachtelten Ebenen zu identifizieren.
Aktion | Entsprechender Methodenaufruf |
---|---|
Eine verwaltete ausführbare Visual Basic-Datei ruft mithilfe eines Plattformaufrufs eine nicht verwaltete, in C geschriebene Funktion auf. | IHostTaskManager::LeaveRuntime |
Die nicht verwaltete C-Funktion ruft eine Methode in einer verwalteten DLL auf, die in C# geschrieben wurde. | IHostTaskManager::ReverseEnterRuntime |
Die verwaltete C#-Funktion ruft eine andere nicht verwaltete Funktion in C auf, die ebenfalls den Plattformaufruf verwendet. | IHostTaskManager::LeaveRuntime |
Die zweite nicht verwaltete Funktion gibt die Ausführung an die C#-Funktion zurück. | IHostTaskManager::EnterRuntime |
Die C#-Funktion gibt die Ausführung an die erste nicht verwaltete Funktion zurück. | IHostTaskManager::ReverseLeaveRuntime |
Die erste nicht verwaltete Funktion gibt die Ausführung an das Visual Basic-Programm zurück. | IHostTaskManager::EnterRuntime |
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.