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;
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. |
| CreateFromIdAsync(String,IIterable(String),DeviceInformationKind) | Creates a DeviceInformation object from a DeviceInformation ID, a list of additional properties, and a DeviceInformationKind parameter. |
| 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. |
| CreateWatcher(String,IIterable(String),DeviceInformationKind) | Creates a DeviceWatcher for devices matching the specified Advanced Query Syntax (AQS) string, the specified collection of properties, and the kind of devices. |
| 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. |
| FindAllAsync(String,IIterable(String),DeviceInformationKind) | Enumerates DeviceInformation objects matching the specified Advanced Query Syntax (AQS) string, the device kind, and including the specified collection of properties. |
| GetAqsFilterFromDeviceClass | Creates a filter to use to enumerate through a subset of device types. |
| 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 | Gets the type of DeviceInformation represented by this object. | |
| Read-only | The name of the device. | |
| Read-only | Gets the information about the capabilities for this device to pair. | |
| Read-only | Property store containing well-known values as well as additional properties that can be specified during device enumeration. |
Remarks
A DeviceInformation object is composed of an identity (DeviceInformation.Id), a kind (DeviceInformation.Kind), and a property bag (DeviceInformation.Properties). All of the other properties of a DeviceInformation object are derived from the Properties property bag. For example, Name is derived from System.ItemNameDisplay.
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 more information about enumerating devices and recovering properties, see Enumerate devices.
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 (Windows 10 device family)
| |
|
API contract |
|
|
Namespace |
|
|
Metadata |
|
Requirements (Windows 8.x and Windows Phone 8.x)
|
Minimum supported client | Windows 8 [Windows Store apps, desktop apps] |
|---|---|
|
Minimum supported server | Windows Server 2012 [Windows Store apps, desktop apps] |
|
Minimum supported phone | Windows Phone 8.1 [Windows Phone Silverlight 8.1 and Windows Runtime apps] |
|
Namespace |
|
|
Metadata |
|
Attributes
- [DualApiPartition()]
- [MarshalingBehavior(Agile)]
- [Threading(Both)]
- [Version(0x06020000)]
See also