FindAllAsync无法在Surface上找到设备

时间:2013-12-26 15:46:11

标签: windows-store-apps windows-8.1

我已经编写了一个Windows应用商店应用来测试通过WINUsb与设备的通信。它适用于开发笔记本电脑(Windows 8.1 Preview,VS2013),但不适用于Surface。

设备在设备管理器中出现(在通用串行总线设备下),但我的程序找不到它。

我在Surface上安装了VS2013进行测试。这是一段代码:

    var selector = "System.Devices.InterfaceClassGuid:=" + "{DEE824EF-729B-4A0E-9C14-B7117D33A817}" + " AND System.Devices.InterfaceEnabled:=System.StructuredQueryType.Boolean#True AND System.DeviceInterface.WinUsb.UsbVendorId:=1250 AND System.DeviceInterface.WinUsb.UsbProductId:=5136";

    ObservableCollection<string> propertiesToRetrieve = new ObservableCollection<string>();
    propertiesToRetrieve.Add("System.Devices.InterfaceClassGuid");
    propertiesToRetrieve.Add("System.Devices.ContainerId");


    var interfaces = await DeviceInformation.FindAllAsync(selector, propertiesToRetrieve);

    foreach (DeviceInformation deviceInterface in interfaces)
    {

        //device = await UsbDevice.FromIdAsync(deviceInterface.Id);


        var pt = deviceInterface.Properties.GetEnumerator();
        while (pt.MoveNext())
        {
            if (pt.Current.Value != null)
                    tbMsg.Text += string.Format("{0}{1}", (pt.Current.Key + "=" + pt.Current.Value), Environment.NewLine);
        }

    }

我尝试了“选择器”的不同变体,但仍无法找到设备。

有什么想法吗?

非常感谢,

谢里

1 个答案:

答案 0 :(得分:0)

AQS过滤字符串需要与设备接口上的属性匹配。如果不这样做,则过滤掉设备信息对象。显然,表面平板电脑上的某些属性与其他PC相比有所不同。

我会请求您在过滤器选择器中使用的所有属性,删除选择器,或者删除子句,它会找到您要查找的接口,然后查看属性。

一旦您看到您尝试查找的界面上有哪些属性值,然后在逻辑上评估过滤器。有些值必须与您预期的不同。

萨姆