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

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IBuffer;
        }
    }
}
namespace Windows
{
    namespace System
    {
        runtimeclass User;
    }
}
namespace Windows
{
    namespace Management
    {
        namespace Policies
        {
            typedef enum NamedPolicyKind NamedPolicyKind;

            interface INamedPolicyData;

            interface INamedPolicyStatics;

            runtimeclass NamedPolicy;

            runtimeclass NamedPolicyData;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Management
    {
        namespace Policies
        {
            declare
            {
                interface Windows.Foundation.TypedEventHandler<Windows.Management.Policies.NamedPolicyData*, IInspectable*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Management
    {
        namespace Policies
        {
            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            enum NamedPolicyKind
            {
                Invalid = 0,
                Binary  = 1,
                Boolean = 2,
                Int32   = 3,
                Int64   = 4,
                String  = 5
            };

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.Management.Policies.NamedPolicyData)]
            [uuid(38DCB198-95AC-4077-A643-8078CAE26400)]
            interface INamedPolicyData : IInspectable
            {
                [propget] HRESULT Area([out] [retval] HSTRING* value);
                [propget] HRESULT Name([out] [retval] HSTRING* value);
                [propget] HRESULT Kind([out] [retval] Windows.Management.Policies.NamedPolicyKind* value);
                [propget] HRESULT IsManaged([out] [retval] boolean* value);
                [propget] HRESULT IsUserPolicy([out] [retval] boolean* value);
                [propget] HRESULT User([out] [retval] Windows.System.User** value);
                HRESULT GetBoolean([out] [retval] boolean* result);
                HRESULT GetBinary([out] [retval] Windows.Storage.Streams.IBuffer** result);
                HRESULT GetInt32([out] [retval] INT32* result);
                HRESULT GetInt64([out] [retval] INT64* result);
                HRESULT GetString([out] [retval] HSTRING* result);
                [eventadd] HRESULT Changed([in] Windows.Foundation.TypedEventHandler<Windows.Management.Policies.NamedPolicyData*, IInspectable*>* changedHandler, [out] [retval] EventRegistrationToken* cookie);
                [eventremove] HRESULT Changed([in] EventRegistrationToken cookie);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.Management.Policies.NamedPolicy)]
            [uuid(7F793BE7-76C4-4058-8CAD-67662CD05F0D)]
            interface INamedPolicyStatics : IInspectable
            {
                HRESULT GetPolicyFromPath([in] HSTRING area, [in] HSTRING name, [out] [retval] Windows.Management.Policies.NamedPolicyData** result);
                HRESULT GetPolicyFromPathForUser([in] Windows.System.User* user, [in] HSTRING area, [in] HSTRING name, [out] [retval] Windows.Management.Policies.NamedPolicyData** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Management.Policies.INamedPolicyStatics, Windows.Foundation.UniversalApiContract, 4.0)]
            [threading(both)]
            runtimeclass NamedPolicy
            {
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass NamedPolicyData
            {
                [default] interface Windows.Management.Policies.INamedPolicyData;
            }
        }
    }
}
