Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
CA1417: Använd
| Property | Värde | 
|---|---|
| Regel-ID | CA1417 | 
| Title | Använd inte OutAttributepå strängparametrar för P/Invokes | 
| Kategori | Samverkan | 
| Korrigeringen är icke-bakåtkompatibel | Icke-icke-bryta | 
| Aktiverad som standard i .NET 9 | Som varning | 
Orsak
En P/Invoke-strängparameter skickas av värdet och markeras med OutAttribute.
Regelbeskrivning
.NET-körningen utför automatiskt strängpraktik. Om en intern sträng som markerats med OutAttribute skickas av ett värde till en P/Invoke kan körningen destabiliseras.
Så här åtgärdar du överträdelser
Om det krävs att ändrad strängdata samlas tillbaka till anroparen skickar du strängen med referens i stället. Annars OutAttribute kan tas bort utan några andra ändringar.
 // Violation
[DllImport("MyLibrary")]
private static extern void Foo([Out] string s);
// Fixed: passed by reference
[DllImport("MyLibrary")]
private static extern void Foo(out string s);
// Fixed: marshalling data back to caller is not required
[DllImport("MyLibrary")]
private static extern void Foo(string s);
När du ska ignorera varningar
Det är inte säkert att ignorera en varning från den här regeln.