Sto scherzando con alcune funzioni di Windows usando p/invoke. Occasionalmente, ricevo un codice di errore che non è ERROR_SUCCESS (un nome strano).Ottenere il codice di errore del sistema Windows titolo/descrizione dal suo numero esadecimale
C'è un modo per cercare questi all'interno del programma? Peresempio, se ottengo l'errore 1017. Posso dire all'utente
Il sistema ha tentato di caricare o ripristinare un file nel Registro di sistema, ma il file specificato non è in un formato di file Registro di sistema. (ERROR_NOT_REGISTRY_FILE: 0x3F9)
Invece di
Codice errore: 1017
http: //www.pinvoke. net/default.aspx/kernel32/FormatMessage.html dice di non usare mai FormatMessage – Malfist
@Malfist, grazie per averlo indicato. C'è una risposta che dice che va bene finché usi Marshal.GetLastWin32Error per recuperare il codice di errore. Nondimeno, sembra che Win32Exception sia una soluzione migliore. –
Si noti, tuttavia, che entrambe queste soluzioni ricevono solo il messaggio di errore descrittivo; nessuno di questi ti porterà il nome dell'errore in maiuscolo con caratteri di sottolineatura che vedi nella documentazione (come ** ERROR_NOT_REGISTRY_FILE **). Per chiunque approdi qui e se ne stia chiedendo, di recente ho chiesto [una domanda specifica su come determinare a livello di programmazione quei nomi di errore] (http://stackoverflow.com/q/30203717/1248365), e la risposta è risultata essere che non puoi Si riferiscono ai nomi costanti di winerror.h, un file di inclusione del C++ fornito in Windows SDK. –