//
// Copyright (c) Microsoft Corporation. All rights reserved.
// 
//
// File generated by WinMDIDL version 8.00.0021
//

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "windowscontracts.idl";
import "Windows.Foundation.idl";
import "Windows.Storage.idl";

// Forward Declare
namespace Windows
{
    namespace Storage
    {
        runtimeclass StorageFolder;
    }
}
namespace Windows
{
    namespace Devices
    {
        namespace Portable
        {
            apicontract PortableDeviceContract;

            typedef enum ServiceDeviceType ServiceDeviceType;

            interface IServiceDeviceStatics;

            interface IStorageDeviceStatics;

            runtimeclass ServiceDevice;

            runtimeclass StorageDevice;
        }
    }
}

// Generic instantiations

// Type definition
namespace Windows
{
    namespace Devices
    {
        namespace Portable
        {
            [contractversion(1.0)]
            apicontract PortableDeviceContract
            {
            }

            [contract(Windows.Devices.Portable.PortableDeviceContract, 1.0)]
            enum ServiceDeviceType
            {
                CalendarService     = 0,
                ContactsService     = 1,
                DeviceStatusService = 2,
                NotesService        = 3,
                RingtonesService    = 4,
                SmsService          = 5,
                TasksService        = 6
            };

            [contract(Windows.Devices.Portable.PortableDeviceContract, 1.0)]
            [exclusiveto(Windows.Devices.Portable.ServiceDevice)]
            [uuid(A88214E1-59C7-4A20-ABA6-9F6707937230)]
            interface IServiceDeviceStatics : IInspectable
            {
                HRESULT GetDeviceSelector([in] Windows.Devices.Portable.ServiceDeviceType serviceType, [out] [retval] HSTRING* selector);
                HRESULT GetDeviceSelectorFromServiceId([in] GUID serviceId, [out] [retval] HSTRING* selector);
            }

            [contract(Windows.Devices.Portable.PortableDeviceContract, 1.0)]
            [exclusiveto(Windows.Devices.Portable.StorageDevice)]
            [uuid(5ECE44EE-1B23-4DD2-8652-BC164F003128)]
            interface IStorageDeviceStatics : IInspectable
            {
                HRESULT FromId([in] HSTRING deviceId, [out] [retval] Windows.Storage.StorageFolder** deviceRoot);
                HRESULT GetDeviceSelector([out] [retval] HSTRING* selector);
            }

            [contract(Windows.Devices.Portable.PortableDeviceContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Devices.Portable.IServiceDeviceStatics, Windows.Devices.Portable.PortableDeviceContract, 1.0)]
            [threading(both)]
            runtimeclass ServiceDevice
            {
            }

            [contract(Windows.Devices.Portable.PortableDeviceContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Devices.Portable.IStorageDeviceStatics, Windows.Devices.Portable.PortableDeviceContract, 1.0)]
            [threading(both)]
            runtimeclass StorageDevice
            {
            }
        }
    }
}
