否定GetLastWin32Error()

时间:2014-09-08 11:51:32

标签: c# debugging winapi getlasterror

我想知道如何调试(或实际做什么)负值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

未列出here

2 个答案:

答案 0 :(得分:2)

  

错误(-536870389)SetupDiChangeState

它是0xE000020B,可能对应ERROR_NO_SUCH_DEVINST

查看您的DIFxAPI.h

答案 1 :(得分:2)

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

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

  • 选择" Hex"并输入100000000(一个和八个零)。

  • 回到" 12月"并减去错误代码的绝对值,在本例中为536870389

  • 回到" Hex"查看十六进制错误代码,在本例中为E000020B