Heim > Backend-Entwicklung > C++ > Wie kann ich für Menschen lesbare Fehlermeldungen von Windows-API-Aufrufen abrufen?

Wie kann ich für Menschen lesbare Fehlermeldungen von Windows-API-Aufrufen abrufen?

Susan Sarandon
Freigeben: 2024-11-25 01:30:11
Original
120 Leute haben es durchsucht

How Can I Retrieve Human-Readable Error Messages from Windows API Calls?

Von Menschen lesbare Fehlermeldungen von Windows-API-Aufrufen abrufen

Bei der Interaktion mit der Windows-API ist es häufig erforderlich, die Fehlermeldung abzurufen, die einem von zurückgegebenen Fehlercode zugeordnet ist GetLastError(). Dieser Fehlercode ist ein ganzzahliger Wert und keine für Menschen lesbare Textnachricht.

Um den Fehlercode in eine Textform umzuwandeln, die für das Debuggen und die Fehlerbehebung nützlicher sein kann, kann das folgende Codefragment verwendet werden:

//Gibt den letzten Win32-Fehler im String-Format zurück. Gibt einen leeren String zurück, wenn kein Fehler vorliegt.<br>std::string GetLastErrorAsString()<br>{</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">//Get the error message ID, if any.
DWORD errorMessageID = ::GetLastError();
if(errorMessageID == 0) {
    return std::string(); //No error message has been recorded
}

LPSTR messageBuffer = nullptr;

//Ask Win32 to give us the string version of that message ID.
//The parameters we pass in, tell Win32 to create the buffer that holds the message for us (because we don't yet know how long the message string will be).
size_t size = FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
                             NULL, errorMessageID, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&amp;messageBuffer, 0, NULL);

//Copy the error message into a std::string.
std::string message(messageBuffer, size);

//Free the Win32's string's buffer.
LocalFree(messageBuffer);
        
return message;
Nach dem Login kopieren

}

Diese Funktion GetLastErrorAsString() versucht, die Fehlermeldung abzurufen, die dem letzten von der Windows-API aufgezeichneten Fehlercode zugeordnet ist. Zuerst wird die Fehlermeldungs-ID abgerufen und, falls gültig, mithilfe der FormatMessageA-Funktion in eine für Menschen lesbare Zeichenfolge konvertiert. Die Fehlermeldung wird in einem std::string-Objekt gespeichert und von der Funktion zurückgegeben. Wenn keine Fehlermeldung gefunden wird, wird ein leerer String zurückgegeben.

Das obige ist der detaillierte Inhalt vonWie kann ich für Menschen lesbare Fehlermeldungen von Windows-API-Aufrufen abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage