我想要实现的是扫描我的本地网络以获取连接的设备。我了解到我需要构建一个选择器并将其传递给函数
DeviceInformation.FindAllAsync()
例如。但问题是,所有这些都需要System.Devices命名空间,例如
System.Devices.InterfaceClassGuid:="{2eef81be-33fa-4800-9670-1cd474972c3f}"
我得到这样一个错误:“错误CS0234类型或命名空间名称'设备'在名称空间'系统'中不存在(你错过了程序集引用吗?)”。
我怀疑这是因为我以某种方式错过了图书馆。我尝试使用System.Devices但命名空间中不存在名称空间。我也尝试在Reference Manager中添加它,但也没有这样的库。我在网上找不到图书馆。
另外,我不确定如何构造AQS字符串。
DeviceInformationCollection collection = await DeviceInformation.FindAllAsync(DeviceClass.ImageScanner);
这没关系,但仅显示本地设备。
var selector = System.Device.Aep.ProtocolId:= "{37aba761-2124-454c-8d82-c42962c2de2b}";
这会产生错误,一个是命名空间,另一个是语法限制。
我希望将一个选择器传递给函数,但我缺少命名空间System.Devices和AQS字符串不起作用。
看起来这不是命名空间。它们是窗户属性,请检查窗户属性。
System.Devices
不是命名空间。他们是Device information properties。如果你想要枚举设备,你需要使用DeviceWatcher
来捕获匹配条件的设备。
DeviceWatcher deviceWatcher = DeviceInformation.CreateWatcher(
"", // AQS Filter string
null, // requested properties
deviceInfoKind);
这是你可以参考的official code sample。