Dela via


<> NetFx40_PInvokeStackResilience element

Anger om körningen automatiskt åtgärdar felaktiga plattformsanropsdeklarationer vid körning, på bekostnad av långsammare övergångar mellan hanterad och ohanterad kod.

<Konfiguration>
  <Runtime>
    <NetFx40_PInvokeStackResilience>

Syntax

<NetFx40_PInvokeStackResilience  enabled="1|0"/>

Attribut och element

I följande avsnitt beskrivs attribut, underordnade element och överordnade element.

Attribut

Attribut Beskrivning
enabled Obligatoriskt attribut.

Anger om körningen identifierar felaktiga plattformsanropsdeklarationer och korrigerar stacken automatiskt vid körning på 32-bitarsplattformar.

aktiverat attribut

Värde Beskrivning
0 Körningen använder den snabbare interop marshalling-arkitekturen som introducerades i .NET Framework 4, som inte identifierar och åtgärdar felaktiga plattformsanropsdeklarationer. Det här är standardinställningen.
1 Körningen använder långsammare övergångar som identifierar och åtgärdar felaktiga plattformsanropsdeklarationer.

Underordnade element

Inga.

Överordnade element

Element Beskrivning
configuration Rotelementet i varje konfigurationsfil som används av common language runtime och .NET Framework program.
runtime Innehåller information om initieringsalternativ för körning.

Kommentarer

Med det här elementet kan du handla snabbare interop marshalling för körningsresiliens mot felaktiga plattformsanropsdeklarationer.

Från och med .NET Framework 4 ger en strömlinjeformad interop marshalling-arkitektur en betydande prestandaförbättring för övergångar från hanterad kod till ohanterad kod. I tidigare versioner av .NET Framework identifierade marshallinglagret felaktiga plattformsanropsdeklarationer på 32-bitarsplattformar och fixade automatiskt stacken. Den nya marshallarkitekturen eliminerar det här steget. Därför är övergångar mycket snabba, men en felaktig plattformsanropsdeklaration kan orsaka ett programfel.

För att göra det enkelt att identifiera felaktiga deklarationer under utvecklingen har felsökningsupplevelsen i Visual Studio förbättrats. Den hanterade felsökningsassistenten pInvokeStackImbalance (MDA) meddelar dig om felaktiga plattformsanropsdeklarationer när programmet körs med felsökningsprogrammet kopplat.

Om du vill hantera scenarier där ditt program använder komponenter som du inte kan kompilera om och som har felaktiga plattformsanropsdeklarationer kan du använda -elementet NetFx40_PInvokeStackResilience . Att lägga till det här elementet i programkonfigurationsfilen med enabled="1" opts i ett kompatibilitetsläge med beteendet för tidigare versioner av .NET Framework, på bekostnad av långsammare övergångar. Sammansättningar som har kompilerats mot tidigare versioner av .NET Framework väljs automatiskt i det här kompatibilitetsläget och behöver inte det här elementet.

Konfigurationsfil

Det här elementet kan endast användas i programkonfigurationsfilen.

Exempel

I följande exempel visas hur du väljer ökad motståndskraft mot felaktig plattform som anropar deklarationer för ett program, på bekostnad av långsammare övergångar mellan hanterad och ohanterad kod.

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

Se även