如何抓取裝置或 PnP 物件的其他屬性 (HTML)
[ 本文的目標對象是撰寫 Windows 執行階段 App 的 Windows 8.x 和 Windows Phone 8.x 開發人員。如果您正在開發適用於 Windows 10 的 App,請參閱 最新文件 ]
描述如何從 DeviceInformation 或 PnpObject 取得其他裝置屬性。
指定其他屬性
根據預設,findAllAsync 和 createWatcher 會傳回具有下列屬性的 DeviceInformation 物件:
屬性 | 正式名稱 |
---|---|
識別碼 | 不適用。這個屬性是物件的身分識別。 |
名稱 | System.ItemNameDisplay |
IsDefault | System.Devices.IsDefault |
IsEnabled | System.Devices.InterfaceEnabled |
EnclosureLocation | System.Devices.PhysicalDeviceLocation |
您可以使用 DeviceInformation 和 PnpObject 類別提供的 findAllAsync 和 createWatcher 方法多載格式。您可以使用 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"。
相關主題
概念