Conosco la macro HRESULT_FROM_WIN32
per convertire un codice di errore Win32 in un HRESULT, esiste un modo per eseguire la conversione a partire da un errore errno
?In Windows, c'è un modo per convertire un errno in un HRESULT?
risposta
In breve, no.
Al http://msdn.microsoft.com/en-us/library/5814770t%28v=vs.100%29.aspx
I valori errno sono costanti assegnati al errno in caso di diverse condizioni di errore.
ERRNO.H contiene le definizioni dei valori errno. Tuttavia, non tutte le le definizioni fornite in ERRNO.H sono utilizzate in Windows a 32 bit che funziona con i sistemi . Alcuni dei valori in ERRNO.H sono presenti per mantenere la compatibilità con la famiglia UNIX di sistemi operativi.
I valori errno in un sistema operativo Windows a 32 bit sono un sottoinsieme di i valori per errno nei sistemi XENIX. Pertanto, il valore errno non è necessariamente uguale al codice di errore effettivo restituito da una chiamata di sistema dai sistemi operativi Windows. Per accedere al codice di errore del sistema operativo attuale , utilizzare la variabile _doserrno, che contiene .
Naturalmente è possibile scrivere la propria funzione con casi di commutazione che "traducono" i codici di errore.
Si può vedere che ci sono circa 80 valori errno definiti su Windows.
Quindi, almeno per i valori che Windows emetterà, è possibile ottenere il codice di errore del sistema semplicemente controllando '_doserrno', e si potrebbe ottenere un HRESULT usando' HRESULT_FROM_WIN32 (_doserrno) '? Eccellente. – CBHacking