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 Angerufene einen Fehler (SetLastError auf Windows oder errno auf anderen Plattformen) festlegt, bevor sie von der attributierenden Methode zurückgegeben werden.
public: bool SetLastError;
public bool SetLastError;
val mutable SetLastError : bool
Public SetLastError As Boolean
Feldwert
Beispiele
In einigen Fällen verwenden Visual Basic Entwickler die DllImportAttribute anstelle der 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 SetLastError auf Windows oder errno auf anderen Plattformen festgelegt, andernfalls false. Der Standardwert lautet false.
Wenn dieses Feld auf true festgelegt ist, ruft GetLastError der Laufzeitmarsaler den zurückgegebenen Wert auf oder errno speichert ihn zwischen, um zu verhindern, dass es von anderen API-Aufrufen überschrieben wird.
Sie können den Fehlercode abrufen, indem Sie GetLastPInvokeError für .NET 6.0 und höher oder GetLastWin32Error für .NET 5 und darunter oder .NET Framework aufrufen.
Bei .NET werden die Fehlerinformationen gelöscht (auf 0 festgelegt), bevor der Angerufene aufgerufen wird, wenn dieses Feld auf true festgelegt ist. Im .NET Framework werden die Fehlerinformationen nicht gelöscht.
Dies bedeutet, dass fehlerinformationen, die von GetLastPInvokeError und GetLastWin32Error für .NET zurückgegeben werden, nur die Fehlerinformationen aus dem letzten p/invoke darstellen, wobei DllImportAttribute.SetLastError auf true festgelegt ist. In .NET Framework können die Fehlerinformationen von einem P/Aufruf zum nächsten beibehalten werden.