У меня есть функция библиотеки, которая возвращает коды GetLastError (вещи, подобные этим). Мне нужно сравнить их с конкретными ошибками, например ERROR_INVALID_HANDLE
. Однако мне не очень удобно определять константы. Итак, вопрос в том, есть ли предопределенное перечисление для этой цели?
Есть ли перечисление кодов системных ошибок в .Net framework?
Ответ 1
Нет, вам нужно будет сделать свой собственный.
Ответ 2
Я опубликовал пакет NuGet для этого:
Install-Package BetterWin32Errors
Сначала добавьте использование для библиотеки:
using BetterWin32Errors;
Затем вы можете использовать его следующим образом:
if (!SomeWin32ApiCall(...))
{
var error = Win32Exception.GetLastWin32Error();
if (error == Win32Error.ERROR_FILE_NOT_FOUND)
{
// ...do something...
}
else if (error == Win32Error.ERROR_PATH_NOT_FOUND)
{
// ...do something else...
}
else
{
throw new Win32Exception(error);
}
}
Подробнее о том, как использовать библиотеку, см. на сайте.
Ответ 3
Вы можете скопировать код из http://msdn.microsoft.com/en-us/library/windows/desktop/ms681382.aspx, добавленный katmassage в собственный класс SystemErrorCodes. Он содержит коды от 0 до 499. Это хороший стартер. Если у кого-то уже есть класс, содержащий также все коды, его код будет оценен.