Comment obtenir la dernière erreur (WSAGetLastError)?
Comment dois-je appeler WSAGetLastError()
de WinAPI donc, je reçois le texte valide erreur?
OriginalL'auteur Ivan Prodanov | 2009-04-19
Vous devez vous connecter pour publier un commentaire.
Comment dois-je appeler WSAGetLastError()
de WinAPI donc, je reçois le texte valide erreur?
OriginalL'auteur Ivan Prodanov | 2009-04-19
Vous devez vous connecter pour publier un commentaire.
Aussi, sur pinvoke.net il est dit:
Système.Moment de l'exécution.InteropServices.Maréchal.GetLastWin32Error()
OriginalL'auteur abatishchev
WSAGetLastError
est juste un wrapper pour le Win32GetLastError
fonction.Si vous êtes en train de faire des choses avec P/Invoke, vous pouvez utiliser le
SetLastError
paramètre à laDllImport
attribut. Elle raconte .NET que la fonction importée va appelerSetLastError()
, et que la valeur doit être collectées.Si la fonction importée d'échec, vous pouvez obtenir à la dernière erreur avec
Marshal.GetLastWin32Error()
. Alternativement, vous pouvez simplementthrow new Win32Exception()
, qui utilise cette valeur automatiquement.Si vous ne faites pas les choses avec P/Invoke, vous êtes hors de la chance: il n'y a aucune garantie que la dernière valeur d'erreur seront conservés assez longtemps pour le faire revenir à travers plusieurs couches de .NET code. En fait, je vais le lien vers Adam Nathan: ne jamais définir un PInvoke signature pour GetLastError.
OriginalL'auteur Roger Lipscombe
Il ne fait pas beaucoup de sens d'appeler cette fonction à partir du code managé. Il est logique dans le code non managé parce que vous savez exactement dernière fonction Win32 qui a été appelé, de sorte que vous savez ce que la fonction doit avoir installé la dernière erreur. Dans le code managé, vous ne savez pas quelles fonctions ont été appelés.
Vous pourriez probablement utiliser P/Invoke pour appeler la fonction, il n'aurait tout simplement pas vous faire du bien. Qu'essayez-vous de réaliser?
OriginalL'auteur John Saunders
C'est de cette façon que j'ai vu sur le web pour mettre GetLastError en C# à l'exception mechanismand comment sortir de nouveau...
où ActivateDevice est ainsi défini:
OriginalL'auteur David Fort