DeviceInformation クラス

定義

デバイスを表します。 このクラスを使用すると、既知のデバイス プロパティと、デバイスの列挙中に指定された追加のプロパティにアクセスできます。

public ref class DeviceInformation sealed
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class DeviceInformation final
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class DeviceInformation
Public NotInheritable Class DeviceInformation
継承
Object Platform::Object IInspectable DeviceInformation
属性

Windows の要件

デバイス ファミリ
Windows 10 (10.0.10240.0 で導入)
API contract
Windows.Foundation.UniversalApiContract (v1.0 で導入)

この例では、デバイスを段階的に列挙し、デバイスが見つかるたびにリストに追加し、削除と更新も処理します。

using System;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.IO;
using System.Diagnostics;
using System.Linq;
using System.Text;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using Windows.UI.Xaml.Media.Imaging;

using Windows.Devices.Enumeration;
using Windows.Devices.Enumeration.Pnp;


// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238

namespace Application1
{
    /// <summary>
    /// An empty page that can be used on its own or navigated to within a Frame.
    /// </summary>
    /// 
    public sealed partial class BlankPage : Page
    {
        public BlankPage()
        {

            this.InitializeComponent();
        }
        Windows.UI.Core.CoreDispatcher dispatcher;
        public static DeviceWatcher watcher = null;
        public static int count = 0;
        public static DeviceInformation[] interfaces = new DeviceInformation[1000];
        public static bool isEnumerationComplete = false;
        public static string StopStatus = null;

        async void WatchDevices(object sender, RoutedEventArgs eventArgs)
        {
            try
            {
                dispatcher = Window.Current.CoreWindow.Dispatcher;
                watcher = DeviceInformation.CreateWatcher();
                // Add event handlers
                watcher.Added += watcher_Added;
                watcher.Removed += watcher_Removed;
                watcher.Updated += watcher_Updated;
                watcher.EnumerationCompleted += watcher_EnumerationCompleted;
                watcher.Stopped += watcher_Stopped;
                watcher.Start();
                OutputText.Text = "Enumeration started.";

            }
            catch (ArgumentException)
            {
                //The ArgumentException gets thrown by FindAllAsync when the GUID isn't formatted properly
                //The only reason we're catching it here is because the user is allowed to enter GUIDs without validation
                //In normal usage of the API, this exception handling probably wouldn't be necessary when using known-good GUIDs 
                OutputText.Text = "Caught ArgumentException. Failed to create watcher.";
            }
        }

        async void StopWatcher(object sender, RoutedEventArgs eventArgs)
        {
            try
            {
                if (watcher.Status == Windows.Devices.Enumeration.DeviceWatcherStatus.Stopped)
                {
                    StopStatus = "The enumeration is already stopped.";
                }
                else
                {
                    watcher.Stop();
                }
            }
            catch (ArgumentException)
            {
                OutputText.Text = "Caught ArgumentException. Failed to stop watcher.";
            }
        }

        async void watcher_Added(DeviceWatcher sender, DeviceInformation deviceInterface)
        {
            interfaces[count] = deviceInterface;
            count += 1;
            if (isEnumerationComplete)
            {
                await dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                {
                    DisplayDeviceInterfaceArray();
                });
            }
        }

        async void watcher_Updated(DeviceWatcher sender, DeviceInformationUpdate devUpdate)
        {
            int count2 = 0;
            foreach (DeviceInformation deviceInterface in interfaces)
            {
                if (count2 < count)
                {
                    if (interfaces[count2].Id == devUpdate.Id)
                    {
                        //Update the element.
                        interfaces[count2].Update(devUpdate);
                    }

                }
                count2 += 1;
            }
            await dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
            {
                OutputText.Text = "Enumeration updated. ";
                DisplayDeviceInterfaceArray();
            });
        }

        async void watcher_Removed(DeviceWatcher sender, DeviceInformationUpdate devUpdate)
        {
            int count2 = 0;
            //Convert interfaces array to a list (IList).
            List<DeviceInformation> interfaceList = new List<DeviceInformation>(interfaces);
            foreach (DeviceInformation deviceInterface in interfaces)
            {
                if (count2 < count)
                {
                    if (interfaces[count2].Id == devUpdate.Id)
                    {
                        //Remove the element.
                        interfaceList.RemoveAt(count2);
                    }

                }
                count2 += 1;
            }
            //Convert the list back to the interfaces array.
            interfaces = interfaceList.ToArray();
            count -= 1;
            await dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
            {
                OutputText.Text = "Enumeration device was removed. ";
                DisplayDeviceInterfaceArray();
            });
        }

        async void watcher_EnumerationCompleted(DeviceWatcher sender, object args)
        {
            isEnumerationComplete = true;
            await dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                {
                    OutputText.Text = "Enumeration complete. ";
                    DisplayDeviceInterfaceArray();
                });
        }

        async void watcher_Stopped(DeviceWatcher sender, object args)
        {
            if (watcher.Status == Windows.Devices.Enumeration.DeviceWatcherStatus.Aborted)
            {
                StopStatus = "Enumeration stopped unexpectedly. Click Watch to restart enumeration.";
            }
            else if (watcher.Status == Windows.Devices.Enumeration.DeviceWatcherStatus.Stopped)
            {
                StopStatus = "You requested to stop the enumeration. Click Watch to restart enumeration.";
            }
        }

        async void DisplayDeviceInterfaceArray()
        {
            DeviceInterfacesOutputList.Items.Clear();
            int count2 = 0;
            foreach (DeviceInformation deviceInterface in interfaces)
            {
                if (count2 < count)
                {
                    DisplayDeviceInterface(deviceInterface);
                }
                count2 += 1;
            }
        }

        async void DisplayDeviceInterface(DeviceInformation deviceInterface)
        {
            var id = "Id:" + deviceInterface.Id;
            var name = deviceInterface.Name;
            var isEnabled = "IsEnabled:" + deviceInterface.IsEnabled;


            var item = id + " is \n" + name + " and \n" + isEnabled;

            DeviceInterfacesOutputList.Items.Add(item);
        }
    }
}

注釈

DeviceInformation オブジェクトは、ID (DeviceInformation.Id)、種類 (DeviceInformation.Kind)、プロパティ バック (DeviceInformation.Properties) で構成されています。 DeviceInformation オブジェクトのその他のプロパティはすべて Properties プロパティ バッグから派生します。 たとえば、NameSystem.ItemNameDisplay から派生します。

FindAllAsync が正常に完了すると、DeviceInformation オブジェクトを含む DeviceInformationCollection が作成されます。

CreateWatcher の呼び出しが成功すると、検出された各デバイスの追加イベントに DeviceInformation オブジェクトが渡されます。

Name プロパティは、ローカライズまたは名前を割り当てるユーザーが原因で名前が変更される可能性があるため、表示目的でのみ使用し、デバイスの検索には使用しないでください。

CreateFromIdAsync は、成功した場合に DeviceInformation オブジェクトを作成します。

DeviceInformation クラスはデバイス情報を提供しますが、具体的には、デバイス インターフェイスのプロパティ (デバイスが公開する機能を表すインターフェイス) を提供します。 多機能デバイスには、複数のデバイス インターフェイスが含まれる場合があります。 ユーザーがデバイスと見なす物理オブジェクトは、デバイス コンテナーと呼ばれ、 ManufacturerModelID などのプロパティを持ちます。 デバイスの列挙とプロパティの回復の詳細については、「デバイスの 列挙」を参照してください。

プロパティ

EnclosureLocation

エンクロージャ内のデバイスの物理的な位置。 たとえば、ラップトップ内の Web カメラの場所を記述できます。

Id

デバイスの ID を表す文字列。

IsDefault

このデバイスがクラスの既定のデバイスであるかどうかを示します。

IsEnabled

このデバイスが有効かどうかを示します。

Kind

このオブジェクトで表される DeviceInformation の型を取得します。

Name

デバイスの名前。 この名前は、アプリで使用できる最適な言語です。

Pairing

このデバイスがペアリングする機能に関する情報を取得します。

Properties

既知の値と、デバイスの列挙時に指定できる追加のプロパティを含むプロパティ ストア。

メソッド

CreateFromIdAsync(String)

DeviceInformation ID から DeviceInformation オブジェクトを作成します。

CreateFromIdAsync(String, IIterable<String>)

DeviceInformation ID と追加のプロパティの一覧から DeviceInformation オブジェクトを作成します。

CreateFromIdAsync(String, IIterable<String>, DeviceInformationKind)

DeviceInformation ID、追加のプロパティの一覧、および DeviceInformationKind パラメーターから DeviceInformation オブジェクトを作成します。

CreateFromIdAsync(String, IIterable<String>, DeviceInformationKind, IDeviceEnumerationSettings)

デバイスを表します。 このクラスを使用すると、既知のデバイス プロパティと、デバイスの列挙中に指定された追加のプロパティにアクセスできます。

CreateWatcher()

すべての デバイスの DeviceWatcher を作成します。

CreateWatcher(DeviceClass)

指定した DeviceClass に一致するデバイスの DeviceWatcher を作成します

CreateWatcher(String)

指定した高度なクエリ構文 (AQS) 文字列に一致するデバイス用の DeviceWatcher を作成します。

CreateWatcher(String, IIterable<String>)

指定した高度なクエリ構文 (AQS) 文字列と指定したプロパティのコレクションに一致するデバイス用の DeviceWatcher を作成します。

CreateWatcher(String, IIterable<String>, DeviceInformationKind)

指定した高度なクエリ構文 (AQS) 文字列、指定したプロパティのコレクション、およびデバイスの種類に一致するデバイス用の DeviceWatcher を作成します。

CreateWatcher(String, IIterable<String>, DeviceInformationKind, IDeviceEnumerationSettings)

デバイスを表します。 このクラスを使用すると、既知のデバイス プロパティと、デバイスの列挙中に指定された追加のプロパティにアクセスできます。

FindAllAsync()

すべての DeviceInformation オブジェクトを 列挙します。

FindAllAsync(DeviceClass)

指定したクラスの DeviceInformation オブジェクトを列挙します。

FindAllAsync(String)

指定した高度なクエリ構文 (AQS) デバイス インターフェイス セレクター文字列に一致する DeviceInformation オブジェクトを列挙します。

FindAllAsync(String, IIterable<String>)

指定した高度なクエリ構文 (AQS) デバイス インターフェイス セレクター文字列に一致し、指定したプロパティのコレクションを含む DeviceInformation オブジェクトを列挙します。

FindAllAsync(String, IIterable<String>, DeviceInformationKind)

指定した高度なクエリ構文 (AQS) デバイス インターフェイス セレクター文字列、デバイスの種類、および指定したプロパティのコレクションに一致する DeviceInformation オブジェクトを列挙します。

FindAllAsync(String, IIterable<String>, DeviceInformationKind, IDeviceEnumerationSettings)

デバイスを表します。 このクラスを使用すると、既知のデバイス プロパティと、デバイスの列挙中に指定された追加のプロパティにアクセスできます。

GetAqsFilterFromDeviceClass(DeviceClass)

デバイスの種類のサブセットを列挙するために使用するフィルターを作成します。

GetGlyphThumbnailAsync()

デバイスのグリフを取得します。

GetThumbnailAsync()

デバイスのサムネイル画像を返します。

Update(DeviceInformationUpdate)

既存の DeviceInformation オブジェクトのプロパティを更新します。

適用対象

こちらもご覧ください