如何为设备或 PnP 对象检索附加属性 (HTML)
[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]
介绍如何从 DeviceInformation 或 PnpObject 获取附加的设备属性。
指定附加属性
默认情况下,findAllAsync 和 createWatcher 返回的 DeviceInformation 对象具有以下属性:
属性 | 规范名称 |
---|---|
ID | 不适用。此属性为该对象的标识。 |
名称 | System.ItemNameDisplay |
IsDefault | System.Devices.IsDefault |
IsEnabled | System.Devices.InterfaceEnabled |
EnclosureLocation | System.Devices.PhysicalDeviceLocation |
你可以使用 findAllAsync 和 createWatcher 方法的超载形式,在 DeviceInformation 和 PnpObject 类上提供这些方法。可以通过使用 additionalProperties 参数指定要包含在结果中的其他属性,如下所示。
// Create a set of two additional properties.
var propertiesToRetrieve = new Array();
propertiesToRetrieve.push("System.Devices.InterfaceClassGuid");
propertiesToRetrieve.push("System.Devices.ContainerId");
Windows.Devices.Enumeration.findAllAsync(selectorString,
propertiesToRetrieve).then(successCallback, errorCallback);)
// Handles successful completion of the findAllAsync method.
function successCallback(deviceInformationCollection) {
var numDevices = deviceInformationCollection.length;
if (numDevices) {
for (var i = 0; i < numDevices; i++) {
printProperties(document.getElementById("log"),
deviceInformationCollection[i].properties);
}
}
}
// Handles an error completion of the findAllAsync method.
function errorCallback(e) {
document.getElementById("statusMessage").innerHTML =
"Failed to find devices, error: " + e.message;
}
function printProperties(log, prop) {
log.innerHTML += "property store count is: " + prop.size;
var pt = prop.first();
while (pt.hasCurrent) {
log.innerHTML += "<br />" + pt.current.key + " := " + pt.current.value;
pt.moveNext();
}
log.innerHTML += "<br />";
}
规范属性列表
如果某个属性值不与某个特定设备接口相关联,那么该属性值可能会与该接口所属的设备相关联,或者与代表设备硬件产品的可视部分的设备容器对象(如制造商或型号名称)相关联。 以下是设备接口、设备和设备容器的属性名称列表。请参阅检索相关的 PnP 对象以了解如何在对象类型之间导航。
设备接口属性
名称 | 属性 | 描述 |
---|---|---|
System.Devices.ContainerId |
DEVPKEY_Device_ContainerId |
设备接口的容器的 ID。 |
System.Devices.DeviceInstanceId |
DEVPKEY_Device_InstanceId |
此接口所属的设备的设备实例 ID。 |
System.Devices.InterfaceClassGuid |
DEVPKEY_DeviceInterface_ClassGuid |
接口的类 GUID。 |
System.Devices.InterfaceEnabled |
DEVPKEY_DeviceInterface_Enabled |
表明接口是否已启用。 |
System.ItemNameDisplay |
DEVPKEY_NAME |
设备接口的友好名称。 |
System.Storage.IsMediaRemovable |
DEVPKEY_Storage_Removable_Media |
表明卷的媒体是否可移除。 |
System.Storage.IsPortable |
DEVPKEY_Storage_Portable |
表明存储堆栈是否将存储视为可移植的。 |
设备属性
名称 | 属性 | 描述 |
---|---|---|
System.Devices.Children |
DEVPKEY_Device_Children |
子级的设备实例 ID。 已从内核状态进行实时查询。 |
System.Devices.CompatibleIds |
DEVPKEY_Device_CompatibleIds |
此属性是一个包含设备的兼容 ID 列表的多 sz 字符串值。 |
System.Devices.ContainerId |
DEVPKEY_Device_ContainerId |
设备的容器的 ID。 |
System.Devices.DeviceCapabilities |
DEVPKEY_Device_Capabilities |
此属性是一个包含设备的功能的按位 OR 的 DWORD 值。 这些功能是由在 cfgmgr32.h 中定义的 CM_DEVCAP_Xxxxx 位掩码表示的。 |
System.Devices.DeviceCharacteristics |
DEVPKEY_Device_Characteristics |
此属性是一个包含设备的特性的按位 OR 的 DWORD 值。 这些标志是在 wdm.h 和 ntddk.h 中定义的,有关这些标志的描述,请参阅 IoCreateDevice 函数的 DeviceCharacteristics 参数。 |
System.Devices.DeviceHasProblem |
DEVPKEY_Device_HasProblem |
此属性是从内核状态进行实时查询的。 |
System.Devices.DeviceInstanceId |
DEVPKEY_Device_InstanceId |
设备实例 ID。 |
System.Devices.HardwareIds |
DEVPKEY_Device_HardwareIds |
此属性是一个包含设备的硬件 ID 列表的多 sz 字符串值。 |
System.Devices.InLocalMachineContainer |
DEVPKEY_Device_InLocalMachineContainerr |
表明 devnode 是否在计算机的容器中。 |
System.ItemNameDisplay |
DEVPKEY_NAME |
设备实例的名称。 |
容器属性
名称 | 属性和描述 |
---|---|
System.ItemNameDisplay | PKEY_NAME - 容器的名称。 |
System.Devices.DiscoveryMethod | DEVPKEY_DeviceContainer_DiscoveryMethod - 设备发现方法列表。 |
System.Devices.Connected | DEVPKEY_DeviceContainer_IsConnected - 表明设备是否已连接。 |
System.Devices.Paired | DEVPKEY_DeviceContainer_IsPaired - 表明设备是否已配对。 |
System.Devices.Icon | DEVPKEY_DeviceContainer_Icon - 到设备图标的路径。 |
System.Devices.LocalMachine | DEVPKEY_DeviceContainer_IsLocalMachine - 此容器是否代表本地计算机 (PC)。 |
System.Devices.MetadataPath | DEVPKEY_DeviceContainer_MetadataPath - 到设备元数据的路径。 |
System.Devices.LaunchDeviceStageFromExplorer | DEVPKEY_DeviceContainer_LaunchDeviceStageFromExlplorer - 是否从 Windows 资源管理器启动 Device Stage。 |
System.Devices.DeviceDescription1 | DEVPKEY_DeviceContainer_DeviceDescription1 - 设备描述。 |
System.Devices.DeviceDescription2 | DEVPKEY_DeviceContainer_DeviceDescription2 - 设备描述。 |
System.Devices.NotWorkingProperly | DEVPKEY_DeviceContainer_HasProblem - 该容器是否存在问题。如果容器中的任何现有设备将 DEVPKEY_DEVICE_HasProblem 设置为 TRUE,则为 TRUE。 |
System.Devices.IsShared | DEVPKEY_DeviceContainer_IsSharedDevice - 是否共享设备。 |
System.Devices.IsNetworkConnected | DEVPKEY_DeviceContainer_IsNetworkDevice - 设备是否已连接网络。 |
System.Devices.IsDefault | DEVPKEY_DeviceContainer_IsDefaultDevice - 设备是否为默认设备。 |
System.Devices.Category | DEVPKEY_DeviceContainer_Category_Desc_Singular - 设备类别(单数的)。 |
System.Devices.CategoryPlural | DEVPKEY_DeviceContainer_Category_Desc_Singular - 设备类别(复数的)。 |
System.Devices.CategoryGroup | DEVPKEY_DeviceContainer_CategoryGroup_Desc - 设备类别组。 |
System.Devices.FriendlyName | DEVPKEY_DeviceContainer_FriendlyName - 友好名称。 |
System.Devices.Manufacturer | DEVPKEY_DeviceContainer_Manufacturer - 制造商名称。 |
System.Devices.ModelName | DEVPKEY_DeviceContainer_ModelName - 型号名称。 |
System.Devices.ModelNumber | DEVPKEY_DeviceContainer_ModelNumber - 型号编号。 |
指定没有规范名称的属性
如果未给某个属性指定一个规范名称,那么仍可以通过将密钥指定为表单 "{Guid} pid" 的字符串来检索该属性。 例如,可以将 System.Devices.ContainerId 指定为 "{8C7ED206-3F8A-4827-B3AB-AE9E1FAEFC6C} 2"。
相关主题
概念