DllImportAttribute.SetLastError Feld

Definition

Gibt an, ob der Aufgerufene einen Fehler (SetLastError unter Windows oder errno auf anderen Plattformen) festlegt, bevor er von der attributierten Methode zurückgibt.

C#
public bool SetLastError;

Feldwert

Beispiele

In einigen Fällen verwenden Visual Basic-Entwickler anstelle der DllImportAttributeDeclare -Anweisung, um eine DLL-Funktion in verwaltetem Code zu definieren. Das Festlegen des SetLastError Felds ist einer dieser Fälle.

C#
internal static class NativeMethods
{
    [DllImport("user32.dll", SetLastError = true)]
    internal static extern int MessageBoxA(
        IntPtr hWnd, string lpText, string lpCaption, uint uType);
}

Hinweise

true , um anzugeben, dass der Angerufene einen Fehler über unter SetLastError Windows oder errno auf anderen Plattformen festlegen wird, falseandernfalls . Der Standardwert lautet false.

Wenn dieses Feld auf truefestgelegt ist, ruft GetLastError der Laufzeitmarschaller oder auf und errno speichert den zurückgegebenen Wert zwischen, um zu verhindern, dass er durch andere API-Aufrufe überschrieben wird. Sie können den Fehlercode abrufen, indem Sie unter .NET 6.0 und höher oder GetLastWin32Error unter .NET 5 und niedriger oder .NET Framework aufrufenGetLastPInvokeError.

In .NET werden die Fehlerinformationen gelöscht (auf 0festgelegt), bevor der Aufgerufene aufgerufen wird, wenn dieses Feld auf truefestgelegt ist. Unter .NET Framework werden die Fehlerinformationen nicht gelöscht. Dies bedeutet, dass fehlerinformationen, die von GetLastPInvokeError und GetLastWin32Error in .NET zurückgegeben werden, nur die Fehlerinformationen aus dem letzten p/invoke darstellen, wobei DllImportAttribute.SetLastError auf festgelegt ist true. Unter .NET Framework können die Fehlerinformationen von einem p/aufruf zum nächsten beibehalten werden.

Gilt für:

Produkt Versionen
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Weitere Informationen