Estoy jugando con algunas funciones de Windows usando p/invoke. Ocasionalmente, obtengo un código de error que no es ERROR_SUCCESS (un nombre tan extraño).Obteniendo el título/descripción del código de error del sistema de Windows desde su número hexadecimal
¿Hay alguna manera de buscar esto dentro del programa? Porejemplo, si me da error 1017. ¿Puedo decirle al usuario
El sistema ha intentado cargar o restaurar un archivo en el registro, pero el archivo especificado no está en un formato de archivo registro. (ERROR_NOT_REGISTRY_FILE: 0x3F9)
En lugar de
Código de error: 1017
http: //www.pinvoke. net/default.aspx/kernel32/FormatMessage.html Dice que nunca debe usar FormatMessage – Malfist
@Malfist, gracias por señalarlo. Hay una respuesta que dice que está bien, siempre y cuando esté usando Marshal.GetLastWin32Error para recuperar el código de error. No obstante, parece que Win32Exception es una mejor solución. –
Sin embargo, tenga en cuenta que estas dos soluciones solo reciben el mensaje de error descriptivo; ninguno de estos le dará el nombre del error en mayúscula con subrayado que se ve en la documentación (como ** ERROR_NOT_REGISTRY_FILE **). Para cualquiera que aterrice aquí y se pregunte sobre eso, recientemente le pregunté [una pregunta específica sobre cómo determinar por programación esos nombres de error] (http://stackoverflow.com/q/30203717/1248365), y la respuesta resultó ser que no puedes Se refieren a nombres constantes de winerror.h, un archivo incluido C++ proporcionado en el SDK de Windows. –