我想知道如何调试(或者实际该怎么做)Marshal.GetLastWin32Error()
的负值?
我一直在我的电脑上工作,代码很平静,突然它在另一台电脑上不起作用了,我不知道该怎么办,因为我不知道有什么错误。
这是代码(我认为是关键部分):
[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()));
其他电脑上的异常文本为
错误(-536850389)SetupDiChangeState
此处未列出。
错误(-536850389)SetupDiChangeState
它是0xE000020B
,并且可能对应于ERROR_NO_SUCH_DEVINST
。
查看您的DIFxAPI.h
。
如果程序不方便以十六进制输出错误,也可以使用calc.exe
转换错误代码。
-
首先,进入程序员模式。
-
选择"Hex"并输入
100000000
(一个零和八个零)。 -
返回"Dec"并减去错误代码的绝对值,在本例中为
536870389
。 -
返回"十六进制"查看十六进制错误代码,在本例中为
E000020B
。