这次我有一个错误,我一直试图找出它为什么存在。虽然错误可以忽略,但我想知道它为什么存在于第一位。SetupDiGetDeviceInterfaceDetail无法解释的错误
result = SetupDiGetDeviceInterfaceDetail(deviceInfoSet, ref anInterface, IntPtr.Zero, 0, ref buffersize, IntPtr.Zero);
if (!result)
{
int errCode = Marshal.GetLastWin32Error();
errorMessage = new Win32Exception(Marshal.GetLastWin32Error()).Message;
statusLabel.Text += "\n(1)SetupDiGetDeviceInterfaceDetail Error: " + errCode + " => " + errorMessage + ".";
//break;
}
这是此功能这仅仅是用于设置缓冲区大小可变用于第二呼叫的功能的目的的第一呼叫。我收到打印的错误消息:122 =>传递给系统调用的数据区域太小。 从我认为的错误消息来看,这必定与第二个参数(ref anInterface)有关,并且我可以忽略第二遍结果是真的;但错误仍然存在,我想知道为什么在它回来咬我在'后面'的地方。 有问题的参数声明,从而定义:
[StructLayout(LayoutKind.Sequential)] // defined here
public struct SP_DEVICE_INTERFACE_DATA
{
public uint cbSize;
public Guid InterfaceClassGuid;
public uint Flags;
public IntPtr Reserved;
}
anInterface = new SP_DEVICE_INTERFACE_DATA(); // declared here
anInterface.cbSize = (uint)Marshal.SizeOf(anInterface);
anInterface.InterfaceClassGuid = Guid.Empty;
anInterface.Reserved = IntPtr.Zero;
anInterface.Flags = 0;
我都百般挑剔MSDN文章,并就我可以告诉有什么不妥这里的代码。