Megosztás a következőn keresztül:


CA1417: P/Invokes sztringparamétereken nem használható OutAttribute

Tulajdonság Érték
Szabályazonosító CA1417
Cím Ne használjon OutAttribute sztringparamétereket a P/Invokes esetében
Kategória Együttműködési lehetőség
A javítás kompatibilitástörő vagy nem törik Nem törés
Alapértelmezés szerint engedélyezve a .NET 9-ben Figyelmeztetésként

Ok

A P/Invoke sztringparamétert az érték adja át, és a következővel OutAttributevan megjelölve: .

Szabály leírása

A .NET-futtatókörnyezet automatikusan végrehajtja a sztringek közötti internálást. Ha egy beosztott sztringet OutAttribute az érték átad egy P/Invoke-nek, a futtatókörnyezet destabilizálható.

Szabálysértések kijavítása

Ha a módosított sztringadatok visszarendezésére van szükség a hívónak, adja át a sztringet hivatkozással. Ellenkező esetben a OutAttribute többi módosítás nélkül is eltávolítható.

 // 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);

Mikor kell letiltani a figyelmeztetéseket?

A szabály figyelmeztetésének mellőzése nem biztonságos.

Lásd még