.Net框架中是否存在系统错误代码的枚举?

Tod*_* Li 11 .net pinvoke

我有一个库函数返回GetLastError代码(像这样的东西).我需要将它们与特定的错误进行比较,比如ERROR_INVALID_HANDLE.但是我自己定义常量并不舒服.所以问题是,为此目的是否有预定义的枚举?

Meh*_*dad 8

不,你必须自己做.


Mic*_*pat 6

我为此发布了一个NuGet 包

Install-Package BetterWin32Errors
Run Code Online (Sandbox Code Playgroud)

首先为库添加一个 using:

using BetterWin32Errors;
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样使用它:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

有关如何使用该库的更多示例,请参阅该站点