//
// 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.Graphics.idl";
import "Windows.Graphics.DirectX.idl";
import "Windows.Graphics.DirectX.Direct3D11.idl";
import "Windows.Security.Authorization.AppCapabilityAccess.idl";
import "Windows.System.idl";
import "Windows.UI.idl";
import "Windows.UI.Composition.idl";

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

        typedef struct TimeSpan TimeSpan;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Graphics
    {
        namespace DirectX
        {
            namespace Direct3D11
            {
                interface IDirect3DDevice;

                interface IDirect3DSurface;
            }
        }
    }
}
namespace Windows
{
    namespace Graphics
    {
        namespace DirectX
        {
            typedef enum DirectXPixelFormat DirectXPixelFormat;
        }
    }
}
namespace Windows
{
    namespace Graphics
    {
        typedef struct DisplayId DisplayId;

        typedef struct RectInt32 RectInt32;

        typedef struct SizeInt32 SizeInt32;
    }
}
namespace Windows
{
    namespace Security
    {
        namespace Authorization
        {
            namespace AppCapabilityAccess
            {
                typedef enum AppCapabilityAccessStatus AppCapabilityAccessStatus;
            }
        }
    }
}
namespace Windows
{
    namespace System
    {
        runtimeclass DispatcherQueue;
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Composition
        {
            runtimeclass Visual;
        }
    }
}
namespace Windows
{
    namespace UI
    {
        typedef struct WindowId WindowId;
    }
}
namespace Windows
{
    namespace Graphics
    {
        namespace Capture
        {
            typedef enum GraphicsCaptureAccessKind GraphicsCaptureAccessKind;

            typedef enum GraphicsCaptureDirtyRegionMode GraphicsCaptureDirtyRegionMode;

            interface IDirect3D11CaptureFrame;

            interface IDirect3D11CaptureFrame2;

            interface IDirect3D11CaptureFramePool;

            interface IDirect3D11CaptureFramePoolStatics;

            interface IDirect3D11CaptureFramePoolStatics2;

            interface IGraphicsCaptureAccessStatics;

            interface IGraphicsCaptureItem;

            interface IGraphicsCaptureItemStatics;

            interface IGraphicsCaptureItemStatics2;

            interface IGraphicsCapturePicker;

            interface IGraphicsCaptureSession;

            interface IGraphicsCaptureSession2;

            interface IGraphicsCaptureSession3;

            interface IGraphicsCaptureSession4;

            interface IGraphicsCaptureSession5;

            interface IGraphicsCaptureSession6;

            interface IGraphicsCaptureSessionStatics;

            runtimeclass Direct3D11CaptureFrame;

            runtimeclass Direct3D11CaptureFramePool;

            runtimeclass GraphicsCaptureAccess;

            runtimeclass GraphicsCaptureItem;

            runtimeclass GraphicsCapturePicker;

            runtimeclass GraphicsCaptureSession;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Graphics
    {
        namespace Capture
        {
            declare
            {
                interface Windows.Foundation.IAsyncOperation<Windows.Graphics.Capture.GraphicsCaptureItem*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Graphics.Capture.Direct3D11CaptureFramePool*, IInspectable*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Graphics.Capture.GraphicsCaptureItem*, IInspectable*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Graphics
    {
        namespace Capture
        {
            [contract(Windows.Foundation.UniversalApiContract, 12.0)]
            enum GraphicsCaptureAccessKind
            {
                Borderless   = 0,
                Programmatic = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 19.0)]
            enum GraphicsCaptureDirtyRegionMode
            {
                ReportOnly      = 0,
                ReportAndRender = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [exclusiveto(Windows.Graphics.Capture.Direct3D11CaptureFrame)]
            [uuid(FA50C623-38DA-4B32-ACF3-FA9734AD800E)]
            interface IDirect3D11CaptureFrame : IInspectable
            {
                [propget] HRESULT Surface([out] [retval] Windows.Graphics.DirectX.Direct3D11.IDirect3DSurface** value);
                [propget] HRESULT SystemRelativeTime([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT ContentSize([out] [retval] Windows.Graphics.SizeInt32* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 19.0)]
            [exclusiveto(Windows.Graphics.Capture.Direct3D11CaptureFrame)]
            [uuid(37869CFA-2B48-5EBF-9AFB-DFFD805DEFDB)]
            interface IDirect3D11CaptureFrame2 : IInspectable
            {
                [propget] HRESULT DirtyRegions([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Graphics.RectInt32>** value);
                [propget] HRESULT DirtyRegionMode([out] [retval] Windows.Graphics.Capture.GraphicsCaptureDirtyRegionMode* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [exclusiveto(Windows.Graphics.Capture.Direct3D11CaptureFramePool)]
            [uuid(24EB6D22-1975-422E-82E7-780DBD8DDF24)]
            interface IDirect3D11CaptureFramePool : IInspectable
            {
                HRESULT Recreate([in] Windows.Graphics.DirectX.Direct3D11.IDirect3DDevice* device, [in] Windows.Graphics.DirectX.DirectXPixelFormat pixelFormat, [in] INT32 numberOfBuffers, [in] Windows.Graphics.SizeInt32 size);
                HRESULT TryGetNextFrame([out] [retval] Windows.Graphics.Capture.Direct3D11CaptureFrame** result);
                [eventadd] HRESULT FrameArrived([in] Windows.Foundation.TypedEventHandler<Windows.Graphics.Capture.Direct3D11CaptureFramePool*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT FrameArrived([in] EventRegistrationToken token);
                HRESULT CreateCaptureSession([in] Windows.Graphics.Capture.GraphicsCaptureItem* item, [out] [retval] Windows.Graphics.Capture.GraphicsCaptureSession** result);
                [propget] HRESULT DispatcherQueue([out] [retval] Windows.System.DispatcherQueue** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [exclusiveto(Windows.Graphics.Capture.Direct3D11CaptureFramePool)]
            [uuid(7784056A-67AA-4D53-AE54-1088D5A8CA21)]
            interface IDirect3D11CaptureFramePoolStatics : IInspectable
            {
                HRESULT Create([in] Windows.Graphics.DirectX.Direct3D11.IDirect3DDevice* device, [in] Windows.Graphics.DirectX.DirectXPixelFormat pixelFormat, [in] INT32 numberOfBuffers, [in] Windows.Graphics.SizeInt32 size, [out] [retval] Windows.Graphics.Capture.Direct3D11CaptureFramePool** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 7.0)]
            [exclusiveto(Windows.Graphics.Capture.Direct3D11CaptureFramePool)]
            [uuid(589B103F-6BBC-5DF5-A991-02E28B3B66D5)]
            interface IDirect3D11CaptureFramePoolStatics2 : IInspectable
            {
                HRESULT CreateFreeThreaded([in] Windows.Graphics.DirectX.Direct3D11.IDirect3DDevice* device, [in] Windows.Graphics.DirectX.DirectXPixelFormat pixelFormat, [in] INT32 numberOfBuffers, [in] Windows.Graphics.SizeInt32 size, [out] [retval] Windows.Graphics.Capture.Direct3D11CaptureFramePool** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 12.0)]
            [exclusiveto(Windows.Graphics.Capture.GraphicsCaptureAccess)]
            [uuid(743ED370-06EC-5040-A58A-901F0F757095)]
            interface IGraphicsCaptureAccessStatics : IInspectable
            {
                HRESULT RequestAccessAsync([in] Windows.Graphics.Capture.GraphicsCaptureAccessKind request, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Security.Authorization.AppCapabilityAccess.AppCapabilityAccessStatus>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [exclusiveto(Windows.Graphics.Capture.GraphicsCaptureItem)]
            [uuid(79C3F95B-31F7-4EC2-A464-632EF5D30760)]
            interface IGraphicsCaptureItem : IInspectable
            {
                [propget] HRESULT DisplayName([out] [retval] HSTRING* value);
                [propget] HRESULT Size([out] [retval] Windows.Graphics.SizeInt32* value);
                [eventadd] HRESULT Closed([in] Windows.Foundation.TypedEventHandler<Windows.Graphics.Capture.GraphicsCaptureItem*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT Closed([in] EventRegistrationToken token);
            }

            [contract(Windows.Foundation.UniversalApiContract, 7.0)]
            [exclusiveto(Windows.Graphics.Capture.GraphicsCaptureItem)]
            [uuid(A87EBEA5-457C-5788-AB47-0CF1D3637E74)]
            interface IGraphicsCaptureItemStatics : IInspectable
            {
                HRESULT CreateFromVisual([in] Windows.UI.Composition.Visual* visual, [out] [retval] Windows.Graphics.Capture.GraphicsCaptureItem** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 12.0)]
            [exclusiveto(Windows.Graphics.Capture.GraphicsCaptureItem)]
            [uuid(3B92ACC9-E584-5862-BF5C-9C316C6D2DBB)]
            interface IGraphicsCaptureItemStatics2 : IInspectable
            {
                HRESULT TryCreateFromWindowId([in] Windows.UI.WindowId windowId, [out] [retval] Windows.Graphics.Capture.GraphicsCaptureItem** result);
                HRESULT TryCreateFromDisplayId([in] Windows.Graphics.DisplayId displayId, [out] [retval] Windows.Graphics.Capture.GraphicsCaptureItem** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [exclusiveto(Windows.Graphics.Capture.GraphicsCapturePicker)]
            [uuid(5A1711B3-AD79-4B4A-9336-1318FDDE3539)]
            interface IGraphicsCapturePicker : IInspectable
            {
                HRESULT PickSingleItemAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Graphics.Capture.GraphicsCaptureItem*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [exclusiveto(Windows.Graphics.Capture.GraphicsCaptureSession)]
            [uuid(814E42A9-F70F-4AD7-939B-FDDCC6EB880D)]
            interface IGraphicsCaptureSession : IInspectable
            {
                HRESULT StartCapture();
            }

            [contract(Windows.Foundation.UniversalApiContract, 10.0)]
            [exclusiveto(Windows.Graphics.Capture.GraphicsCaptureSession)]
            [uuid(2C39AE40-7D2E-5044-804E-8B6799D4CF9E)]
            interface IGraphicsCaptureSession2 : IInspectable
            {
                [propget] HRESULT IsCursorCaptureEnabled([out] [retval] boolean* value);
                [propput] HRESULT IsCursorCaptureEnabled([in] boolean value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 12.0)]
            [exclusiveto(Windows.Graphics.Capture.GraphicsCaptureSession)]
            [uuid(F2CDD966-22AE-5EA1-9596-3A289344C3BE)]
            interface IGraphicsCaptureSession3 : IInspectable
            {
                [propget] HRESULT IsBorderRequired([out] [retval] boolean* value);
                [propput] HRESULT IsBorderRequired([in] boolean value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 19.0)]
            [exclusiveto(Windows.Graphics.Capture.GraphicsCaptureSession)]
            [uuid(AE99813C-C257-5759-8ED0-668C9B557ED4)]
            interface IGraphicsCaptureSession4 : IInspectable
            {
                [propget] HRESULT DirtyRegionMode([out] [retval] Windows.Graphics.Capture.GraphicsCaptureDirtyRegionMode* value);
                [propput] HRESULT DirtyRegionMode([in] Windows.Graphics.Capture.GraphicsCaptureDirtyRegionMode value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 19.0)]
            [exclusiveto(Windows.Graphics.Capture.GraphicsCaptureSession)]
            [uuid(67C0EA62-1F85-5061-925A-239BE0AC09CB)]
            interface IGraphicsCaptureSession5 : IInspectable
            {
                [propget] HRESULT MinUpdateInterval([out] [retval] Windows.Foundation.TimeSpan* value);
                [propput] HRESULT MinUpdateInterval([in] Windows.Foundation.TimeSpan value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 19.0)]
            [exclusiveto(Windows.Graphics.Capture.GraphicsCaptureSession)]
            [uuid(D7419236-BE20-5E9F-BCD6-C4E98FD6AFDC)]
            interface IGraphicsCaptureSession6 : IInspectable
            {
                [propget] HRESULT IncludeSecondaryWindows([out] [retval] boolean* value);
                [propput] HRESULT IncludeSecondaryWindows([in] boolean value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [exclusiveto(Windows.Graphics.Capture.GraphicsCaptureSession)]
            [uuid(2224A540-5974-49AA-B232-0882536F4CB5)]
            interface IGraphicsCaptureSessionStatics : IInspectable
            {
                HRESULT IsSupported([out] [retval] boolean* result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [marshaling_behavior(agile)]
            runtimeclass Direct3D11CaptureFrame
            {
                [default] interface Windows.Graphics.Capture.IDirect3D11CaptureFrame;
                [contract(Windows.Foundation.UniversalApiContract, 19.0)] interface Windows.Graphics.Capture.IDirect3D11CaptureFrame2;
                interface Windows.Foundation.IClosable;
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Graphics.Capture.IDirect3D11CaptureFramePoolStatics, Windows.Foundation.UniversalApiContract, 6.0)]
            [static(Windows.Graphics.Capture.IDirect3D11CaptureFramePoolStatics2, Windows.Foundation.UniversalApiContract, 7.0)]
            [threading(both)]
            runtimeclass Direct3D11CaptureFramePool
            {
                [default] interface Windows.Graphics.Capture.IDirect3D11CaptureFramePool;
                interface Windows.Foundation.IClosable;
            }

            [contract(Windows.Foundation.UniversalApiContract, 12.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Graphics.Capture.IGraphicsCaptureAccessStatics, Windows.Foundation.UniversalApiContract, 12.0)]
            [threading(both)]
            runtimeclass GraphicsCaptureAccess
            {
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Graphics.Capture.IGraphicsCaptureItemStatics, Windows.Foundation.UniversalApiContract, 7.0)]
            [static(Windows.Graphics.Capture.IGraphicsCaptureItemStatics2, Windows.Foundation.UniversalApiContract, 12.0)]
            [threading(both)]
            runtimeclass GraphicsCaptureItem
            {
                [default] interface Windows.Graphics.Capture.IGraphicsCaptureItem;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 6.0)]
            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass GraphicsCapturePicker
            {
                [default] interface Windows.Graphics.Capture.IGraphicsCapturePicker;
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Graphics.Capture.IGraphicsCaptureSessionStatics, Windows.Foundation.UniversalApiContract, 6.0)]
            [threading(both)]
            runtimeclass GraphicsCaptureSession
            {
                [default] interface Windows.Graphics.Capture.IGraphicsCaptureSession;
                [contract(Windows.Foundation.UniversalApiContract, 10.0)] interface Windows.Graphics.Capture.IGraphicsCaptureSession2;
                [contract(Windows.Foundation.UniversalApiContract, 12.0)] interface Windows.Graphics.Capture.IGraphicsCaptureSession3;
                [contract(Windows.Foundation.UniversalApiContract, 19.0)] interface Windows.Graphics.Capture.IGraphicsCaptureSession4;
                [contract(Windows.Foundation.UniversalApiContract, 19.0)] interface Windows.Graphics.Capture.IGraphicsCaptureSession5;
                [contract(Windows.Foundation.UniversalApiContract, 19.0)] interface Windows.Graphics.Capture.IGraphicsCaptureSession6;
                interface Windows.Foundation.IClosable;
            }
        }
    }
}
