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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "Windows.Foundation.idl";
// Additional imports to ensure that all required headers are included
cpp_quote("#if defined(__cplusplus)")
cpp_quote("}")
cpp_quote("#endif // defined(__cplusplus)")
cpp_quote("#include <Windows.Foundation.h>")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        namespace Collections
        {
            interface IPropertySet;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Protection
        {
            typedef enum RevocationAndRenewalReasons RevocationAndRenewalReasons;

            typedef enum RenewalStatus RenewalStatus;

            delegate ServiceRequestedEventHandler;

            delegate RebootNeededEventHandler;

            delegate ComponentLoadFailedEventHandler;

            interface IMediaProtectionManager;

            interface IMediaProtectionServiceCompletion;

            interface IServiceRequestedEventArgs;

            interface IMediaProtectionServiceRequest;

            interface IComponentLoadFailedEventArgs;

            interface IRevocationAndRenewalInformation;

            interface IRevocationAndRenewalItem;

            interface IComponentRenewalStatics;

            runtimeclass MediaProtectionManager;

            runtimeclass ServiceRequestedEventArgs;

            runtimeclass ComponentLoadFailedEventArgs;

            runtimeclass MediaProtectionServiceCompletion;

            runtimeclass RevocationAndRenewalInformation;

            runtimeclass RevocationAndRenewalItem;

            runtimeclass ComponentRenewal;
        }
    }
}

// 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>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Media
    {
        namespace Protection
        {
            [version(0x06020000)]
            [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
            };

            [version(0x06020000)]
            enum RenewalStatus
            {
                NotStarted                   = 0,
                UpdatesInProgress            = 1,
                UserCancelled                = 2,
                AppComponentsMayNeedUpdating = 3,
                NoComponentsFound            = 4
            };

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

            [uuid(64E12A45-973B-4A3A-B260-91898A49A82C)]
            [version(0x06020000)]
            delegate
                HRESULT RebootNeededEventHandler([in] Windows.Media.Protection.MediaProtectionManager* sender);

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

            [uuid(45694947-C741-434B-A79E-474C12D93D2F)]
            [version(0x06020000)]
            [exclusiveto(Windows.Media.Protection.MediaProtectionManager)]
            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);
            }

            [uuid(8B5CCA18-CFD5-44EE-A2ED-DF76010C14B5)]
            [exclusiveto(Windows.Media.Protection.MediaProtectionServiceCompletion)]
            [version(0x06020000)]
            interface IMediaProtectionServiceCompletion : IInspectable
            {
                HRESULT Complete([in] boolean success);
            }

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

            [uuid(B1DE0EA6-2094-478D-87A4-8B95200F85C6)]
            [version(0x06020000)]
            interface IMediaProtectionServiceRequest : IInspectable
            {
                [propget] HRESULT ProtectionSystem([out] [retval] GUID* system);
                [propget] HRESULT Type([out] [retval] GUID* type);
            }

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

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

            [uuid(3099C20C-3CF0-49EA-902D-CAF32D2DDE2C)]
            [version(0x06020000)]
            [exclusiveto(Windows.Media.Protection.RevocationAndRenewalItem)]
            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);
            }

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

            [marshaling_behavior(agile)]
            [version(0x06020000)]
            [activatable(0x06020000)]
            [threading(mta)]
            runtimeclass MediaProtectionManager
            {
                [default] interface Windows.Media.Protection.IMediaProtectionManager;
            }

            [version(0x06020000)]
            [marshaling_behavior(agile)]
            runtimeclass ServiceRequestedEventArgs
            {
                [default] interface Windows.Media.Protection.IServiceRequestedEventArgs;
            }

            [version(0x06020000)]
            [marshaling_behavior(agile)]
            runtimeclass ComponentLoadFailedEventArgs
            {
                [default] interface Windows.Media.Protection.IComponentLoadFailedEventArgs;
            }

            [version(0x06020000)]
            [marshaling_behavior(agile)]
            runtimeclass MediaProtectionServiceCompletion
            {
                [default] interface Windows.Media.Protection.IMediaProtectionServiceCompletion;
            }

            [version(0x06020000)]
            [marshaling_behavior(agile)]
            runtimeclass RevocationAndRenewalInformation
            {
                [default] interface Windows.Media.Protection.IRevocationAndRenewalInformation;
            }

            [version(0x06020000)]
            [marshaling_behavior(agile)]
            runtimeclass RevocationAndRenewalItem
            {
                [default] interface Windows.Media.Protection.IRevocationAndRenewalItem;
            }

            [static(Windows.Media.Protection.IComponentRenewalStatics, 0x06020000)]
            [version(0x06020000)]
            runtimeclass ComponentRenewal
            {
            }
        }
    }
}
