- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这次我有一个错误,我一直在尝试找出它存在的原因。虽然可以忽略该错误,但我想知道为什么它首先存在。
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;
}
这是第一次调用此函数,目的只是为了为第二次调用该函数设置buffersize 变量。我收到打印的错误消息:122 => The data area passed to a system call is too small。从错误消息来看,我认为这一定与第二个参数(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 文章,据我所知,这里的代码没有任何问题。
最佳答案
这是设计使然。如果你看here在评论部分下:
使用此函数获取有关接口(interface)的详细信息通常是一个两步过程:
1) 获取所需的缓冲区大小。使用 NULL DeviceInterfaceDetailData 指针、零 DeviceInterfaceDetailDataSize 和有效的 RequiredSize 变量调用 SetupDiGetDeviceInterfaceDetail。作为对此类调用的响应,此函数返回 RequiredSize 所需的缓冲区大小,并因 GetLastError 返回 ERROR INSUFFICIENT BUFFER 而失败。
2) 分配一个适当大小的缓冲区并再次调用该函数以获取接口(interface)详细信息。
如果在 error codes 下查找 ERROR INSUFFICIENT BUFFER ,你会看到它是十进制值 122。
关于c# - SetupDiGetDeviceInterfaceDetail 无法解释的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1054748/
这次我有一个错误,我一直在尝试找出它存在的原因。虽然可以忽略该错误,但我想知道为什么它首先存在。 result = SetupDiGetDeviceInterfaceDetail(deviceInfo
我正在维护一个应用程序,该应用程序使用 SetupDiGetDeviceInterfaceDetail() 来查找有关计算机上已安装串行端口的信息。我在测试时注意到有些设备(例如我的 Lucent W
我正在尝试使用 SetupDiGetDeviceInterfaceDetail() 函数获取设备的路径,但每次调用它时它都会崩溃。我已经为此工作了 12 多个小时,但仍然无法找出它有什么问题.....
我正在尝试连接到 USB GPS 设备。如果我通过 CreateFile WinApi 手动创建文件(使用设备管理器中指定的路径),我可以成功连接到设备。 但是,当我尝试通过枚举选择设备时,Setup
我在调用 SetupDiGetDeviceInterfaceDetail ( https://msdn.microsoft.com/en-us/library/ff551120.aspx ) 时一直收
我可以知道我有多少个 USB HID 设备 (7),但每次我尝试获取任何设备的详细信息时,为它返回的路径总是“\”,这样我就无法访问设备。我使用的代码在过程中与此代码非常相似: HANDLE conn
我在尝试从 C# 调用 SetupDiGetDeviceInterfaceDetail 时遇到问题。它总是返回 1784 错误代码(“提供的用户缓冲区对于请求的操作无效”)。这是我的 C# 代码: G
我是一名优秀的程序员,十分优秀!