调用特定的Win32 API函数时(从C#到Interop),它会失败并返回一个负的错误代码
背景:
我在TAB内运行的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之间 this link
答案 0 :(得分:5)
大多数情况下,如果某个函数返回负错误代码,则实际上是uint
值。将-1071241844转换为uint
得到3223725452,其为十六进制的0xC026258C。
在Google中搜索该十六进制错误代码导致this page显示错误为ERROR_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE。