如何为设备或 PnP 对象检索附加属性 (HTML)

[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]

介绍如何从 DeviceInformationPnpObject 获取附加的设备属性。

指定附加属性

默认情况下,findAllAsynccreateWatcher 返回的 DeviceInformation 对象具有以下属性:

属性 规范名称
ID 不适用。此属性为该对象的标识。
名称 System.ItemNameDisplay
IsDefault System.Devices.IsDefault
IsEnabled System.Devices.InterfaceEnabled
EnclosureLocation System.Devices.PhysicalDeviceLocation

 

你可以使用 findAllAsynccreateWatcher 方法的超载形式,在 DeviceInformationPnpObject 类上提供这些方法。可以通过使用 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"。

相关主题

概念

系统定义的设备属性

统一设备属性模型