0

当调用特定的 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 之间

4

1 回答 1

5

大多数情况下,如果某个函数返回负错误代码,它实际上是一个uint值。将 -1071241844 转换uint为 3223725452,即十六进制的 0xC026258C。

在 google 中搜索该十六进制错误代码会导致此页面显示它是错误 ERROR_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE。

于 2013-05-24T05:51:32.083 回答