Abrufen des Windows System Error Code-Titels / der Beschreibung von seiner Hex-Nummer
Ich bin Herumspielen mit irgendeinem windows-Funktionen, die mithilfe von p/invoke. Gelegentlich bekomme ich einen Fehler-code, der nicht ERROR_SUCCESS (so ein seltsamer name).
Gibt es eine Möglichkeit zu suchen, diese bis in das Programm? Forexample, wenn ich erhalten den Fehler " 1017. Kann ich dem Benutzer sagen
Versucht wurde zu laden oder
wiederherstellen einer Datei in der registry, aber
die angegebene Datei ist nicht in einem
registry-Datei-format.
(ERROR_NOT_REGISTRY_FILE: 0x3F9)
Statt
Fehler-Code: 1017
InformationsquelleAutor der Frage Malfist | 2009-10-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin mir nicht sicher ob es eine niifty .NET wrapper, aber Sie können rufen Sie die FormatMessage-API, die mithilfe von P/Invoke.
Sehen diese Antwortwie es normalerweise der Aufruf von nativem code. Obwohl die Frage bezieht sich auf grabbing-Fehler-codes von HRESULTs, die Antwort gilt auch für das empfangen von codes, die von der regulären OS-Fehler-codes aus GetLastError/GetLastWin32Error).
EDIT: Danke Malfist für den Hinweis mich zu pinvoke.net, die mit alternativen, managed API:
InformationsquelleAutor der Antwort Nick Meyer
Können Sie definiert von winerror.h bei Rensselaer Polytechnic Instituteund setzen Sie Sie in eine Enum:
Dann, wenn Sie Ihre Fehler-code in einer variable error_codedie Sie verwenden würden :
InformationsquelleAutor der Antwort flapster
Landete ich auf dieser Seite, während auf der Suche nach einem managed alternative zum aufrufen von FormatMessage durch P/Invoke.
Wie schon andere gesagt haben, es gibt keinen Weg, um diese groß geschrieben wird, Unterstrichen Namen, kurz, Suche Sie in winerror.h, die ich gesehen habe, reproduziert im Internet an verschiedenen stellen, wo ich gelandet bin im Zuge der Suche nach Informationen über die Behebung spezifischer status-codes. Eine schnelle Google-Suche für winerror.h, sich, entdeckt eine Seite, auf Rensselaer Polytechnic Instututewo jemand hilfsbereit extrahiert die #define-Anweisungen aus.
Suche an, es gab mir eine Idee; ich glaube, es gibt einen Weg, um dorthin zu gelangen, arbeiten aus dem source-code von winerror.h, die ich, als Teil der Windows Platform SDK, dass Schiffe, die mit jedem neueren version von Microsoft Visual Studio.
Gerade jetzt, ich bin mitten im Sortieren, ein drängendes Problem in der .NET-assembly, brachte mich zu dieser Seite. Dann werde ich sehen, was ich zusammenbasteln; diese Art von Herausforderung ist genau mein Ding, und jemand warf ein Spießrutenlauf.
InformationsquelleAutor der Antwort David A. Gray
Ja, es ist eine Funktion, die das tut, aber ich kann mich nicht erinnern, was es ist. In der Zwischenzeit können Sie das error lookup tool (Extras->Error Lookup), um zu sehen, was ein bestimmter code bedeutet aus innerhalb von Visual Studio.
InformationsquelleAutor der Antwort Jon Norton