DeviceInformation class
Represents a device. This class allows access to well-known device properties as well as additional properties specified during device enumeration.
Syntax
var deviceInformation = Windows.Devices.Enumeration.DeviceInformation;
Attributes
- [DualApiPartition()]
- [MarshalingBehavior(Agile)]
- [Threading(Both)]
- [Version(0x06020000)]
Members
The DeviceInformation class has these types of members:
Methods
The DeviceInformation class has these methods. With C#, Visual Basic, and C++, it also inherits methods from the Object class.
| Method | Description |
|---|---|
| CreateFromIdAsync(String) | Creates a DeviceInformation object from a DeviceInformation ID. |
| CreateFromIdAsync(String, IIterable(String)) | Creates a DeviceInformation object from a DeviceInformation ID and a list of additional properties. |
| CreateWatcher() | Creates a DeviceWatcher for all devices. |
| CreateWatcher(DeviceClass) | Creates a DeviceWatcher for devices matching the specified DeviceClass. |
| CreateWatcher(String) | Creates a DeviceWatcher for devices matching the specified Advanced Query Syntax (AQS) string. |
| CreateWatcher(String, IIterable(String)) | Creates a DeviceWatcher for devices matching the specified Advanced Query Syntax (AQS) string and the specified collection of properties. |
| FindAllAsync() | Enumerates all DeviceInformation objects. |
| FindAllAsync(DeviceClass) | Enumerates DeviceInformation objects of the specified class. |
| FindAllAsync(String) | Enumerates DeviceInformation objects matching the specified Advanced Query Syntax (AQS) string. |
| FindAllAsync(String, IIterable(String)) | Enumerates DeviceInformation objects matching the specified Advanced Query Syntax (AQS) string and including the specified collection of properties. |
| GetGlyphThumbnailAsync | Gets a glyph for the device. |
| GetThumbnailAsync | Returns a thumbnail image for the device. |
| Update | Updates the properties of an existing DeviceInformation object. |
Properties
The DeviceInformation class has these properties.
| Property | Access type | Description |
|---|---|---|
| Read-only | The physical location of the device in its enclosure. | |
| Read-only | A string representing the identity of the device. | |
| Read-only | Indicates whether this device is the default device for the class. | |
| Read-only | Indicates whether this device is enabled. | |
| Read-only | The name of the device. | |
| Read-only | Property store containing well-known values as well as additional properties that can be specified during device enumeration. |
Remarks
Successful completion of FindAllAsync results in a DeviceInformationCollection containing DeviceInformation objects.
If a call to CreateWatcher succeeds, a DeviceInformation object is passed to the added event for each device that is found.
The Name property should only be used for display purposes only and not for finding a device because the Name can change due to localization or a user assigning a name.
CreateFromIdAsync creates a DeviceInformation object if successful.
The DeviceInformation class provides device information, but more specifically, it provides properties of the device interface, the interface that represents functionality that the device exposes. Multi-function devices may have more than one device interface. The physical object that a user sees as a device, is known as the device container, and has properties such as Manufacturer and ModelID. For a list of properties associated with device interfaces, device containers, and other PnP objects, see the list of canonical properties in How to retrieve additional properties for a device or PnP object. For tutorials on how to use the DeviceInformation class to get device information, see How to retrieve additional properties for a device or PnP object, How to retrieve related PnP objects, and Quickstart: Enumerating device containers.
Examples
This example incrementally enumerates devices, adding them to a list each time a device is found, and also handling removals and updates.
var watcher;
var isEnumerationComplete = false;
var deviceArray = new Array(); // Saves the enumeration results
function WatchDevices() {
try {
output.innerHTML = ""; // clear output field
watcher =
Windows.Devices.Enumeration.DeviceInformation.createWatcher();
// Add event handlers
watcher.addEventListener("added", onAdded);
watcher.addEventListener("removed", onRemoved);
watcher.addEventListener("updated", onUpdated);
watcher.addEventListener("enumerationcompleted",
onEnumerationCompleted);
watcher.addEventListener("stopped", onStopped);
// Start enumerating and listening for events
watcher.start();
} catch (e) {
document.getElementById("statusMessage").innerHTML =
"Failed to create watcher, error: " + e.message;
}
}
function stopWatcher() {
try {
watcher.stop();
}
catch (e) {
document.getElementById("statusMessage").innerHTML =
"Failed to stop watcher: " + e.message;
}
}
function onAdded(devinfo) {
document.getElementById("output").innerHTML += "<p>Device added: " +
devinfo.name + "</p>";
deviceArray.push(devinfo);
if (isEnumerationComplete) {
output.innerHTML = ""; // clear output field
printDeviceArray(document.getElementById("output"));
}
}
function onUpdated(devUpdate) {
document.getElementById("output").innerHTML += "<p>Device updated.</p>";
for (var i = 0; i < deviceArray.length; i++) {
if (deviceArray[i].id == devUpdate.id) {
deviceArray[i].update(devUpdate);
}
}
output.innerHTML = ""; // clear output field
printDeviceArray(document.getElementById("output"));
}
function onRemoved(devupdate) {
document.getElementById("output").innerHTML += "<p>Device removed.</p>";
for (var i = 0; i < deviceArray.length; i++) {
if (deviceArray[i].id == devupdate.id) {
deviceArray[i].slice(devupdate);
}
}
output.innerHTML = ""; // clear output field
printDeviceArray(document.getElementById("output"));
}
function onEnumerationCompleted(obj) {
isEnumerationComplete = true;
document.getElementById("output").innerHTML +=
"<p>Enumeration Completed.</p>";
printDeviceArray(document.getElementById("output"));
}
function onStopped(obj) {
document.getElementById("output").innerHTML += "<p>Stopped.</p>";
if (watcher.status == Windows.Devices.Enumeration.DeviceWatcherStatus.aborted) {
document.getElementById("output").innerHTML +=
"<p>Enumeration stopped unexpectedly. </p>";
document.getElementById("output").innerHTML +=
"<p>Click the Watch button to restart enumeration.</p>";
} else if (watcher.status == Windows.Devices.Enumeration.DeviceWatcherStatus.stopped) {
document.getElementById("output").innerHTML +=
"<p>You requested to stop enumeration. </p>";
document.getElementById("output").innerHTML +=
"<p>Click the Watch button to restart enumeration.</p>";
}
}
// Prints the friendly name of the device interface,
// its ID (device interface path), and whether it is enabled.
function printDevice(deviceInterface, outputDestination) {
outputDestination.innerHTML += "<p>Name: " +
deviceInterface.name + "<p/>";
outputDestination.innerHTML += "<p>Interface ID: " +
deviceInterface.id + "<p/>";
outputDestination.innerHTML += "<p>Enabled: " +
deviceInterface.isEnabled + "<p/>";
outputDestination.innerHTML += "<br />";
}
function printDeviceArray(outputDestination) {
for (var i = 0; i < deviceArray.length; i++) {
printDevice(deviceArray[i], outputDestination);
}
}
Requirements
|
Minimum supported client | Windows 8 [Windows Store apps, desktop apps] |
|---|---|
|
Minimum supported server | Windows Server 2012 [Windows Store apps, desktop apps] |
|
Namespace |
|
|
Metadata |
|
