//
// 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";
import "Windows.System.Threading.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(__windows2Esystem2Ethreading_h__)")
cpp_quote("#include <Windows.System.Threading.h>")
cpp_quote("#endif // !defined(__windows2Esystem2Ethreading_h__)")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        interface IAsyncAction;

        typedef struct TimeSpan TimeSpan;
    }
}
namespace Windows
{
    namespace System
    {
        namespace Threading
        {
            delegate WorkItemHandler;

            typedef enum WorkItemOptions WorkItemOptions;

            typedef enum WorkItemPriority WorkItemPriority;
        }
    }
}
namespace Windows
{
    namespace System
    {
        namespace Threading
        {
            namespace Core
            {
                delegate SignalHandler;

                interface ISignalNotifierStatics;

                interface IPreallocatedWorkItemFactory;

                interface IPreallocatedWorkItem;

                interface ISignalNotifier;

                runtimeclass SignalNotifier;

                runtimeclass PreallocatedWorkItem;
            }
        }
    }
}

// Generic instantiations

// Type definition
namespace Windows
{
    namespace System
    {
        namespace Threading
        {
            namespace Core
            {
                [uuid(923C402E-4721-440E-9DDA-55B6F2E07710)]
                [version(0x06020000)]
                delegate
                    HRESULT SignalHandler([in] Windows.System.Threading.Core.SignalNotifier* signalNotifier, [in] boolean timedOut);

                [uuid(1C4E4566-8400-46D3-A115-7D0C0DFC9F62)]
                [exclusiveto(Windows.System.Threading.Core.SignalNotifier)]
                [version(0x06020000)]
                interface ISignalNotifierStatics : IInspectable
                {
                    [overload("AttachToEvent")] HRESULT AttachToEvent([in] HSTRING name, [in] Windows.System.Threading.Core.SignalHandler* handler, [out] [retval] Windows.System.Threading.Core.SignalNotifier** signalNotifier);
                    [overload("AttachToEvent")] HRESULT AttachToEventWithTimeout([in] HSTRING name, [in] Windows.System.Threading.Core.SignalHandler* handler, [in] Windows.Foundation.TimeSpan timeout, [out] [retval] Windows.System.Threading.Core.SignalNotifier** signalNotifier);
                    [overload("AttachToSemaphore")] HRESULT AttachToSemaphore([in] HSTRING name, [in] Windows.System.Threading.Core.SignalHandler* handler, [out] [retval] Windows.System.Threading.Core.SignalNotifier** signalNotifier);
                    [overload("AttachToSemaphore")] HRESULT AttachToSemaphoreWithTimeout([in] HSTRING name, [in] Windows.System.Threading.Core.SignalHandler* handler, [in] Windows.Foundation.TimeSpan timeout, [out] [retval] Windows.System.Threading.Core.SignalNotifier** signalNotifier);
                }

                [uuid(E3D32B45-DFEA-469B-82C5-F6E3CEFDEAFB)]
                [version(0x06020000)]
                [exclusiveto(Windows.System.Threading.Core.PreallocatedWorkItem)]
                interface IPreallocatedWorkItemFactory : IInspectable
                {
                    HRESULT CreateWorkItem([in] Windows.System.Threading.WorkItemHandler* handler, [out] [retval] Windows.System.Threading.Core.PreallocatedWorkItem** workItem);
                    HRESULT CreateWorkItemWithPriority([in] Windows.System.Threading.WorkItemHandler* handler, [in] Windows.System.Threading.WorkItemPriority priority, [out] [retval] Windows.System.Threading.Core.PreallocatedWorkItem** WorkItem);
                    HRESULT CreateWorkItemWithPriorityAndOptions([in] Windows.System.Threading.WorkItemHandler* handler, [in] Windows.System.Threading.WorkItemPriority priority, [in] Windows.System.Threading.WorkItemOptions options, [out] [retval] Windows.System.Threading.Core.PreallocatedWorkItem** WorkItem);
                }

                [uuid(B6DAA9FC-BC5B-401A-A8B2-6E754D14DAA6)]
                [version(0x06020000)]
                [exclusiveto(Windows.System.Threading.Core.PreallocatedWorkItem)]
                interface IPreallocatedWorkItem : IInspectable
                {
                    HRESULT RunAsync([out] [retval] Windows.Foundation.IAsyncAction** operation);
                }

                [uuid(14285E06-63A7-4713-B6D9-62F64B56FB8B)]
                [version(0x06020000)]
                [exclusiveto(Windows.System.Threading.Core.SignalNotifier)]
                interface ISignalNotifier : IInspectable
                {
                    HRESULT Enable();
                    HRESULT Terminate();
                }

                [version(0x06020000)]
                [static(Windows.System.Threading.Core.ISignalNotifierStatics, 0x06020000)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass SignalNotifier
                {
                    [default] interface Windows.System.Threading.Core.ISignalNotifier;
                }

                [marshaling_behavior(agile)]
                [threading(both)]
                [activatable(Windows.System.Threading.Core.IPreallocatedWorkItemFactory, 0x06020000)]
                [version(0x06020000)]
                runtimeclass PreallocatedWorkItem
                {
                    [default] interface Windows.System.Threading.Core.IPreallocatedWorkItem;
                }
            }
        }
    }
}
