AVaccess 2025-10-17 10:14 采纳率: 0%
浏览 7

无法识别的USB设备(配置描述符无效)

关于台式+KVM切换器的组合,我最近遇到了这种情况,烦请懂的技术师傅不吝赐教:
我买的切换器是8K级别的KVM切换器,单显示器输出,HDMI接口,有USB-A接口拓展。台式采用HDMI+USB-B输入视频信号和USB信号控制键鼠。
一开始使用都正常,但是更换一个新键盘后,会弹出“无法识别的USB设备”弹窗,

img

进入设备管理器,发现有黄色感叹符的“未知USB设备(配置描述符无效)”,

img

但是不经过切换器,键盘直连电脑没什么问题。也不是接触不良,键盘供电正常,应该是驱动相关的问题。
这是键盘链接:https://e.tb.cn/h.ShLuXMYHILHYuMs?tk=U6r0f0P9EMJ
虽然本人是从事通信行业,但是对于电脑技术还是个不太懂,如果有技术师傅知道,烦请赐教,可以有偿。
谢谢!

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2025-10-17 10:14
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    解决方案

    根据你的描述,问题可能出在KVM切换器或台式机的USB设备驱动上。以下是一些可能的解决方案:

    1. 检查KVM切换器的USB设备是否正确安装:确保KVM切换器的USB设备在电脑上正确安装,并且驱动程序更新到最新版本。
    2. 更换USB线缆或USB接口:尝试更换USB线缆或USB接口,看是否能解决问题。
    3. 检查台式机的USB-B接口是否正常工作:确保台式机的USB-B接口正常工作,并且没有其他设备占用该接口。
    4. 更新台式机的USB驱动:尝试更新台式机的USB驱动程序,看是否能解决问题。
    5. 检查KVM切换器的配置:检查KVM切换器的配置是否正确,是否有其他设备占用USB接口。

    核心代码

    以下是核心代码片段,用于检查USB设备是否正常工作:

    #include <windows.h>
    
    int main() {
        // 检查USB设备是否正常工作
        if (GetUsbDeviceList() == 0) {
            printf("USB设备正常工作\n");
        } else {
            printf("USB设备异常\n");
        }
        return 0;
    }
    
    // 获取USB设备列表
    int GetUsbDeviceList() {
        // 获取USB设备列表
        HDEVINFO hDevInfo = SetupDiGetClassDevs(&GUID_DEVCLASS_USB, NULL, NULL, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);
        if (hDevInfo == INVALID_HANDLE_VALUE) {
            return 0;
        }
    
        // 遍历USB设备列表
        SP_DEVINFO_DATA devInfoData;
        devInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
        for (int i = 0; i < SetupDiGetDeviceCount(hDevInfo, DIGCF_PRESENT); i++) {
            if (SetupDiEnumDeviceInfo(hDevInfo, i, &devInfoData)) {
                // 检查USB设备是否正常工作
                if (CheckUsbDevice(devInfoData.DevInst) == 0) {
                    return 0;
                }
            }
        }
    
        return 1;
    }
    
    // 检查USB设备是否正常工作
    int CheckUsbDevice(HDEVINFO hDevInfo) {
        // 检查USB设备是否正常工作
        if (GetUsbDeviceStatus(hDevInfo) == 0) {
            return 0;
        } else {
            return 1;
        }
    }
    
    // 获取USB设备状态
    int GetUsbDeviceStatus(HDEVINFO hDevInfo) {
        // 获取USB设备状态
        SP_DEVICE_INTERFACE_DATA deviceInterfaceData;
        deviceInterfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
        if (SetupDiEnumDeviceInterfaces(hDevInfo, NULL, &GUID_DEVCLASS_USB, 0, &deviceInterfaceData)) {
            return 1;
        } else {
            return 0;
        }
    }
    

    以上代码片段用于检查USB设备是否正常工作,具体实现可能需要根据实际情况进行调整。

    评论

报告相同问题?

问题事件

  • 创建了问题 10月17日