<NetFx40_PInvokeStackResilience>-Element

Gibt an, ob die Runtime falsche Plattformaufrufdeklarationen zur Laufzeit automatisch korrigiert. Dies führt zu langsameren Übergängen zwischen verwaltetem und nicht verwaltetem Code.

<configuration>
  <runtime>
    <NetFx40_PInvokeStackResilience>

Syntax

<NetFx40_PInvokeStackResilience  enabled="1|0"/>

Attribute und Elemente

In den folgenden Abschnitten werden Attribute sowie untergeordnete und übergeordnete Elemente beschrieben.

Attribute

attribute Beschreibung
enabled Erforderliches Attribut.

Gibt an, ob die Runtime falsche Plattformaufrufdeklarationen erkennt und den Stapel automatisch zur Runtime auf 32-Bit-Plattformen korrigiert.

Enabled-Attribut

Wert BESCHREIBUNG
0 Die Runtime verwendet die schnellere Interop-Marshallingarchitektur, die im .NET Framework 4 eingeführt wurde, wodurch falsche Plattformaufrufdeklarationen nicht erkannt und behoben werden. Dies ist die Standardeinstellung.
1 Die Runtime verwendet langsamere Übergänge, die falsche Plattformaufrufdeklarationen erkennen und beheben.

Untergeordnete Elemente

Keine

Übergeordnete Elemente

Element BESCHREIBUNG
configuration Das Stammelement in jeder von den Common Language Runtime- und .NET Framework-Anwendungen verwendeten Konfigurationsdatei.
runtime Enthält Informationen über Laufzeitinitialisierungsoptionen.

Bemerkungen

Mit diesem Element können Sie schnelleres Interop-Marshalling für Runtimeresilienz gegen falsche Plattformaufrufdeklarationen handeln.

Ab dem .NET Framework 4 bietet eine optimierte Interop-Marshallingarchitektur eine erhebliche Leistungsverbesserung für den Übergang von verwaltetem Code zu nicht verwaltetem Code. In früheren Versionen von .NET Framework hat die Marshallingschicht falsche Plattformaufrufdeklarationen auf 32-Bit-Plattformen erkannt und den Stapel automatisch korrigiert. In der neuen Marshallingarchitektur gibt es diesen Schritt nicht mehr. Folglich sind die Übergänge sehr schnell, doch eine falsche Plattformaufrufdeklaration kann zu einem Programmfehler führen.

Um die Erkennung falscher Deklarationen während der Entwicklung zu vereinfachen, wurde die Visual Studio-Debugfunktion verbessert. Der Managed Debugging Assistant (MDA) pInvokeStackImbalance benachrichtigt Sie über falsche Plattformaufrufdeklarationen, wenn Ihre Anwendung mit angefügtem Debugger ausgeführt wird.

Für Szenarien, in denen Ihre Anwendung Komponenten verwendet, die Sie nicht neu kompilieren können und die falsche Plattformaufrufdeklarationen aufweisen, können Sie das NetFx40_PInvokeStackResilience-Element verwenden. Wenn Sie dieses Element ihrer Anwendungskonfigurationsdatei mit enabled="1" hinzufügen, wird ein Kompatibilitätsmodus mit dem Verhalten früherer Versionen von .NET Framework zu Lasten langsamerer Übergänge aktiviert. Assemblys, die für frühere Versionen von .NET Framework kompiliert wurden, werden automatisch für diesen Kompatibilitätsmodus aktiviert und benötigen dieses Element nicht.

Konfigurationsdatei

Dieses Element kann nur in der Anwendungskonfigurationsdatei verwendet werden.

Beispiel

Das folgende Beispiel zeigt, wie Sie sich für eine Anwendung mit höherer Resilienz gegen falsche Plattformaufrufdeklarationen entscheiden können, was jedoch zu langsameren Übergängen zwischen verwaltetem und nicht verwaltetem Code führt.

<configuration>
   <runtime>
      <NetFx40_PInvokeStackResilience enabled="1"/>
   </runtime>
</configuration>

Siehe auch