0

我想知道如何调试(或实际做什么)负值Marshal.GetLastWin32Error()

我一直在使用我的 PC 和平代码,突然它在另一台 PC 上不起作用,我不知道该怎么做,因为我不知道那里有什么错误。

这是代码(我认为是基本部分):

[DllImport("setupapi.dll", SetLastError = true)]
static extern bool SetupDiChangeState(IntPtr deviceInfoSet, [In] ref SP_DEVINFO_DATA deviceInfoData);

// and then somewhere
if (!SetupDiChangeState(info, ref device))
    throw new Exception(string.Format("Error({0}) SetupDiChangeState", Marshal.GetLastWin32Error()));

其他 PC 上的异常文本是

错误(-536870389)SetupDiChangeState

这里没有列出。

4

2 回答 2

2

错误(-536870389)SetupDiChangeState

它是0xE000020B,并且可能对应于ERROR_NO_SUCH_DEVINST

查看您的DIFxAPI.h.

于 2014-09-08T11:58:59.030 回答
2

如果您的程序不方便以十六进制输出错误,您也可以使用calc.exe.

  • 首先,进入程序员模式。

  • 选择“十六进制”并输入100000000(一个和八个零)。

  • 返回“Dec”并减去错误代码的绝对值,在这种情况下536870389

  • 返回“十六进制”查看十六进制错误代码,在这种情况下E000020B

于 2014-09-08T21:42:08.303 回答