小编Dan*_*reu的帖子

来自 C++ 的 C# USB 驱动程序:SetupDiGetDeviceInterfaceDetail

我在尝试从 C# 调用 SetupDiGetDeviceInterfaceDetail 时遇到问题。它总是返回 1784 错误代码(“提供的用户缓冲区对于请求的操作无效”)。这是我的 C# 代码:

Guid GUID_DEVINTERFACE_DFU = new Guid(0x3fe809ab, 0xfb91, 0x4cb5, 0xa6, 0x43, 0x69, 0x67, 0x0d, 0x52,0x36,0x6e);

        Guid classGuid = GUID_DEVINTERFACE_DFU;

        IntPtr hDevInfo = Win32.SetupDiGetClassDevs(ref classGuid, IntPtr.Zero, IntPtr.Zero, Win32.DIGCF_DEVICEINTERFACE | Win32.DIGCF_PRESENT);
        if (hDevInfo.ToInt32() == Win32.INVALID_HANDLE_VALUE)
        {
            Console.WriteLine("read hardware information error");
        }
        else
        {
            SP_DEVINFO_DATA devInfoData = new SP_DEVINFO_DATA();
            devInfoData.cbSize = (uint)Marshal.SizeOf(typeof(SP_DEVINFO_DATA));
            devInfoData.classGuid = Guid.Empty;
            devInfoData.devInst = 0;
            devInfoData.reserved = IntPtr.Zero;
            bool result = Win32.SetupDiEnumDeviceInfo(hDevInfo, i, devInfoData);
            if (false == result)
            {
                int error = Marshal.GetLastWin32Error(); …
Run Code Online (Sandbox Code Playgroud)

c# pinvoke winapi

4
推荐指数
1
解决办法
5584
查看次数

标签 统计

c# ×1

pinvoke ×1

winapi ×1