何时/为什么Marshal.GetLastWin32Error()返回负错误码
本文关键字:返回 错误 误码 为什么 Marshal GetLastWin32Error 何时 | 更新日期: 2023-09-27 18:15:02
当调用一个特定的Win32 API函数(从c#到Interop)时,它失败并返回一个负错误代码
背景:我是在Windows 8操作系统中运行的。
函数签名[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。
搜索十六进制错误代码在谷歌结果在这个页面显示,这是错误ERROR_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE