How to get last error (WSAGetLastError)?
Wie rufe ich WSAGetLastError()
aus der WinAPI, so bekomme ich die gültigen text Fehler?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie rufe ich WSAGetLastError()
aus der WinAPI, so bekomme ich die gültigen text Fehler?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Auch, auf pinvoke.net es sagte:
System.- Laufzeit.InteropServices.Marschall.GetLastWin32Error()
WSAGetLastError
ist nur ein wrapper für die Win32 -GetLastError
Funktion.Wenn Sie Dinge, die Sie mit P/Invoke verwenden, können Sie die
SetLastError
parameter derDllImport
Attribut. Es teilt .NET, dass die importierte Funktion rufenSetLastError()
, und dass der Wert erfasst werden sollten.Wenn die importierte Funktion fehlschlägt, erhalten Sie auf der letzten Fehler mit
Marshal.GetLastWin32Error()
. Alternativ können Sie nurthrow new Win32Exception()
verwendet diesen Wert automatisch.Wenn Sie nicht Dinge, die Sie mit P/Invoke, sind Sie aus Glück heraus: es gibt keine Garantie, dass der Letzte Fehler-Wert wird beibehalten, die lange genug, um es zurück durch mehrere Schichten .NET-code. In der Tat, ich werde den link zu Adam Nathan: nie definieren einen PInvoke-Signatur für GetLastError.
Es macht nicht sehr viel Sinn zu rufen, dass die Funktion in verwaltetem code. Macht es Sinn, die in nicht verwaltetem code, da Sie wissen, den genauen Letzte Win32-Funktion, die aufgerufen wurde, damit Sie wissen, welche Funktion muss über den letzten Fehler. In verwaltetem code, die Sie nicht wissen, welche Funktionen aufgerufen wurden.
Wahrscheinlich könnten Sie mit P/Invoke zum Aufruf der Funktion; es würde dir nicht gut. Was versuchen Sie zu erreichen?
Dies ist, wie ich sah auf das web zu setzen GetLastError in den C# - Ausnahme mechanismand, wie man es wieder heraus...
wo ActivateDevice ist so definiert: