Compartir a través de


Inicio rápido: enumeración de contenedores de dispositivo (HTML)

[ Este artículo está destinado a desarrolladores de Windows 8.x y Windows Phone 8.x que escriben aplicaciones de Windows en tiempo de ejecución. Si estás desarrollando para Windows 10, consulta la documentación más reciente

Los tipos de objetos Plug and Play (PnP) de la enumeración PnpObjectType almacenan la información de dispositivo asociada con una interfaz de dispositivo concreta, el dispositivo del que forma parte la interfaz, una clase de interfaces de dispositivo o el contenedor de dispositivo que representa todo el producto de hardware. El contenedor de dispositivo describe los aspectos visibles de un dispositivo, como el fabricante o el nombre del modelo. Windows.Devices.Enumeration.DeviceInformation representa el mismo tipo que PnpObjectType.DeviceInterface.

El espacio de nombres Windows.Devices.Enumeration.PnP te permite enumerar dispositivos y contenedores de dispositivo, así como dispositivos e interfaces de dispositivo. En este tema verás cómo usar el espacio de nombres Windows.Devices.Enumeration.PnP para enumerar contenedores de dispositivo.

Objetivo: enumerar propiedades de contenedores de dispositivo.

Requisitos previos

Debes tener conocimientos de JavaScript y HTML.

Tiempo para finalizar: 20 minutos.

Instrucciones

1. Abrir Microsoft Visual Studio

Abre una instancia de Visual Studio.

2. Crear un nuevo proyecto

En el cuadro de diálogo Nuevo proyecto, en los tipos de proyecto JavaScript > Aplicaciones de la Tienda Windows, haz clic en Aplicación vacía.

3. Insertar el código HTML de la aplicación

Abre el archivo Default.html y copia este código en él, sustituyendo su contenido.


<!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. Insertar el código JavaScript

En Default.js, inserta este código.


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 />";
}

Resumen

Acabas de enumerar las propiedades del contenedor de dispositivo. Ten en cuenta que se necesita el parámetro requestedProperties en Windows.Devices.Enumeration.Pnp.findAllAsync para que los resultados de una enumeración de contenedor incluyan propiedades.