如何抓取裝置或 PnP 物件的其他屬性 (HTML)

[ 本文的目標對象是撰寫 Windows 執行階段 App 的 Windows 8.x 和 Windows Phone 8.x 開發人員。如果您正在開發適用於 Windows 10 的 App,請參閱 最新文件 ]

描述如何從 DeviceInformationPnpObject 取得其他裝置屬性。

指定其他屬性

根據預設,findAllAsynccreateWatcher 會傳回具有下列屬性的 DeviceInformation 物件:

屬性 正式名稱
識別碼 不適用。這個屬性是物件的身分識別。
名稱 System.ItemNameDisplay
IsDefault System.Devices.IsDefault
IsEnabled System.Devices.InterfaceEnabled
EnclosureLocation System.Devices.PhysicalDeviceLocation

 

您可以使用 DeviceInformationPnpObject 類別提供的 findAllAsynccreateWatcher 方法多載格式。您可以使用 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

裝置介面容器的識別碼。

System.Devices.DeviceInstanceId

DEVPKEY_Device_InstanceId

這個介面所屬裝置的裝置執行個體識別碼。

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

子系的裝置執行個體識別碼。 從核心狀態即時查詢。

System.Devices.CompatibleIds

DEVPKEY_Device_CompatibleIds

這個屬性是 multi-sz 字串值,其中包含裝置的相容識別碼清單。

System.Devices.ContainerId

DEVPKEY_Device_ContainerId

裝置容器的識別碼。

System.Devices.DeviceCapabilities

DEVPKEY_Device_Capabilities

這個屬性是 DWORD 值,其中包含裝置功能的位元運算 OR。 這些功能由 cfgmgr32.h 中定義的 CM_DEVCAP_Xxxxx 位元遮罩所表示。

System.Devices.DeviceCharacteristics

DEVPKEY_Device_Characteristics

這個屬性是 DWORD 值,其中包含裝置特性的位元運算 OR。 如需在 wdm.h 和 ntddk.h 中定義的這些旗標說明,請參閱 IoCreateDevice 函式的 DeviceCharacteristics 參數。

System.Devices.DeviceHasProblem

DEVPKEY_Device_HasProblem

這個屬性會從核心狀態即時查詢。

System.Devices.DeviceInstanceId

DEVPKEY_Device_InstanceId

裝置執行個體識別碼。

System.Devices.HardwareIds

DEVPKEY_Device_HardwareIds

這個屬性是 multi-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"。

相關主題

概念

系統定義的裝置屬性

統一裝置屬性模式