Есть ли перечисление кодов системных ошибок в .Net framework?

У меня есть функция библиотеки, которая возвращает коды GetLastError (вещи, подобные этим). Мне нужно сравнить их с конкретными ошибками, например ERROR_INVALID_HANDLE. Однако мне не очень удобно определять константы. Итак, вопрос в том, есть ли предопределенное перечисление для этой цели?

Ответ 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. Это хороший стартер. Если у кого-то уже есть класс, содержащий также все коды, его код будет оценен.