Windows Dev Center

Informationen
Das angeforderte Thema wird unten angezeigt. Es ist jedoch nicht in dieser Bibliothek vorhanden.

DeviceWatcher Class

Listet Geräte dynamisch auf, sodass die App Benachrichtigungen empfängt, wenn Geräte hinzugefügt, entfernt oder geändert werden, nachdem die ursprüngliche Aufzählung abgeschlossen ist.

Syntax


var deviceWatcher = createWatcher();
var deviceWatcher = createWatcher(deviceClass);
var deviceWatcher = createWatcher(string);
var deviceWatcher = createWatcher(string, iIterable(String));

Attribute

[DualApiPartition()]
[MarshalingBehavior(Agile)]
[Version(0x06020000)]

Member

DeviceWatcherKlasse hat diese Membertypen:

Ereignisse

DeviceWatcherKlasse hat diese Ereignisse.

EreignisBeschreibung
Added Event that is raised when a device is added to the collection enumerated by the DeviceWatcher.
EnumerationCompleted Event that is raised when the enumeration of devices completes.
Removed Event that is raised when a device is removed from the collection of enumerated devices.
Stopped Event that is raised when the enumeration operation has been stopped.
Updated Event that is raised when a device is updated in the collection of enumerated devices.

 

Methoden

The DeviceWatcher Klasse hat diese Methoden. Mit C#, Visual Basic und C++ erbt es auch Methoden aus Object Klasse.

MethodeBeschreibung
Start Starts a search for devices, and subscribes to device enumeration events.
Stop Stop raising the events that add, update and remove enumeration results.

 

Eigenschaften

Der DeviceWatcherKlasse hat diese Eigenschaften.

EigenschaftZugriffstypBeschreibung

Status

SchreibgeschütztThe status of the DeviceWatcher.

 

Hinweise

Eine Anwendung ruft Start auf, um die Suche für Geräte zu starten. Während dieser ersten Enumeration löst DeviceWatcher ein Added-Ereignis für jedes gefundene Gerät aus, bis alle Geräte gefunden werden. DeviceWatcher löst ein EnumerationCompleted- Ereignis aus, wenn die ursprüngliche Enumeration abgeschlossen ist und wird fortgesetzt, um Ereignisse auszulösen, wenn ein Gerät hinzugefügt, aktualisiert oder entfernt wird.

Im folgenden Diagramm wird gezeigt, wie die DeviceWatcher Übergänge zwischen den durch die DeviceWatcherStatus-Enumeration dargestellten Zustände vollzogen werden.

Zustandsdiagramm von DeviceWatcher-Zuständen

Die Start-Methode kann nur aufgerufen werden, wenn DeviceWatcher die Zustände Created, Stopped oder Aborted aufweist. Die Status-Eigenschaft gibt den DeviceWatcher-Zustand an. Wenn Sie die Überwachung neu starten, warten Sie auf das Ereignis Stopped, bevor Sie Start aufrufen.

Stop führt Übergänge für DeviceWatcher zum Stopping-Zustand aus und schließt sofort ab. Der Watcher geht in den Stopped-Zustand über, wenn alle Ereignisse, die bereits ausgelöst werden, abgeschlossen sind.

Apps können auf das Stopped-Ereignis warten, wenn sie wissen müssen, wann DeviceWatcher beendet wurde. Aufrufer müssen auf das Stopped-Ereignis warten, bevor sie die Start-Methode aufrufen können, um den Monitor neu zu starten. Aufrufer können Ereignisse kündigen, wenn Sie keine zusätzlichen Ereignisse nach Stop erhalten möchten, jedoch nicht auf das Stopped-Ereignis warten möchten.

Hinweis  Eine App muss alle added-Ereignisse, removed-Ereignisse und updated-Ereignisse abonnieren, um bei Gerätehinzufügungen, -entfernungen oder -updates benachrichtigt zu werden. Wenn eine Anwendung nur das added-Ereignis behandelt, empfängt sie kein Update, wenn ein Gerät dem System nach Abschluss der ursprünglichen Geräteenumeration hinzugefügt wird.

Beispiele

Dieses Beispiel zählt Geräte inkrementell auf, fügt sie bei ihrer Erkennung zu einer Liste hinzu und gibt außerdem entfernte und aktualisierte Geräte an. Die Funktion "onAdded", die das added-Ereignis behandelt, akzeptiert ein DeviceInformation-Objekt. Nachdem die Auflistung fertiggestellt ist, druckt die App eine Geräteliste. Die App gibt auch eine Meldung aus, wenn Geräte hinzugefügt, aktualisiert oder entfernt werden, nachdem die ursprünglichen Enumeration abgeschlossen ist.



<!DOCTYPE html>
<html>
<head>
    <title>Device Enumeration Sample</title>
    <script>
   var watcher;
    var deviceArray = new Array(); // Saves the enumeration results.

    function WatchDevices() {
        try {
            output.innerHTML = ""; // Clears 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);
    }

    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);
            }
        }
    }

    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);
            }
        }
    }

    function onEnumerationCompleted(obj) {
        document.getElementById("output").innerHTML += 
            "<p>Enumeration Completed.</p>";
        printDeviceArray(document.getElementById("output"));
    }

    function onStopped(obj) {
        document.getElementById("output").innerHTML += "<p>Stopped.</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);
        }
    }

    </script>
</head>
<body role="application">
    <h1>Device Enumeration Sample</h1>
    <h2 >Input</h2>
    <div >            
            <div >
            <p>This example incrementally enumerates devices, adding them to a list each time a device is found, and also watching for updates.
               Once enumeration is complete, the list of devices is printed.</p> 
                <input type="button" value="Watch(All Devices)" onclick="WatchDevices()"/>
                <br /><br />

                <input type="button" value="Stop" onclick="stopWatcher()"/>
                <br /><br />
            </div>
    </div>

    <h2 > Output</h2>
            <div id="statusMessage"></div>
            <!--  Output -->
            <div  id="output"></div>
</body>
</html>



Anforderungen

Mindestens unterstützter Client

Windows 8 [Windows Store-Apps, Desktop-Apps]

Mindestens unterstützter Server

Windows Server 2012 [Windows Store-Apps, Desktop-Apps]

Namespace

Windows.Devices.Enumeration
Windows::Devices::Enumeration [C++]

Metadaten

Windows.winmd

 

 

Anzeigen:
© 2015 Microsoft