//
// 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.Media.Playback.idl";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        namespace Collections
        {
            interface IPropertySet;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        interface IClosable;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Playback
        {
            runtimeclass MediaPlaybackItem;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Protection
        {
            apicontract ProtectionRenewalContract;

            typedef enum GraphicsTrustStatus GraphicsTrustStatus;

            typedef enum HdcpProtection HdcpProtection;

            typedef enum HdcpSetProtectionResult HdcpSetProtectionResult;

            typedef enum ProtectionCapabilityResult ProtectionCapabilityResult;

            typedef enum RenewalStatus RenewalStatus;

            typedef enum RevocationAndRenewalReasons RevocationAndRenewalReasons;

            delegate ComponentLoadFailedEventHandler;

            delegate RebootNeededEventHandler;

            delegate ServiceRequestedEventHandler;

            interface IComponentLoadFailedEventArgs;

            interface IComponentRenewalStatics;

            interface IHdcpSession;

            interface IMediaProtectionManager;

            interface IMediaProtectionPMPServer;

            interface IMediaProtectionPMPServerFactory;

            interface IMediaProtectionServiceCompletion;

            interface IMediaProtectionServiceRequest;

            interface IProtectionCapabilities;

            interface IRevocationAndRenewalInformation;

            interface IRevocationAndRenewalItem;

            interface IServiceRequestedEventArgs;

            interface IServiceRequestedEventArgs2;

            runtimeclass ComponentLoadFailedEventArgs;

            runtimeclass ComponentRenewal;

            runtimeclass HdcpSession;

            runtimeclass MediaProtectionManager;

            runtimeclass MediaProtectionPMPServer;

            runtimeclass MediaProtectionServiceCompletion;

            runtimeclass ProtectionCapabilities;

            runtimeclass RevocationAndRenewalInformation;

            runtimeclass RevocationAndRenewalItem;

            runtimeclass ServiceRequestedEventArgs;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Media
    {
        namespace Protection
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.Media.Protection.RevocationAndRenewalItem*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Media.Protection.RevocationAndRenewalItem*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Media.Protection.RevocationAndRenewalItem*>;

                interface Windows.Foundation.Collections.IVector<Windows.Media.Protection.RevocationAndRenewalItem*>;

                interface Windows.Foundation.IAsyncOperationWithProgress<Windows.Media.Protection.RenewalStatus, UINT32>;

                interface Windows.Foundation.IAsyncOperation<Windows.Media.Protection.HdcpSetProtectionResult>;

                interface Windows.Foundation.IReference<Windows.Media.Protection.HdcpProtection>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Protection.HdcpSession*, IInspectable*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Media
    {
        namespace Protection
        {
            [contractversion(1.0)]
            apicontract ProtectionRenewalContract
            {
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum GraphicsTrustStatus
            {
                TrustNotRequired        = 0,
                TrustEstablished        = 1,
                EnvironmentNotSupported = 2,
                DriverNotSupported      = 3,
                DriverSigningFailure    = 4,
                UnknownFailure          = 5
            };

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            enum HdcpProtection
            {
                Off                   = 0,
                On                    = 1,
                OnWithTypeEnforcement = 2
            };

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            enum HdcpSetProtectionResult
            {
                Success        = 0,
                TimedOut       = 1,
                NotSupported   = 2,
                UnknownFailure = 3
            };

            [contract(Windows.Foundation.UniversalApiContract, 2.0)]
            enum ProtectionCapabilityResult
            {
                NotSupported = 0,
                Maybe        = 1,
                Probably     = 2
            };

            [contract(Windows.Media.Protection.ProtectionRenewalContract, 1.0)]
            enum RenewalStatus
            {
                NotStarted                   = 0,
                UpdatesInProgress            = 1,
                UserCancelled                = 2,
                AppComponentsMayNeedUpdating = 3,
                NoComponentsFound            = 4
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [flags]
            enum RevocationAndRenewalReasons
            {
                UserModeComponentLoad                     = 0x1,
                KernelModeComponentLoad                   = 0x2,
                AppComponent                              = 0x4,
                GlobalRevocationListLoadFailed            = 0x10,
                InvalidGlobalRevocationListSignature      = 0x20,
                GlobalRevocationListAbsent                = 0x1000,
                ComponentRevoked                          = 0x2000,
                InvalidComponentCertificateExtendedKeyUse = 0x4000,
                ComponentCertificateRevoked               = 0x8000,
                InvalidComponentCertificateRoot           = 0x10000,
                ComponentHighSecurityCertificateRevoked   = 0x20000,
                ComponentLowSecurityCertificateRevoked    = 0x40000,
                BootDriverVerificationFailed              = 0x100000,
                ComponentSignedWithTestCertificate        = 0x1000000,
                EncryptionFailure                         = 0x10000000
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(95DA643C-6DB9-424B-86CA-091AF432081C)]
            delegate
                HRESULT ComponentLoadFailedEventHandler([in] Windows.Media.Protection.MediaProtectionManager* sender, [in] Windows.Media.Protection.ComponentLoadFailedEventArgs* e);

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(64E12A45-973B-4A3A-B260-91898A49A82C)]
            delegate
                HRESULT RebootNeededEventHandler([in] Windows.Media.Protection.MediaProtectionManager* sender);

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(D2D690BA-CAC9-48E1-95C0-D38495A84055)]
            delegate
                HRESULT ServiceRequestedEventHandler([in] Windows.Media.Protection.MediaProtectionManager* sender, [in] Windows.Media.Protection.ServiceRequestedEventArgs* e);

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Protection.ComponentLoadFailedEventArgs)]
            [uuid(95972E93-7746-417E-8495-F031BBC5862C)]
            interface IComponentLoadFailedEventArgs : IInspectable
            {
                [propget] HRESULT Information([out] [retval] Windows.Media.Protection.RevocationAndRenewalInformation** value);
                [propget] HRESULT Completion([out] [retval] Windows.Media.Protection.MediaProtectionServiceCompletion** value);
            }

            [contract(Windows.Media.Protection.ProtectionRenewalContract, 1.0)]
            [exclusiveto(Windows.Media.Protection.ComponentRenewal)]
            [uuid(6FFBCD67-B795-48C5-8B7B-A7C4EFE202E3)]
            interface IComponentRenewalStatics : IInspectable
            {
                HRESULT RenewSystemComponentsAsync([in] Windows.Media.Protection.RevocationAndRenewalInformation* information, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Media.Protection.RenewalStatus, UINT32>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.Media.Protection.HdcpSession)]
            [uuid(718845E9-64D7-426D-809B-1BE461941A2A)]
            interface IHdcpSession : IInspectable
                requires
                    Windows.Foundation.IClosable
            {
                HRESULT IsEffectiveProtectionAtLeast([in] Windows.Media.Protection.HdcpProtection protection, [out] [retval] boolean* value);
                HRESULT GetEffectiveProtection([out] [retval] Windows.Foundation.IReference<Windows.Media.Protection.HdcpProtection>** value);
                HRESULT SetDesiredMinProtectionAsync([in] Windows.Media.Protection.HdcpProtection protection, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Protection.HdcpSetProtectionResult>** value);
                [eventadd] HRESULT ProtectionChanged([in] Windows.Foundation.TypedEventHandler<Windows.Media.Protection.HdcpSession*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT ProtectionChanged([in] EventRegistrationToken token);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Protection.MediaProtectionManager)]
            [uuid(45694947-C741-434B-A79E-474C12D93D2F)]
            interface IMediaProtectionManager : IInspectable
            {
                [eventadd] HRESULT ServiceRequested([in] Windows.Media.Protection.ServiceRequestedEventHandler* handler, [out] [retval] EventRegistrationToken* cookie);
                [eventremove] HRESULT ServiceRequested([in] EventRegistrationToken cookie);
                [eventadd] HRESULT RebootNeeded([in] Windows.Media.Protection.RebootNeededEventHandler* handler, [out] [retval] EventRegistrationToken* cookie);
                [eventremove] HRESULT RebootNeeded([in] EventRegistrationToken cookie);
                [eventadd] HRESULT ComponentLoadFailed([in] Windows.Media.Protection.ComponentLoadFailedEventHandler* handler, [out] [retval] EventRegistrationToken* cookie);
                [eventremove] HRESULT ComponentLoadFailed([in] EventRegistrationToken cookie);
                [propget] HRESULT Properties([out] [retval] Windows.Foundation.Collections.IPropertySet** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Protection.MediaProtectionPMPServer)]
            [uuid(0C111226-7B26-4D31-95BB-9C1B08EF7FC0)]
            interface IMediaProtectionPMPServer : IInspectable
            {
                [propget] HRESULT Properties([out] [retval] Windows.Foundation.Collections.IPropertySet** ppProperties);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Protection.MediaProtectionPMPServer)]
            [uuid(602C8E5E-F7D2-487E-AF91-DBC4252B2182)]
            interface IMediaProtectionPMPServerFactory : IInspectable
            {
                HRESULT CreatePMPServer([in] Windows.Foundation.Collections.IPropertySet* pProperties, [out] [retval] Windows.Media.Protection.MediaProtectionPMPServer** ppObject);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Protection.MediaProtectionServiceCompletion)]
            [uuid(8B5CCA18-CFD5-44EE-A2ED-DF76010C14B5)]
            interface IMediaProtectionServiceCompletion : IInspectable
            {
                HRESULT Complete([in] boolean success);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(B1DE0EA6-2094-478D-87A4-8B95200F85C6)]
            interface IMediaProtectionServiceRequest : IInspectable
            {
                [propget] HRESULT ProtectionSystem([out] [retval] GUID* system);
                [propget] HRESULT Type([out] [retval] GUID* type);
            }

            [contract(Windows.Foundation.UniversalApiContract, 2.0)]
            [exclusiveto(Windows.Media.Protection.ProtectionCapabilities)]
            [uuid(C7AC5D7E-7480-4D29-A464-7BCD913DD8E4)]
            interface IProtectionCapabilities : IInspectable
            {
                HRESULT IsTypeSupported([in] HSTRING type, [in] HSTRING keySystem, [out] [retval] Windows.Media.Protection.ProtectionCapabilityResult* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Protection.RevocationAndRenewalInformation)]
            [uuid(F3A1937B-2501-439E-A6E7-6FC95E175FCF)]
            interface IRevocationAndRenewalInformation : IInspectable
            {
                [propget] HRESULT Items([out] [retval] Windows.Foundation.Collections.IVector<Windows.Media.Protection.RevocationAndRenewalItem*>** items);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Protection.RevocationAndRenewalItem)]
            [uuid(3099C20C-3CF0-49EA-902D-CAF32D2DDE2C)]
            interface IRevocationAndRenewalItem : IInspectable
            {
                [propget] HRESULT Reasons([out] [retval] Windows.Media.Protection.RevocationAndRenewalReasons* reasons);
                [propget] HRESULT HeaderHash([out] [retval] HSTRING* value);
                [propget] HRESULT PublicKeyHash([out] [retval] HSTRING* value);
                [propget] HRESULT Name([out] [retval] HSTRING* name);
                [propget] HRESULT RenewalId([out] [retval] HSTRING* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Protection.ServiceRequestedEventArgs)]
            [uuid(34283BAF-ABB4-4FC1-BD89-93F106573A49)]
            interface IServiceRequestedEventArgs : IInspectable
            {
                [propget] HRESULT Request([out] [retval] Windows.Media.Protection.IMediaProtectionServiceRequest** value);
                [propget] HRESULT Completion([out] [retval] Windows.Media.Protection.MediaProtectionServiceCompletion** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Protection.ServiceRequestedEventArgs)]
            [uuid(553C69D6-FAFE-4128-8DFA-130E398A13A7)]
            interface IServiceRequestedEventArgs2 : IInspectable
            {
                [propget] HRESULT MediaPlaybackItem([out] [retval] Windows.Media.Playback.MediaPlaybackItem** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass ComponentLoadFailedEventArgs
            {
                [default] interface Windows.Media.Protection.IComponentLoadFailedEventArgs;
            }

            [contract(Windows.Media.Protection.ProtectionRenewalContract, 1.0)]
            [static(Windows.Media.Protection.IComponentRenewalStatics, Windows.Media.Protection.ProtectionRenewalContract, 1.0)]
            runtimeclass ComponentRenewal
            {
            }

            [activatable(Windows.Foundation.UniversalApiContract, 3.0)]
            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass HdcpSession
            {
                [default] interface Windows.Media.Protection.IHdcpSession;
                interface Windows.Foundation.IClosable;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(mta)]
            runtimeclass MediaProtectionManager
            {
                [default] interface Windows.Media.Protection.IMediaProtectionManager;
            }

            [activatable(Windows.Media.Protection.IMediaProtectionPMPServerFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass MediaProtectionPMPServer
            {
                [default] interface Windows.Media.Protection.IMediaProtectionPMPServer;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass MediaProtectionServiceCompletion
            {
                [default] interface Windows.Media.Protection.IMediaProtectionServiceCompletion;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 3.0)]
            [contract(Windows.Foundation.UniversalApiContract, 2.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass ProtectionCapabilities
            {
                [default] interface Windows.Media.Protection.IProtectionCapabilities;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass RevocationAndRenewalInformation
            {
                [default] interface Windows.Media.Protection.IRevocationAndRenewalInformation;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass RevocationAndRenewalItem
            {
                [default] interface Windows.Media.Protection.IRevocationAndRenewalItem;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass ServiceRequestedEventArgs
            {
                [default] interface Windows.Media.Protection.IServiceRequestedEventArgs;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Media.Protection.IServiceRequestedEventArgs2;
            }
        }
    }
}
