情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

DeviceWatcher Class

デバイスを動的に列挙します。これにより、初回の列挙が完了した後にデバイスが追加、削除、変更された場合、アプリケーションが通知を受け取ることができます。

構文


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

属性

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

メンバー

DeviceWatcherクラス には次の種類のメンバーがあります。

イベント

DeviceWatcherクラス にはこれらのイベントがあります。

イベント説明
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.

 

メソッド

The DeviceWatcher クラス には次のメソッドがあります。 With C#、Visual Basic、および C++ では、以下からもメソッドが継承されます。Object クラス.

メソッド説明
Start Starts a search for devices, and subscribes to device enumeration events.
Stop Stop raising the events that add, update and remove enumeration results.

 

プロパティ

DeviceWatcherクラス には次のプロパティがあります。

プロパティアクセスの種類説明

Status

読み取り専用The status of the DeviceWatcher.

 

解説

アプリケーションは Start を呼び出して、デバイスの検索を開始します。この初回の列挙中に、DeviceWatcher は、すべてのデバイスが見つかるまで、見つかった各デバイスの Added イベントを発生させます。初回の列挙が完了した際に DeviceWatcher によって EnumerationCompleted イベントが発生し、デバイスが追加、更新、または取り外されるとイベントを発生し続けます。

次の図に、DeviceWatcherStatus の列挙型によって表される状態間の DeviceWatcher 遷移を示します。

DeviceWatcher 状態の状態ダイアグラム

DeviceWatcherCreatedStopped または Aborted 状態のときにのみ、Start メソッドを呼び出すことができます。 Status プロパティは DeviceWatcher 状態を示します。 ウォッチャーを再開する場合は、Start を呼び出す前に Stopped イベントを待ちます。

Stop は、DeviceWatcher から Stopping の状態に遷移して、直ちに完了します。ウォッチャーは、既に発生中のイベントがすべて完了すると、Stopped 状態に遷移します。

アプリケーションは、DeviceWatcher がいつ停止したかを知る必要がある場合でも、Stopped イベントを待機する場合があります。呼び出し元は、Stopped イベントを待ってから Start を呼び出してウォッチャーを再開する必要があります。 呼び出し元は、Stop の後で追加のイベントを受け取らず、Stopped イベントを待ちたくない場合は、イベントのサブスクリプションを解除することができます。

メモ  アプリケーションでは、デバイスが追加、削除、または更新されると通知される addedremoved、および updated イベントをすべてサブスクライブする必要があります。アプリケーションは、added イベントのみを処理する場合、最初のデバイスの列挙が完了した後にデバイスがシステムに追加されると、更新を受け取りません。

この例では、デバイスが検出されるたびにそれらを一覧に追加し、削除と更新も処理することで、デバイスをインクリメンタルに列挙します。added イベントを処理する onAdded 関数は DeviceInformation オブジェクトを使用します。列挙が完了すると、アプリケーションはデバイスのリストを出力します。また、このアプリケーションでは、最初の列挙の完了後にデバイスが追加、更新または取り外された場合もメッセージが出力されます。



<!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>



要件

最小限サポートされるクライアント

Windows 8 [Windows ストア アプリ, デスクトップ アプリ]

最小限サポートされるサーバー

Windows Server 2012 [Windows ストア アプリ, デスクトップ アプリ]

名前空間

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

メタデータ

Windows.winmd

 

 

表示:
© 2014 Microsoft