C# Marshal.GetLastWin32Error()何时/为什么返回负错误代码?
调用特定的Win32 API函数(从C#到Interop)时,它会失败并返回一个负错误代码 背景: 我在一个选项卡中运行的Windows8操作系统上执行此操作 函数签名C# Marshal.GetLastWin32Error()何时/为什么返回负错误代码?,c#,winapi,interop,C#,Winapi,Interop,调用特定的Win32 API函数(从C#到Interop)时,它会失败并返回一个负错误代码 背景: 我在一个选项卡中运行的Windows8操作系统上执行此操作 函数签名 [DllImport("dxva2.dll", EntryPoint = "GetMonitorCapabilities", SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool GetMonitorCapa
[DllImport("dxva2.dll", EntryPoint = "GetMonitorCapabilities", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool GetMonitorCapabilities(
IntPtr hMonitor, ref uint pdwMonitorCapabilities, ref uint pdwSupportedColorTemperatures);
Console.WriteLine(Marshal.GetLastWin32Error());
NativeMethods.GetMonitorCapabilities(hnd,ref x,ref y);
Console.WriteLine(Marshal.GetLastWin32Error());
上述代码报告
0
-1071241844
我认为错误代码范围在0到15999之间,根据
大多数情况下,如果某个函数返回负错误代码,则它实际上是一个
uint
值。将-1071241844铸造到uint
会得到3223725452,十六进制为0xC026258C
在google中搜索该十六进制错误代码会显示它是错误错误\u图形\u无效\u物理\u监视器\u句柄。大多数情况下,如果某个函数返回负错误代码,它实际上是一个
uint
值。将-1071241844铸造到uint
会得到3223725452,十六进制为0xC026258C
在google中搜索该十六进制错误代码的结果显示它是错误\u图形\u无效\u物理\u监视器\u句柄