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

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        typedef struct DateTime DateTime;

        runtimeclass Deferral;

        interface IClosable;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Networking
    {
        runtimeclass HostName;
    }
}
namespace Windows
{
    namespace Storage
    {
        typedef enum CreationCollisionOption CreationCollisionOption;

        interface IStorageFile;

        interface IStorageFolder;

        interface IStorageItem;

        typedef enum NameCollisionOption NameCollisionOption;

        runtimeclass StorageFile;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IBuffer;

            interface IInputStream;

            interface IOutputStream;

            interface IRandomAccessStream;
        }
    }
}
namespace Windows
{
    namespace Security
    {
        namespace EnterpriseData
        {
            apicontract EnterpriseDataContract;

            typedef enum DataProtectionStatus DataProtectionStatus;

            typedef enum EnforcementLevel EnforcementLevel;

            typedef enum FileProtectionStatus FileProtectionStatus;

            typedef enum ProtectedImportExportStatus ProtectedImportExportStatus;

            typedef enum ProtectionPolicyAuditAction ProtectionPolicyAuditAction;

            typedef enum ProtectionPolicyEvaluationResult ProtectionPolicyEvaluationResult;

            typedef enum ProtectionPolicyRequestAccessBehavior ProtectionPolicyRequestAccessBehavior;

            interface IBufferProtectUnprotectResult;

            interface IDataProtectionInfo;

            interface IDataProtectionManagerStatics;

            interface IFileProtectionInfo;

            interface IFileProtectionInfo2;

            interface IFileProtectionManagerStatics;

            interface IFileProtectionManagerStatics2;

            interface IFileProtectionManagerStatics3;

            interface IFileRevocationManagerStatics;

            interface IFileUnprotectOptions;

            interface IFileUnprotectOptionsFactory;

            interface IProtectedAccessResumedEventArgs;

            interface IProtectedAccessSuspendingEventArgs;

            interface IProtectedContainerExportResult;

            interface IProtectedContainerImportResult;

            interface IProtectedContentRevokedEventArgs;

            interface IProtectedFileCreateResult;

            interface IProtectionPolicyAuditInfo;

            interface IProtectionPolicyAuditInfoFactory;

            interface IProtectionPolicyManager;

            interface IProtectionPolicyManager2;

            interface IProtectionPolicyManagerStatics;

            interface IProtectionPolicyManagerStatics2;

            interface IProtectionPolicyManagerStatics3;

            interface IProtectionPolicyManagerStatics4;

            interface IThreadNetworkContext;

            runtimeclass BufferProtectUnprotectResult;

            runtimeclass DataProtectionInfo;

            runtimeclass DataProtectionManager;

            runtimeclass FileProtectionInfo;

            runtimeclass FileProtectionManager;

            runtimeclass FileRevocationManager;

            runtimeclass FileUnprotectOptions;

            runtimeclass ProtectedAccessResumedEventArgs;

            runtimeclass ProtectedAccessSuspendingEventArgs;

            runtimeclass ProtectedContainerExportResult;

            runtimeclass ProtectedContainerImportResult;

            runtimeclass ProtectedContentRevokedEventArgs;

            runtimeclass ProtectedFileCreateResult;

            runtimeclass ProtectionPolicyAuditInfo;

            runtimeclass ProtectionPolicyManager;

            runtimeclass ThreadNetworkContext;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Security
    {
        namespace EnterpriseData
        {
            declare
            {
                interface Windows.Foundation.EventHandler<Windows.Security.EnterpriseData.ProtectedAccessResumedEventArgs*>;

                interface Windows.Foundation.EventHandler<Windows.Security.EnterpriseData.ProtectedAccessSuspendingEventArgs*>;

                interface Windows.Foundation.EventHandler<Windows.Security.EnterpriseData.ProtectedContentRevokedEventArgs*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.BufferProtectUnprotectResult*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.DataProtectionInfo*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.FileProtectionInfo*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.FileProtectionStatus>;

                interface Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.ProtectedContainerExportResult*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.ProtectedContainerImportResult*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.ProtectedFileCreateResult*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.ProtectionPolicyEvaluationResult>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Security
    {
        namespace EnterpriseData
        {
            [contractversion(5.0)]
            apicontract EnterpriseDataContract
            {
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            enum DataProtectionStatus
            {
                ProtectedToOtherIdentity = 0,
                Protected                = 1,
                Revoked                  = 2,
                Unprotected              = 3,
                [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 2.0)]
                LicenseExpired           = 4,
                [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 2.0)]
                AccessSuspended          = 5
            };

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 2.0)]
            enum EnforcementLevel
            {
                NoProtection = 0,
                Silent       = 1,
                Override     = 2,
                Block        = 3
            };

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            enum FileProtectionStatus
            {
                [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
                [deprecated("Undetermined might be unavailable after Windows 10. Instead, use Unknown.", deprecate, Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
                Undetermined               = 0,
                [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
                Unknown                    = 0,
                Unprotected                = 1,
                Revoked                    = 2,
                Protected                  = 3,
                [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
                [deprecated("ProtectedByOtherUser might be unavailable after Windows 10. Instead, use ProtectedToOtherIdentity.", deprecate, Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
                ProtectedByOtherUser       = 4,
                [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
                [deprecated("ProtectedToOtherEnterprise might be unavailable after Windows 10. Instead, use ProtectedToOtherIdentity.", deprecate, Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
                ProtectedToOtherEnterprise = 5,
                NotProtectable             = 6,
                [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
                ProtectedToOtherIdentity   = 7,
                [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 2.0)]
                LicenseExpired             = 8,
                [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 2.0)]
                AccessSuspended            = 9,
                [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 3.0)]
                FileInUse                  = 10
            };

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            enum ProtectedImportExportStatus
            {
                Ok                       = 0,
                Undetermined             = 1,
                Unprotected              = 2,
                Revoked                  = 3,
                NotRoamable              = 4,
                ProtectedToOtherIdentity = 5,
                [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 2.0)]
                LicenseExpired           = 6,
                [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 2.0)]
                AccessSuspended          = 7
            };

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 3.0)]
            enum ProtectionPolicyAuditAction
            {
                Decrypt         = 0,
                CopyToLocation  = 1,
                SendToRecipient = 2,
                Other           = 3
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum ProtectionPolicyEvaluationResult
            {
                Allowed         = 0,
                Blocked         = 1,
                ConsentRequired = 2
            };

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 3.0)]
            enum ProtectionPolicyRequestAccessBehavior
            {
                Decrypt                    = 0,
                TreatOverridePolicyAsBlock = 1
            };

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [exclusiveto(Windows.Security.EnterpriseData.BufferProtectUnprotectResult)]
            [uuid(47995EDC-6CEC-4E3A-B251-9E7485D79E7A)]
            interface IBufferProtectUnprotectResult : IInspectable
            {
                [propget] HRESULT Buffer([out] [retval] Windows.Storage.Streams.IBuffer** value);
                [propget] HRESULT ProtectionInfo([out] [retval] Windows.Security.EnterpriseData.DataProtectionInfo** value);
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [exclusiveto(Windows.Security.EnterpriseData.DataProtectionInfo)]
            [uuid(8420B0C1-5E31-4405-9540-3F943AF0CB26)]
            interface IDataProtectionInfo : IInspectable
            {
                [propget] HRESULT Status([out] [retval] Windows.Security.EnterpriseData.DataProtectionStatus* value);
                [propget] HRESULT Identity([out] [retval] HSTRING* value);
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [exclusiveto(Windows.Security.EnterpriseData.DataProtectionManager)]
            [uuid(B6149B74-9144-4EE4-8A8A-30B5F361430E)]
            interface IDataProtectionManagerStatics : IInspectable
            {
                HRESULT ProtectAsync([in] Windows.Storage.Streams.IBuffer* data, [in] HSTRING identity, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.BufferProtectUnprotectResult*>** result);
                HRESULT UnprotectAsync([in] Windows.Storage.Streams.IBuffer* data, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.BufferProtectUnprotectResult*>** result);
                HRESULT ProtectStreamAsync([in] Windows.Storage.Streams.IInputStream* unprotectedStream, [in] HSTRING identity, [in] Windows.Storage.Streams.IOutputStream* protectedStream, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.DataProtectionInfo*>** result);
                HRESULT UnprotectStreamAsync([in] Windows.Storage.Streams.IInputStream* protectedStream, [in] Windows.Storage.Streams.IOutputStream* unprotectedStream, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.DataProtectionInfo*>** result);
                HRESULT GetProtectionInfoAsync([in] Windows.Storage.Streams.IBuffer* protectedData, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.DataProtectionInfo*>** result);
                HRESULT GetStreamProtectionInfoAsync([in] Windows.Storage.Streams.IInputStream* protectedStream, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.DataProtectionInfo*>** result);
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [exclusiveto(Windows.Security.EnterpriseData.FileProtectionInfo)]
            [uuid(4EE96486-147E-4DD0-8FAF-5253ED91AD0C)]
            interface IFileProtectionInfo : IInspectable
            {
                [propget] HRESULT Status([out] [retval] Windows.Security.EnterpriseData.FileProtectionStatus* value);
                [propget] HRESULT IsRoamable([out] [retval] boolean* value);
                [propget] HRESULT Identity([out] [retval] HSTRING* value);
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 5.0)]
            [exclusiveto(Windows.Security.EnterpriseData.FileProtectionInfo)]
            [uuid(82123A4C-557A-498D-8E94-944CD5836432)]
            interface IFileProtectionInfo2 : IInspectable
            {
                [propget] HRESULT IsProtectWhileOpenSupported([out] [retval] boolean* value);
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [exclusiveto(Windows.Security.EnterpriseData.FileProtectionManager)]
            [uuid(5846FC9B-E613-426B-BB38-88CBA1DC9ADB)]
            interface IFileProtectionManagerStatics : IInspectable
            {
                HRESULT ProtectAsync([in] Windows.Storage.IStorageItem* target, [in] HSTRING identity, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.FileProtectionInfo*>** result);
                HRESULT CopyProtectionAsync([in] Windows.Storage.IStorageItem* source, [in] Windows.Storage.IStorageItem* target, [out] [retval] Windows.Foundation.IAsyncOperation<boolean>** result);
                HRESULT GetProtectionInfoAsync([in] Windows.Storage.IStorageItem* source, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.FileProtectionInfo*>** result);
                [overload("SaveFileAsContainerAsync")] HRESULT SaveFileAsContainerAsync([in] Windows.Storage.IStorageFile* protectedFile, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.ProtectedContainerExportResult*>** result);
                [overload("LoadFileFromContainerAsync")] HRESULT LoadFileFromContainerAsync([in] Windows.Storage.IStorageFile* containerFile, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.ProtectedContainerImportResult*>** result);
                [overload("LoadFileFromContainerAsync")] HRESULT LoadFileFromContainerWithTargetAsync([in] Windows.Storage.IStorageFile* containerFile, [in] Windows.Storage.IStorageItem* target, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.ProtectedContainerImportResult*>** result);
                HRESULT CreateProtectedAndOpenAsync([in] Windows.Storage.IStorageFolder* parentFolder, [in] HSTRING desiredName, [in] HSTRING identity, [in] Windows.Storage.CreationCollisionOption collisionOption, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.ProtectedFileCreateResult*>** result);
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 2.0)]
            [exclusiveto(Windows.Security.EnterpriseData.FileProtectionManager)]
            [uuid(83D2A745-0483-41AB-B2D5-BC7F23D74EBB)]
            interface IFileProtectionManagerStatics2 : IInspectable
            {
                HRESULT IsContainerAsync([in] Windows.Storage.IStorageFile* file, [out] [retval] Windows.Foundation.IAsyncOperation<boolean>** result);
                [default_overload] [overload("LoadFileFromContainerAsync")] HRESULT LoadFileFromContainerWithTargetAndNameCollisionOptionAsync([in] Windows.Storage.IStorageFile* containerFile, [in] Windows.Storage.IStorageItem* target, [in] Windows.Storage.NameCollisionOption collisionOption, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.ProtectedContainerImportResult*>** result);
                [default_overload] [overload("SaveFileAsContainerAsync")] HRESULT SaveFileAsContainerWithSharingAsync([in] Windows.Storage.IStorageFile* protectedFile, [in] Windows.Foundation.Collections.IIterable<HSTRING>* sharedWithIdentities, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.ProtectedContainerExportResult*>** result);
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 4.0)]
            [exclusiveto(Windows.Security.EnterpriseData.FileProtectionManager)]
            [uuid(6918849A-624F-46D6-B241-E9CD5FDF3E3F)]
            interface IFileProtectionManagerStatics3 : IInspectable
            {
                [overload("UnprotectAsync")] HRESULT UnprotectAsync([in] Windows.Storage.IStorageItem* target, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.FileProtectionInfo*>** result);
                [overload("UnprotectAsync")] HRESULT UnprotectWithOptionsAsync([in] Windows.Storage.IStorageItem* target, [in] Windows.Security.EnterpriseData.FileUnprotectOptions* options, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.FileProtectionInfo*>** result);
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [deprecated("FileRevocationManager might be unavailable after Windows 10. Instead, use FileProtectionManager.", deprecate, Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [exclusiveto(Windows.Security.EnterpriseData.FileRevocationManager)]
            [uuid(256BBC3D-1C5D-4260-8C75-9144CFB78BA9)]
            interface IFileRevocationManagerStatics : IInspectable
            {
                [deprecated("FileRevocationManager might be unavailable after Windows 10. Instead, use FileProtectionManager.", deprecate, Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)] HRESULT ProtectAsync([in] Windows.Storage.IStorageItem* storageItem, [in] HSTRING enterpriseIdentity, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.FileProtectionStatus>** result);
                [deprecated("FileRevocationManager might be unavailable after Windows 10. Instead, use FileProtectionManager.", deprecate, Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)] HRESULT CopyProtectionAsync([in] Windows.Storage.IStorageItem* sourceStorageItem, [in] Windows.Storage.IStorageItem* targetStorageItem, [out] [retval] Windows.Foundation.IAsyncOperation<boolean>** result);
                [deprecated("FileRevocationManager might be unavailable after Windows 10. Instead, use FileProtectionManager.", deprecate, Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)] HRESULT Revoke([in] HSTRING enterpriseIdentity);
                [deprecated("FileRevocationManager might be unavailable after Windows 10. Instead, use FileProtectionManager.", deprecate, Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)] HRESULT GetStatusAsync([in] Windows.Storage.IStorageItem* storageItem, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.FileProtectionStatus>** result);
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 4.0)]
            [exclusiveto(Windows.Security.EnterpriseData.FileUnprotectOptions)]
            [uuid(7D1312F1-3B0D-4DD8-A1F8-1EC53822E2F3)]
            interface IFileUnprotectOptions : IInspectable
            {
                [propput] HRESULT Audit([in] boolean value);
                [propget] HRESULT Audit([out] [retval] boolean* value);
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 4.0)]
            [exclusiveto(Windows.Security.EnterpriseData.FileUnprotectOptions)]
            [uuid(51AEB39C-DA8C-4C3F-9BFB-CB73A7CCE0DD)]
            interface IFileUnprotectOptionsFactory : IInspectable
            {
                HRESULT Create([in] boolean audit, [out] [retval] Windows.Security.EnterpriseData.FileUnprotectOptions** result);
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [exclusiveto(Windows.Security.EnterpriseData.ProtectedAccessResumedEventArgs)]
            [uuid(AC4DCA59-5D80-4E95-8C5F-8539450EEBE0)]
            interface IProtectedAccessResumedEventArgs : IInspectable
            {
                [propget] HRESULT Identities([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [exclusiveto(Windows.Security.EnterpriseData.ProtectedAccessSuspendingEventArgs)]
            [uuid(75A193E0-A344-429F-B975-04FC1F88C185)]
            interface IProtectedAccessSuspendingEventArgs : IInspectable
            {
                [propget] HRESULT Identities([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
                [propget] HRESULT Deadline([out] [retval] Windows.Foundation.DateTime* value);
                HRESULT GetDeferral([out] [retval] Windows.Foundation.Deferral** result);
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [exclusiveto(Windows.Security.EnterpriseData.ProtectedContainerExportResult)]
            [uuid(3948EF95-F7FB-4B42-AFB0-DF70B41543C1)]
            interface IProtectedContainerExportResult : IInspectable
            {
                [propget] HRESULT Status([out] [retval] Windows.Security.EnterpriseData.ProtectedImportExportStatus* value);
                [propget] HRESULT File([out] [retval] Windows.Storage.StorageFile** value);
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [exclusiveto(Windows.Security.EnterpriseData.ProtectedContainerImportResult)]
            [uuid(CDB780D1-E7BB-4D1A-9339-34DC41149F9B)]
            interface IProtectedContainerImportResult : IInspectable
            {
                [propget] HRESULT Status([out] [retval] Windows.Security.EnterpriseData.ProtectedImportExportStatus* value);
                [propget] HRESULT File([out] [retval] Windows.Storage.StorageFile** value);
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [exclusiveto(Windows.Security.EnterpriseData.ProtectedContentRevokedEventArgs)]
            [uuid(63686821-58B9-47EE-93D9-F0F741CF43F0)]
            interface IProtectedContentRevokedEventArgs : IInspectable
            {
                [propget] HRESULT Identities([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [exclusiveto(Windows.Security.EnterpriseData.ProtectedFileCreateResult)]
            [uuid(28E3ED6A-E9E7-4A03-9F53-BDB16172699B)]
            interface IProtectedFileCreateResult : IInspectable
            {
                [propget] HRESULT File([out] [retval] Windows.Storage.StorageFile** value);
                [propget] HRESULT Stream([out] [retval] Windows.Storage.Streams.IRandomAccessStream** value);
                [propget] HRESULT ProtectionInfo([out] [retval] Windows.Security.EnterpriseData.FileProtectionInfo** value);
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 3.0)]
            [exclusiveto(Windows.Security.EnterpriseData.ProtectionPolicyAuditInfo)]
            [uuid(425AB7E4-FEB7-44FC-B3BB-C3C4D7ECBEBB)]
            interface IProtectionPolicyAuditInfo : IInspectable
            {
                [propput] HRESULT Action([in] Windows.Security.EnterpriseData.ProtectionPolicyAuditAction value);
                [propget] HRESULT Action([out] [retval] Windows.Security.EnterpriseData.ProtectionPolicyAuditAction* value);
                [propput] HRESULT DataDescription([in] HSTRING value);
                [propget] HRESULT DataDescription([out] [retval] HSTRING* value);
                [propput] HRESULT SourceDescription([in] HSTRING value);
                [propget] HRESULT SourceDescription([out] [retval] HSTRING* value);
                [propput] HRESULT TargetDescription([in] HSTRING value);
                [propget] HRESULT TargetDescription([out] [retval] HSTRING* value);
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 3.0)]
            [exclusiveto(Windows.Security.EnterpriseData.ProtectionPolicyAuditInfo)]
            [uuid(7ED4180B-92E8-42D5-83D4-25440B423549)]
            interface IProtectionPolicyAuditInfoFactory : IInspectable
            {
                HRESULT Create([in] Windows.Security.EnterpriseData.ProtectionPolicyAuditAction action, [in] HSTRING dataDescription, [in] HSTRING sourceDescription, [in] HSTRING targetDescription, [out] [retval] Windows.Security.EnterpriseData.ProtectionPolicyAuditInfo** result);
                HRESULT CreateWithActionAndDataDescription([in] Windows.Security.EnterpriseData.ProtectionPolicyAuditAction action, [in] HSTRING dataDescription, [out] [retval] Windows.Security.EnterpriseData.ProtectionPolicyAuditInfo** result);
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [exclusiveto(Windows.Security.EnterpriseData.ProtectionPolicyManager)]
            [uuid(D5703E18-A08D-47E6-A240-9934D7165EB5)]
            interface IProtectionPolicyManager : IInspectable
            {
                [propput] HRESULT Identity([in] HSTRING value);
                [propget] HRESULT Identity([out] [retval] HSTRING* value);
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 3.0)]
            [exclusiveto(Windows.Security.EnterpriseData.ProtectionPolicyManager)]
            [uuid(ABF7527A-8435-417F-99B6-51BEAF365888)]
            interface IProtectionPolicyManager2 : IInspectable
            {
                [propput] HRESULT ShowEnterpriseIndicator([in] boolean value);
                [propget] HRESULT ShowEnterpriseIndicator([out] [retval] boolean* value);
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [exclusiveto(Windows.Security.EnterpriseData.ProtectionPolicyManager)]
            [uuid(C0BFFC66-8C3D-4D56-8804-C68F0AD32EC5)]
            interface IProtectionPolicyManagerStatics : IInspectable
            {
                HRESULT IsIdentityManaged([in] HSTRING identity, [out] [retval] boolean* result);
                HRESULT TryApplyProcessUIPolicy([in] HSTRING identity, [out] [retval] boolean* result);
                HRESULT ClearProcessUIPolicy();
                HRESULT CreateCurrentThreadNetworkContext([in] HSTRING identity, [out] [retval] Windows.Security.EnterpriseData.ThreadNetworkContext** result);
                HRESULT GetPrimaryManagedIdentityForNetworkEndpointAsync([in] Windows.Networking.HostName* endpointHost, [out] [retval] Windows.Foundation.IAsyncOperation<HSTRING>** result);
                HRESULT RevokeContent([in] HSTRING identity);
                HRESULT GetForCurrentView([out] [retval] Windows.Security.EnterpriseData.ProtectionPolicyManager** result);
                [eventadd] HRESULT ProtectedAccessSuspending([in] Windows.Foundation.EventHandler<Windows.Security.EnterpriseData.ProtectedAccessSuspendingEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT ProtectedAccessSuspending([in] EventRegistrationToken token);
                [eventadd] HRESULT ProtectedAccessResumed([in] Windows.Foundation.EventHandler<Windows.Security.EnterpriseData.ProtectedAccessResumedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT ProtectedAccessResumed([in] EventRegistrationToken token);
                [eventadd] HRESULT ProtectedContentRevoked([in] Windows.Foundation.EventHandler<Windows.Security.EnterpriseData.ProtectedContentRevokedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT ProtectedContentRevoked([in] EventRegistrationToken token);
                HRESULT CheckAccess([in] HSTRING sourceIdentity, [in] HSTRING targetIdentity, [out] [retval] Windows.Security.EnterpriseData.ProtectionPolicyEvaluationResult* result);
                [overload("RequestAccessAsync")] HRESULT RequestAccessAsync([in] HSTRING sourceIdentity, [in] HSTRING targetIdentity, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.ProtectionPolicyEvaluationResult>** result);
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 2.0)]
            [exclusiveto(Windows.Security.EnterpriseData.ProtectionPolicyManager)]
            [uuid(B68F9A8C-39E0-4649-B2E4-070AB8A579B3)]
            interface IProtectionPolicyManagerStatics2 : IInspectable
            {
                HRESULT HasContentBeenRevokedSince([in] HSTRING identity, [in] Windows.Foundation.DateTime since, [out] [retval] boolean* result);
                HRESULT CheckAccessForApp([in] HSTRING sourceIdentity, [in] HSTRING appPackageFamilyName, [out] [retval] Windows.Security.EnterpriseData.ProtectionPolicyEvaluationResult* result);
                [overload("RequestAccessForAppAsync")] HRESULT RequestAccessForAppAsync([in] HSTRING sourceIdentity, [in] HSTRING appPackageFamilyName, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.ProtectionPolicyEvaluationResult>** result);
                HRESULT GetEnforcementLevel([in] HSTRING identity, [out] [retval] Windows.Security.EnterpriseData.EnforcementLevel* value);
                HRESULT IsUserDecryptionAllowed([in] HSTRING identity, [out] [retval] boolean* value);
                HRESULT IsProtectionUnderLockRequired([in] HSTRING identity, [out] [retval] boolean* value);
                [eventadd] HRESULT PolicyChanged([in] Windows.Foundation.EventHandler<IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT PolicyChanged([in] EventRegistrationToken token);
                [propget] HRESULT IsProtectionEnabled([out] [retval] boolean* value);
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 3.0)]
            [exclusiveto(Windows.Security.EnterpriseData.ProtectionPolicyManager)]
            [uuid(48FF9E8C-6A6F-4D9F-BCED-18AB537AA015)]
            interface IProtectionPolicyManagerStatics3 : IInspectable
            {
                [overload("RequestAccessAsync")] HRESULT RequestAccessWithAuditingInfoAsync([in] HSTRING sourceIdentity, [in] HSTRING targetIdentity, [in] Windows.Security.EnterpriseData.ProtectionPolicyAuditInfo* auditInfo, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.ProtectionPolicyEvaluationResult>** result);
                [overload("RequestAccessAsync")] HRESULT RequestAccessWithMessageAsync([in] HSTRING sourceIdentity, [in] HSTRING targetIdentity, [in] Windows.Security.EnterpriseData.ProtectionPolicyAuditInfo* auditInfo, [in] HSTRING messageFromApp, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.ProtectionPolicyEvaluationResult>** result);
                [overload("RequestAccessForAppAsync")] HRESULT RequestAccessForAppWithAuditingInfoAsync([in] HSTRING sourceIdentity, [in] HSTRING appPackageFamilyName, [in] Windows.Security.EnterpriseData.ProtectionPolicyAuditInfo* auditInfo, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.ProtectionPolicyEvaluationResult>** result);
                [overload("RequestAccessForAppAsync")] HRESULT RequestAccessForAppWithMessageAsync([in] HSTRING sourceIdentity, [in] HSTRING appPackageFamilyName, [in] Windows.Security.EnterpriseData.ProtectionPolicyAuditInfo* auditInfo, [in] HSTRING messageFromApp, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.ProtectionPolicyEvaluationResult>** result);
                HRESULT LogAuditEvent([in] HSTRING sourceIdentity, [in] HSTRING targetIdentity, [in] Windows.Security.EnterpriseData.ProtectionPolicyAuditInfo* auditInfo);
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 4.0)]
            [exclusiveto(Windows.Security.EnterpriseData.ProtectionPolicyManager)]
            [uuid(20B794DB-CCBD-490F-8C83-49CCB77AEA6C)]
            interface IProtectionPolicyManagerStatics4 : IInspectable
            {
                HRESULT IsRoamableProtectionEnabled([in] HSTRING identity, [out] [retval] boolean* value);
                [overload("RequestAccessAsync")] HRESULT RequestAccessWithBehaviorAsync([in] HSTRING sourceIdentity, [in] HSTRING targetIdentity, [in] Windows.Security.EnterpriseData.ProtectionPolicyAuditInfo* auditInfo, [in] HSTRING messageFromApp, [in] Windows.Security.EnterpriseData.ProtectionPolicyRequestAccessBehavior behavior, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.ProtectionPolicyEvaluationResult>** result);
                [overload("RequestAccessForAppAsync")] HRESULT RequestAccessForAppWithBehaviorAsync([in] HSTRING sourceIdentity, [in] HSTRING appPackageFamilyName, [in] Windows.Security.EnterpriseData.ProtectionPolicyAuditInfo* auditInfo, [in] HSTRING messageFromApp, [in] Windows.Security.EnterpriseData.ProtectionPolicyRequestAccessBehavior behavior, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.ProtectionPolicyEvaluationResult>** result);
                [overload("RequestAccessToFilesForAppAsync")] HRESULT RequestAccessToFilesForAppAsync([in] Windows.Foundation.Collections.IIterable<Windows.Storage.IStorageItem*>* sourceItemList, [in] HSTRING appPackageFamilyName, [in] Windows.Security.EnterpriseData.ProtectionPolicyAuditInfo* auditInfo, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.ProtectionPolicyEvaluationResult>** result);
                [overload("RequestAccessToFilesForAppAsync")] HRESULT RequestAccessToFilesForAppWithMessageAndBehaviorAsync([in] Windows.Foundation.Collections.IIterable<Windows.Storage.IStorageItem*>* sourceItemList, [in] HSTRING appPackageFamilyName, [in] Windows.Security.EnterpriseData.ProtectionPolicyAuditInfo* auditInfo, [in] HSTRING messageFromApp, [in] Windows.Security.EnterpriseData.ProtectionPolicyRequestAccessBehavior behavior, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.ProtectionPolicyEvaluationResult>** result);
                [overload("RequestAccessToFilesForProcessAsync")] HRESULT RequestAccessToFilesForProcessAsync([in] Windows.Foundation.Collections.IIterable<Windows.Storage.IStorageItem*>* sourceItemList, [in] UINT32 processId, [in] Windows.Security.EnterpriseData.ProtectionPolicyAuditInfo* auditInfo, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.ProtectionPolicyEvaluationResult>** result);
                [overload("RequestAccessToFilesForProcessAsync")] HRESULT RequestAccessToFilesForProcessWithMessageAndBehaviorAsync([in] Windows.Foundation.Collections.IIterable<Windows.Storage.IStorageItem*>* sourceItemList, [in] UINT32 processId, [in] Windows.Security.EnterpriseData.ProtectionPolicyAuditInfo* auditInfo, [in] HSTRING messageFromApp, [in] Windows.Security.EnterpriseData.ProtectionPolicyRequestAccessBehavior behavior, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.EnterpriseData.ProtectionPolicyEvaluationResult>** result);
                HRESULT IsFileProtectionRequiredAsync([in] Windows.Storage.IStorageItem* target, [in] HSTRING identity, [out] [retval] Windows.Foundation.IAsyncOperation<boolean>** result);
                HRESULT IsFileProtectionRequiredForNewFileAsync([in] Windows.Storage.IStorageFolder* parentFolder, [in] HSTRING identity, [in] HSTRING desiredName, [out] [retval] Windows.Foundation.IAsyncOperation<boolean>** result);
                [propget] HRESULT PrimaryManagedIdentity([out] [retval] HSTRING* value);
                HRESULT GetPrimaryManagedIdentityForIdentity([in] HSTRING identity, [out] [retval] HSTRING* value);
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [exclusiveto(Windows.Security.EnterpriseData.ThreadNetworkContext)]
            [uuid(FA4EA8E9-EF13-405A-B12C-D7348C6F41FC)]
            interface IThreadNetworkContext : IInspectable
            {
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass BufferProtectUnprotectResult
            {
                [default] interface Windows.Security.EnterpriseData.IBufferProtectUnprotectResult;
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass DataProtectionInfo
            {
                [default] interface Windows.Security.EnterpriseData.IDataProtectionInfo;
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Security.EnterpriseData.IDataProtectionManagerStatics, Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [threading(both)]
            runtimeclass DataProtectionManager
            {
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass FileProtectionInfo
            {
                [default] interface Windows.Security.EnterpriseData.IFileProtectionInfo;
                [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 5.0)] interface Windows.Security.EnterpriseData.IFileProtectionInfo2;
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Security.EnterpriseData.IFileProtectionManagerStatics, Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [static(Windows.Security.EnterpriseData.IFileProtectionManagerStatics2, Windows.Security.EnterpriseData.EnterpriseDataContract, 2.0)]
            [static(Windows.Security.EnterpriseData.IFileProtectionManagerStatics3, Windows.Security.EnterpriseData.EnterpriseDataContract, 4.0)]
            [threading(both)]
            runtimeclass FileProtectionManager
            {
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [deprecated("FileRevocationManager might be unavailable after Windows 10. Instead, use FileProtectionManager.", deprecate, Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Security.EnterpriseData.IFileRevocationManagerStatics, Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [threading(both)]
            runtimeclass FileRevocationManager
            {
            }

            [activatable(Windows.Security.EnterpriseData.IFileUnprotectOptionsFactory, Windows.Security.EnterpriseData.EnterpriseDataContract, 4.0)]
            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 4.0)]
            [marshaling_behavior(agile)]
            runtimeclass FileUnprotectOptions
            {
                [default] interface Windows.Security.EnterpriseData.IFileUnprotectOptions;
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass ProtectedAccessResumedEventArgs
            {
                [default] interface Windows.Security.EnterpriseData.IProtectedAccessResumedEventArgs;
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass ProtectedAccessSuspendingEventArgs
            {
                [default] interface Windows.Security.EnterpriseData.IProtectedAccessSuspendingEventArgs;
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass ProtectedContainerExportResult
            {
                [default] interface Windows.Security.EnterpriseData.IProtectedContainerExportResult;
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass ProtectedContainerImportResult
            {
                [default] interface Windows.Security.EnterpriseData.IProtectedContainerImportResult;
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass ProtectedContentRevokedEventArgs
            {
                [default] interface Windows.Security.EnterpriseData.IProtectedContentRevokedEventArgs;
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass ProtectedFileCreateResult
            {
                [default] interface Windows.Security.EnterpriseData.IProtectedFileCreateResult;
            }

            [activatable(Windows.Security.EnterpriseData.IProtectionPolicyAuditInfoFactory, Windows.Security.EnterpriseData.EnterpriseDataContract, 3.0)]
            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 3.0)]
            [marshaling_behavior(agile)]
            runtimeclass ProtectionPolicyAuditInfo
            {
                [default] interface Windows.Security.EnterpriseData.IProtectionPolicyAuditInfo;
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Security.EnterpriseData.IProtectionPolicyManagerStatics, Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [static(Windows.Security.EnterpriseData.IProtectionPolicyManagerStatics2, Windows.Security.EnterpriseData.EnterpriseDataContract, 2.0)]
            [static(Windows.Security.EnterpriseData.IProtectionPolicyManagerStatics3, Windows.Security.EnterpriseData.EnterpriseDataContract, 3.0)]
            [static(Windows.Security.EnterpriseData.IProtectionPolicyManagerStatics4, Windows.Security.EnterpriseData.EnterpriseDataContract, 4.0)]
            [threading(both)]
            runtimeclass ProtectionPolicyManager
            {
                [default] interface Windows.Security.EnterpriseData.IProtectionPolicyManager;
                [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 3.0)] interface Windows.Security.EnterpriseData.IProtectionPolicyManager2;
            }

            [contract(Windows.Security.EnterpriseData.EnterpriseDataContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass ThreadNetworkContext
            {
                [default] interface Windows.Security.EnterpriseData.IThreadNetworkContext;
                interface Windows.Foundation.IClosable;
            }
        }
    }
}
