//
// 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";
import "Windows.Storage.FileProperties.idl";
import "Windows.Storage.Search.idl";
import "Windows.Storage.Streams.idl";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace FileProperties
        {
            runtimeclass BasicProperties;

            runtimeclass DocumentProperties;

            runtimeclass ImageProperties;

            runtimeclass MusicProperties;

            runtimeclass StorageItemThumbnail;

            typedef enum ThumbnailMode ThumbnailMode;

            typedef enum ThumbnailOptions ThumbnailOptions;

            runtimeclass VideoProperties;
        }
    }
}
namespace Windows
{
    namespace Storage
    {
        interface IStorageFile;

        interface IStorageFile2;

        interface IStorageFilePropertiesWithAvailability;

        interface IStorageFolder;

        interface IStorageFolder2;

        interface IStorageItem;

        interface IStorageItem2;

        interface IStorageItemProperties;

        interface IStorageItemPropertiesWithProvider;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Search
        {
            interface IStorageFolderQueryOperations;

            interface IStorageQueryResultBase;
        }
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IInputStreamReference;

            interface IRandomAccessStreamReference;
        }
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace BulkAccess
        {
            interface IFileInformationFactory;

            interface IFileInformationFactoryFactory;

            interface IStorageItemInformation;

            runtimeclass FileInformation;

            runtimeclass FileInformationFactory;

            runtimeclass FolderInformation;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Storage
    {
        namespace BulkAccess
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.Storage.BulkAccess.FileInformation*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Storage.BulkAccess.FolderInformation*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Storage.BulkAccess.IStorageItemInformation*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Storage.BulkAccess.FileInformation*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Storage.BulkAccess.FolderInformation*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Storage.BulkAccess.IStorageItemInformation*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Storage.BulkAccess.FileInformation*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Storage.BulkAccess.FolderInformation*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Storage.BulkAccess.IStorageItemInformation*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Storage.BulkAccess.FileInformation*>*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Storage.BulkAccess.FolderInformation*>*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Storage.BulkAccess.IStorageItemInformation*>*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Storage.BulkAccess.IStorageItemInformation*, IInspectable*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Storage
    {
        namespace BulkAccess
        {
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Storage.BulkAccess.FileInformationFactory)]
            [uuid(401D88BE-960F-4D6D-A7D0-1A3861E76C83)]
            interface IFileInformationFactory : IInspectable
            {
                [overload("GetItemsAsync")] HRESULT GetItemsAsync([in] UINT32 startIndex, [in] UINT32 maxItemsToRetrieve, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Storage.BulkAccess.IStorageItemInformation*>*>** operation);
                [overload("GetItemsAsync")] HRESULT GetItemsAsyncDefaultStartAndCount([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Storage.BulkAccess.IStorageItemInformation*>*>** operation);
                [overload("GetFilesAsync")] HRESULT GetFilesAsync([in] UINT32 startIndex, [in] UINT32 maxItemsToRetrieve, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Storage.BulkAccess.FileInformation*>*>** operation);
                [overload("GetFilesAsync")] HRESULT GetFilesAsyncDefaultStartAndCount([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Storage.BulkAccess.FileInformation*>*>** operation);
                [overload("GetFoldersAsync")] HRESULT GetFoldersAsync([in] UINT32 startIndex, [in] UINT32 maxItemsToRetrieve, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Storage.BulkAccess.FolderInformation*>*>** operation);
                [overload("GetFoldersAsync")] HRESULT GetFoldersAsyncDefaultStartAndCount([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Storage.BulkAccess.FolderInformation*>*>** operation);
                HRESULT GetVirtualizedItemsVector([out] [retval] IInspectable** vector);
                HRESULT GetVirtualizedFilesVector([out] [retval] IInspectable** vector);
                HRESULT GetVirtualizedFoldersVector([out] [retval] IInspectable** vector);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Storage.BulkAccess.FileInformationFactory)]
            [uuid(84EA0E7D-E4A2-4F00-8AFA-AF5E0F826BD5)]
            interface IFileInformationFactoryFactory : IInspectable
            {
                HRESULT CreateWithMode([in] Windows.Storage.Search.IStorageQueryResultBase* queryResult, [in] Windows.Storage.FileProperties.ThumbnailMode mode, [out] [retval] Windows.Storage.BulkAccess.FileInformationFactory** value);
                HRESULT CreateWithModeAndSize([in] Windows.Storage.Search.IStorageQueryResultBase* queryResult, [in] Windows.Storage.FileProperties.ThumbnailMode mode, [in] UINT32 requestedThumbnailSize, [out] [retval] Windows.Storage.BulkAccess.FileInformationFactory** value);
                HRESULT CreateWithModeAndSizeAndOptions([in] Windows.Storage.Search.IStorageQueryResultBase* queryResult, [in] Windows.Storage.FileProperties.ThumbnailMode mode, [in] UINT32 requestedThumbnailSize, [in] Windows.Storage.FileProperties.ThumbnailOptions thumbnailOptions, [out] [retval] Windows.Storage.BulkAccess.FileInformationFactory** value);
                HRESULT CreateWithModeAndSizeAndOptionsAndFlags([in] Windows.Storage.Search.IStorageQueryResultBase* queryResult, [in] Windows.Storage.FileProperties.ThumbnailMode mode, [in] UINT32 requestedThumbnailSize, [in] Windows.Storage.FileProperties.ThumbnailOptions thumbnailOptions, [in] boolean delayLoad, [out] [retval] Windows.Storage.BulkAccess.FileInformationFactory** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(87A5CB8B-8972-4F40-8DE0-D86FB179D8FA)]
            interface IStorageItemInformation : IInspectable
            {
                [propget] HRESULT MusicProperties([out] [retval] Windows.Storage.FileProperties.MusicProperties** value);
                [propget] HRESULT VideoProperties([out] [retval] Windows.Storage.FileProperties.VideoProperties** value);
                [propget] HRESULT ImageProperties([out] [retval] Windows.Storage.FileProperties.ImageProperties** value);
                [propget] HRESULT DocumentProperties([out] [retval] Windows.Storage.FileProperties.DocumentProperties** value);
                [propget] HRESULT BasicProperties([out] [retval] Windows.Storage.FileProperties.BasicProperties** value);
                [propget] HRESULT Thumbnail([out] [retval] Windows.Storage.FileProperties.StorageItemThumbnail** value);
                [eventadd] HRESULT ThumbnailUpdated([in] Windows.Foundation.TypedEventHandler<Windows.Storage.BulkAccess.IStorageItemInformation*, IInspectable*>* changedHandler, [out] [retval] EventRegistrationToken* eventCookie);
                [eventremove] HRESULT ThumbnailUpdated([in] EventRegistrationToken eventCookie);
                [eventadd] HRESULT PropertiesUpdated([in] Windows.Foundation.TypedEventHandler<Windows.Storage.BulkAccess.IStorageItemInformation*, IInspectable*>* changedHandler, [out] [retval] EventRegistrationToken* eventCookie);
                [eventremove] HRESULT PropertiesUpdated([in] EventRegistrationToken eventCookie);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            runtimeclass FileInformation
            {
                [default] interface Windows.Storage.BulkAccess.IStorageItemInformation;
                interface Windows.Storage.IStorageFile;
                interface Windows.Storage.Streams.IInputStreamReference;
                interface Windows.Storage.Streams.IRandomAccessStreamReference;
                interface Windows.Storage.IStorageItem;
                interface Windows.Storage.IStorageItemProperties;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Storage.IStorageItem2;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Storage.IStorageItemPropertiesWithProvider;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Storage.IStorageFilePropertiesWithAvailability;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Storage.IStorageFile2;
            }

            [activatable(Windows.Storage.BulkAccess.IFileInformationFactoryFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass FileInformationFactory
            {
                [default] interface Windows.Storage.BulkAccess.IFileInformationFactory;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            runtimeclass FolderInformation
            {
                [default] interface Windows.Storage.BulkAccess.IStorageItemInformation;
                interface Windows.Storage.IStorageFolder;
                interface Windows.Storage.IStorageItem;
                interface Windows.Storage.IStorageItemProperties;
                interface Windows.Storage.Search.IStorageFolderQueryOperations;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Storage.IStorageItem2;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Storage.IStorageFolder2;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Storage.IStorageItemPropertiesWithProvider;
            }
        }
    }
}
