DllImportAttribute.SetLastError Feld
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt an, ob der Aufgerufene einen Fehler (SetLastError
unter Windows oder errno
auf anderen Plattformen) festlegt, bevor er von der attributierten Methode zurückgibt.
public: bool SetLastError;
public bool SetLastError;
val mutable SetLastError : bool
Public SetLastError As Boolean
Feldwert
Beispiele
In einigen Fällen verwenden Visual Basic-Entwickler anstelle DllImportAttributeder Declare
-Anweisung, um eine DLL-Funktion in verwaltetem Code zu definieren. Das Festlegen des SetLastError Felds ist einer dieser Fälle.
[DllImport("user32.dll", SetLastError = true)]
int MessageBoxA(IntPtr hWnd, String^ Text,
String^ Caption, unsigned int Type);
internal static class NativeMethods
{
[DllImport("user32.dll", SetLastError = true)]
internal static extern int MessageBoxA(
IntPtr hWnd, string lpText, string lpCaption, uint uType);
}
Friend Class NativeMethods
<DllImport("user32.dll", SetLastError:=True)>
Friend Shared Function MessageBoxA(hWnd As IntPtr, lpText As String,
lpCaption As String, uType As UInteger) As Integer
End Function
End Class
Hinweise
true
, um anzugeben, dass der Angerufene einen Fehler über unter SetLastError
Windows oder errno
auf anderen Plattformen festlegen wird, false
andernfalls . Der Standardwert lautet false
.
Wenn dieses Feld auf true
festgelegt ist, ruft GetLastError
der Laufzeitmarsierer oder auf errno
und 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 festgelegt), 0
bevor der Aufgerufene aufgerufen wird, wenn dieses Feld auf true
festgelegt ist. Auf .NET Framework werden die Fehlerinformationen nicht gelöscht.
Dies bedeutet, dass von GetLastPInvokeError und GetLastWin32Error in .NET zurückgegebene Fehlerinformationen nur die Fehlerinformationen aus dem letzten p/invoke darstellen, wobei DllImportAttribute.SetLastError auf true
festgelegt ist. Auf .NET Framework können die Fehlerinformationen von einem p/aufruf zum nächsten beibehalten werden.
Gilt für:
Weitere Informationen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für