我想知道如何调试(或实际做什么)负值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。
答案 0 :(得分:2)
错误(-536870389)SetupDiChangeState
它是0xE000020B
,可能对应ERROR_NO_SUCH_DEVINST
。
查看您的DIFxAPI.h
。
答案 1 :(得分:2)
如果程序不方便以十六进制输出错误,您也可以使用calc.exe
转换错误代码。
首先,进入程序员模式。
选择" Hex"并输入100000000
(一个和八个零)。
回到" 12月"并减去错误代码的绝对值,在本例中为536870389
。
回到" Hex"查看十六进制错误代码,在本例中为E000020B
。