Ich kenne das HRESULT_FROM_WIN32
Makro, um einen Win32-Fehlercode in ein HRESULT zu konvertieren, gibt es eine Möglichkeit, die Konvertierung ab einem errno
Fehler zu tun?Gibt es in Windows eine Möglichkeit, ein Errno in ein HRESULT zu konvertieren?
Antwort
Kurz gesagt, nein.
Ab http://msdn.microsoft.com/en-us/library/5814770t%28v=vs.100%29.aspx
Die errno Werte sind Konstanten zugewiesen im Falle verschiedenen Fehlerbedingungen errno.
ERRNO.H enthält die Definitionen der Fehlernummern. Jedoch werden nicht alle die in ERRNO.H angegebenen Definitionen in 32-Bit-Windows-Betriebssystem Systemen verwendet. Einige der Werte in ERRNO.H sind vorhanden, um Kompatibilität mit der UNIX-Familie von Betriebssystemen aufrechtzuerhalten.
Die Fehlernummern in einem 32-Bit-Windows-Betriebssystem sind eine Teilmenge von die Werte für errno in XENIX-Systemen. So ist der errno Wert nicht notwendigerweise der gleiche wie der tatsächliche Fehlercode, der von einem System Aufruf von den Windows-Betriebssystemen zurückgegeben wird. Verwenden Sie die _doserrno-Variable, die diesen Wert enthält, um auf den tatsächlichen Betriebssystemfehlercode zuzugreifen.
Natürlich können Sie Ihre eigene Funktion mit Schalter-Fällen schreiben, die Fehlercodes "übersetzen".
Sie können sehen, dass etwa 80 Fehlernummern in Windows definiert sind.
Also, zumindest für die Werte, die Windows ausgibt, können Sie den Systemfehlercode erhalten, indem Sie einfach '_doserrno' überprüfen, und Sie könnten ein HRESULT mit' HRESULT_FROM_WIN32 (_doserrno) 'bekommen? Ausgezeichnet. – CBHacking