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)&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;
}
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!