Schnellstart: Enumerieren von Gerätecontainern (HTML)

[ Dieser Artikel richtet sich an Windows 8.x- und Windows Phone 8.x-Entwickler, die Windows-Runtime-Apps schreiben. Wenn Sie für Windows 10 entwickeln, finden Sie weitere Informationen unter neueste Dokumentation]

Die Plug & Play-Objekttypen in den Geräteinformationen im PnpObjectType-Enumerationsspeicher, die einer bestimmten Geräteschnittstelle zugeordnet sind, das Gerät, zu dem die Schnittstelle gehört, eine Klasse mit Geräteschnittstellen oder der Gerätecontainer, der das gesamte Hardwareprodukt darstellt. Der Gerätecontainer beschreibt die sichtbaren Aspekte eines Geräts, wie Hersteller oder Modellname. Windows.Devices.Enumeration.DeviceInformation stellt denselben Typ dar wie PnpObjectType.DeviceInterface.

Mit dem Windows.Devices.Enumeration.PnP-Namespace können Sie Geräte und Gerätecontainer sowie Geräte und Geräteschnittstellen enumerieren. In diesem Thema wird erläutert, wie mit dem Windows.Devices.Enumeration.PnP-Namespace Gerätecontainer enumeriert werden.

Ziel: Enumerieren von Eigenschaften von Gerätecontainern.

Voraussetzungen

Sie sollten mit JavaScript und HTML vertraut sein.

Zeitaufwand: 20 Minuten.

Anweisungen

1. Öffnen von Microsoft Visual Studio

Öffnen Sie eine Instanz von Visual Studio.

2. Erstellen eines neuen Projekts

Klicken Sie im Dialogfeld Neues Projekt unter JavaScript > Windows Store-Apps auf die Option Leere Anwendung.

3. Einfügen des HTML-Codes der Anwendung

Öffnen Sie Default.html, und kopieren Sie diesen Code in die Datei. Ersetzen Sie dabei den Inhalt der Datei.


<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <script src="/js/default.js"></script>
</head>
<body data-design-activate="defaultPage.activated">
    <h1>Device Enumeration Sample</h1>

    <h2 >Input</h2>

    <div>            

       <div id="Input">
         <p>This scenario demonstrates enumerating device containers.</p>
          <p>Pressing the enumerate button will start a
             search for device containers.
             The containers will be listed below.</p>
          <input onclick="onEnumerateDeviceContainers()" type="button" value="Enumerate" />
                <br /><br />
       </div>
    </div>


    <h2> Output</h2>

            <div id="statusMessage"></div>

            <!-- Container Enumeration results are displayed in this element -->
            <div  id="output"></div>
</body>
</html>

4. Einfügen des JavaScript-Codes

Fügen Sie den folgenden Code in die Datei Default.js ein.


function onEnumerateDeviceContainers() {
    try {

        document.getElementById("output").innerHTML = "";

        var propertiesToRetrieve = new Array();
        propertiesToRetrieve.push("System.ItemNameDisplay");
        propertiesToRetrieve.push("System.Devices.ModelName");
        propertiesToRetrieve.push("System.Devices.Manufacturer");

        var DevEnum = Windows.Devices.Enumeration;
        var Pnp = DevEnum.Pnp;
        var pnpObjType = Pnp.PnpObjectType;
        var deviceContainerType = pnpObjType.deviceContainer;

        Pnp.PnpObject.findAllAsync(
            deviceContainerType, 
            propertiesToRetrieve).then(
                function (devinfoCollection) {
                    var numDevices = devinfoCollection.length;
                    document.getElementById("statusMessage").innerHTML = 
                        numDevices + " device containers(s) found";
                    if (numDevices) {
                        for (var i = 0; i < numDevices; i++) {
                            printDeviceContainer(devinfoCollection[i], 
                            document.getElementById("output"));
                        }
                    } else {
                    document.getElementById("statusMessage").innerHTML = 
                        ("No devices found");
                    }
                },
                function (e) {
                    document.getElementById("statusMessage").innerHTML = 
                        ("Failed to find devices, error: " + e.message);
                });
    } catch (e) {
        document.getElementById("statusMessage").innerHTML = 
            ("Failed to enumerate 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 />";
}

function printDeviceContainer(deviceContainer, log) {
    var prop = deviceContainer.properties;
    if (prop) {
        log.innerHTML += "<h3>" + prop.lookup("System.ItemNameDisplay") + "<h3/>";
        log.innerHTML += "<p>Container ID: " + deviceContainer.id + "<p/>";
        printProperties(log, prop);
    }
    log.innerHTML += "<br /><br />";
}

Zusammenfassung

Auf diese Weise werden Eigenschaften von Gerätecontainern enumeriert. Der requestedProperties-Parameter für Windows.Devices.Enumeration.Pnp.findAllAsync wird benötigt, wenn die Ergebnisse einer Containerenumeration Eigenschaften enthalten sollen.