master
   1/*** Autogenerated by WIDL 10.4 from include/dxgi1_2.idl - Do not edit ***/
   2
   3#ifdef _WIN32
   4#ifndef __REQUIRED_RPCNDR_H_VERSION__
   5#define __REQUIRED_RPCNDR_H_VERSION__ 475
   6#endif
   7#include <rpc.h>
   8#include <rpcndr.h>
   9#endif
  10
  11#ifndef COM_NO_WINDOWS_H
  12#include <windows.h>
  13#include <ole2.h>
  14#endif
  15
  16#ifndef __dxgi1_2_h__
  17#define __dxgi1_2_h__
  18
  19/* Forward declarations */
  20
  21#ifndef __IDXGIOutputDuplication_FWD_DEFINED__
  22#define __IDXGIOutputDuplication_FWD_DEFINED__
  23typedef interface IDXGIOutputDuplication IDXGIOutputDuplication;
  24#ifdef __cplusplus
  25interface IDXGIOutputDuplication;
  26#endif /* __cplusplus */
  27#endif
  28
  29#ifndef __IDXGISurface2_FWD_DEFINED__
  30#define __IDXGISurface2_FWD_DEFINED__
  31typedef interface IDXGISurface2 IDXGISurface2;
  32#ifdef __cplusplus
  33interface IDXGISurface2;
  34#endif /* __cplusplus */
  35#endif
  36
  37#ifndef __IDXGIResource1_FWD_DEFINED__
  38#define __IDXGIResource1_FWD_DEFINED__
  39typedef interface IDXGIResource1 IDXGIResource1;
  40#ifdef __cplusplus
  41interface IDXGIResource1;
  42#endif /* __cplusplus */
  43#endif
  44
  45#ifndef __IDXGIDisplayControl_FWD_DEFINED__
  46#define __IDXGIDisplayControl_FWD_DEFINED__
  47typedef interface IDXGIDisplayControl IDXGIDisplayControl;
  48#ifdef __cplusplus
  49interface IDXGIDisplayControl;
  50#endif /* __cplusplus */
  51#endif
  52
  53#ifndef __IDXGIDevice2_FWD_DEFINED__
  54#define __IDXGIDevice2_FWD_DEFINED__
  55typedef interface IDXGIDevice2 IDXGIDevice2;
  56#ifdef __cplusplus
  57interface IDXGIDevice2;
  58#endif /* __cplusplus */
  59#endif
  60
  61#ifndef __IDXGISwapChain1_FWD_DEFINED__
  62#define __IDXGISwapChain1_FWD_DEFINED__
  63typedef interface IDXGISwapChain1 IDXGISwapChain1;
  64#ifdef __cplusplus
  65interface IDXGISwapChain1;
  66#endif /* __cplusplus */
  67#endif
  68
  69#ifndef __IDXGIFactory2_FWD_DEFINED__
  70#define __IDXGIFactory2_FWD_DEFINED__
  71typedef interface IDXGIFactory2 IDXGIFactory2;
  72#ifdef __cplusplus
  73interface IDXGIFactory2;
  74#endif /* __cplusplus */
  75#endif
  76
  77#ifndef __IDXGIAdapter2_FWD_DEFINED__
  78#define __IDXGIAdapter2_FWD_DEFINED__
  79typedef interface IDXGIAdapter2 IDXGIAdapter2;
  80#ifdef __cplusplus
  81interface IDXGIAdapter2;
  82#endif /* __cplusplus */
  83#endif
  84
  85#ifndef __IDXGIOutput1_FWD_DEFINED__
  86#define __IDXGIOutput1_FWD_DEFINED__
  87typedef interface IDXGIOutput1 IDXGIOutput1;
  88#ifdef __cplusplus
  89interface IDXGIOutput1;
  90#endif /* __cplusplus */
  91#endif
  92
  93/* Headers for imported files */
  94
  95#include <dxgi.h>
  96
  97#ifdef __cplusplus
  98extern "C" {
  99#endif
 100
 101#define DXGI_ENUM_MODES_STEREO (0x4)
 102
 103#define DXGI_ENUM_MODES_DISABLED_STEREO (0x8)
 104
 105#define DXGI_SHARED_RESOURCE_READ (0x80000000)
 106
 107#define DXGI_SHARED_RESOURCE_WRITE (0x1)
 108
 109typedef enum _DXGI_OFFER_RESOURCE_PRIORITY {
 110    DXGI_OFFER_RESOURCE_PRIORITY_LOW = 1,
 111    DXGI_OFFER_RESOURCE_PRIORITY_NORMAL = 2,
 112    DXGI_OFFER_RESOURCE_PRIORITY_HIGH = 3
 113} DXGI_OFFER_RESOURCE_PRIORITY;
 114typedef enum DXGI_ALPHA_MODE {
 115    DXGI_ALPHA_MODE_UNSPECIFIED = 0,
 116    DXGI_ALPHA_MODE_PREMULTIPLIED = 1,
 117    DXGI_ALPHA_MODE_STRAIGHT = 2,
 118    DXGI_ALPHA_MODE_IGNORE = 3,
 119    DXGI_ALPHA_MODE_FORCE_DWORD = 0xffffffff
 120} DXGI_ALPHA_MODE;
 121typedef struct DXGI_OUTDUPL_MOVE_RECT {
 122    POINT SourcePoint;
 123    RECT DestinationRect;
 124} DXGI_OUTDUPL_MOVE_RECT;
 125typedef struct DXGI_OUTDUPL_DESC {
 126    DXGI_MODE_DESC ModeDesc;
 127    DXGI_MODE_ROTATION Rotation;
 128    WINBOOL DesktopImageInSystemMemory;
 129} DXGI_OUTDUPL_DESC;
 130typedef struct DXGI_OUTDUPL_POINTER_POSITION {
 131    POINT Position;
 132    WINBOOL Visible;
 133} DXGI_OUTDUPL_POINTER_POSITION;
 134typedef enum DXGI_OUTDUPL_POINTER_SHAPE_TYPE {
 135    DXGI_OUTDUPL_POINTER_SHAPE_TYPE_MONOCHROME = 0x1,
 136    DXGI_OUTDUPL_POINTER_SHAPE_TYPE_COLOR = 0x2,
 137    DXGI_OUTDUPL_POINTER_SHAPE_TYPE_MASKED_COLOR = 0x4
 138} DXGI_OUTDUPL_POINTER_SHAPE_TYPE;
 139typedef struct DXGI_OUTDUPL_POINTER_SHAPE_INFO {
 140    UINT Type;
 141    UINT Width;
 142    UINT Height;
 143    UINT Pitch;
 144    POINT HotSpot;
 145} DXGI_OUTDUPL_POINTER_SHAPE_INFO;
 146typedef struct DXGI_OUTDUPL_FRAME_INFO {
 147    LARGE_INTEGER LastPresentTime;
 148    LARGE_INTEGER LastMouseUpdateTime;
 149    UINT AccumulatedFrames;
 150    WINBOOL RectsCoalesced;
 151    WINBOOL ProtectedContentMaskedOut;
 152    DXGI_OUTDUPL_POINTER_POSITION PointerPosition;
 153    UINT TotalMetadataBufferSize;
 154    UINT PointerShapeBufferSize;
 155} DXGI_OUTDUPL_FRAME_INFO;
 156typedef struct DXGI_MODE_DESC1 {
 157    UINT Width;
 158    UINT Height;
 159    DXGI_RATIONAL RefreshRate;
 160    DXGI_FORMAT Format;
 161    DXGI_MODE_SCANLINE_ORDER ScanlineOrdering;
 162    DXGI_MODE_SCALING Scaling;
 163    WINBOOL Stereo;
 164} DXGI_MODE_DESC1;
 165/*****************************************************************************
 166 * IDXGIOutputDuplication interface
 167 */
 168#ifndef __IDXGIOutputDuplication_INTERFACE_DEFINED__
 169#define __IDXGIOutputDuplication_INTERFACE_DEFINED__
 170
 171DEFINE_GUID(IID_IDXGIOutputDuplication, 0x191cfac3, 0xa341, 0x470d, 0xb2,0x6e, 0xa8,0x64,0xf4,0x28,0x31,0x9c);
 172#if defined(__cplusplus) && !defined(CINTERFACE)
 173MIDL_INTERFACE("191cfac3-a341-470d-b26e-a864f428319c")
 174IDXGIOutputDuplication : public IDXGIObject
 175{
 176    virtual void STDMETHODCALLTYPE GetDesc(
 177        DXGI_OUTDUPL_DESC *desc) = 0;
 178
 179    virtual HRESULT STDMETHODCALLTYPE AcquireNextFrame(
 180        UINT timeout_in_milliseconds,
 181        DXGI_OUTDUPL_FRAME_INFO *frame_info,
 182        IDXGIResource **desktop_resource) = 0;
 183
 184    virtual HRESULT STDMETHODCALLTYPE GetFrameDirtyRects(
 185        UINT dirty_rects_buffer_size,
 186        RECT *dirty_rects_buffer,
 187        UINT *dirty_rects_buffer_size_required) = 0;
 188
 189    virtual HRESULT STDMETHODCALLTYPE GetFrameMoveRects(
 190        UINT move_rects_buffer_size,
 191        DXGI_OUTDUPL_MOVE_RECT *move_rect_buffer,
 192        UINT *move_rects_buffer_size_required) = 0;
 193
 194    virtual HRESULT STDMETHODCALLTYPE GetFramePointerShape(
 195        UINT pointer_shape_buffer_size,
 196        void *pointer_shape_buffer,
 197        UINT *pointer_shape_buffer_size_required,
 198        DXGI_OUTDUPL_POINTER_SHAPE_INFO *pointer_shape_info) = 0;
 199
 200    virtual HRESULT STDMETHODCALLTYPE MapDesktopSurface(
 201        DXGI_MAPPED_RECT *locked_rect) = 0;
 202
 203    virtual HRESULT STDMETHODCALLTYPE UnMapDesktopSurface(
 204        ) = 0;
 205
 206    virtual HRESULT STDMETHODCALLTYPE ReleaseFrame(
 207        ) = 0;
 208
 209};
 210#ifdef __CRT_UUID_DECL
 211__CRT_UUID_DECL(IDXGIOutputDuplication, 0x191cfac3, 0xa341, 0x470d, 0xb2,0x6e, 0xa8,0x64,0xf4,0x28,0x31,0x9c)
 212#endif
 213#else
 214typedef struct IDXGIOutputDuplicationVtbl {
 215    BEGIN_INTERFACE
 216
 217    /*** IUnknown methods ***/
 218    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 219        IDXGIOutputDuplication *This,
 220        REFIID riid,
 221        void **ppvObject);
 222
 223    ULONG (STDMETHODCALLTYPE *AddRef)(
 224        IDXGIOutputDuplication *This);
 225
 226    ULONG (STDMETHODCALLTYPE *Release)(
 227        IDXGIOutputDuplication *This);
 228
 229    /*** IDXGIObject methods ***/
 230    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
 231        IDXGIOutputDuplication *This,
 232        REFGUID guid,
 233        UINT data_size,
 234        const void *data);
 235
 236    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
 237        IDXGIOutputDuplication *This,
 238        REFGUID guid,
 239        const IUnknown *object);
 240
 241    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
 242        IDXGIOutputDuplication *This,
 243        REFGUID guid,
 244        UINT *data_size,
 245        void *data);
 246
 247    HRESULT (STDMETHODCALLTYPE *GetParent)(
 248        IDXGIOutputDuplication *This,
 249        REFIID riid,
 250        void **parent);
 251
 252    /*** IDXGIOutputDuplication methods ***/
 253    void (STDMETHODCALLTYPE *GetDesc)(
 254        IDXGIOutputDuplication *This,
 255        DXGI_OUTDUPL_DESC *desc);
 256
 257    HRESULT (STDMETHODCALLTYPE *AcquireNextFrame)(
 258        IDXGIOutputDuplication *This,
 259        UINT timeout_in_milliseconds,
 260        DXGI_OUTDUPL_FRAME_INFO *frame_info,
 261        IDXGIResource **desktop_resource);
 262
 263    HRESULT (STDMETHODCALLTYPE *GetFrameDirtyRects)(
 264        IDXGIOutputDuplication *This,
 265        UINT dirty_rects_buffer_size,
 266        RECT *dirty_rects_buffer,
 267        UINT *dirty_rects_buffer_size_required);
 268
 269    HRESULT (STDMETHODCALLTYPE *GetFrameMoveRects)(
 270        IDXGIOutputDuplication *This,
 271        UINT move_rects_buffer_size,
 272        DXGI_OUTDUPL_MOVE_RECT *move_rect_buffer,
 273        UINT *move_rects_buffer_size_required);
 274
 275    HRESULT (STDMETHODCALLTYPE *GetFramePointerShape)(
 276        IDXGIOutputDuplication *This,
 277        UINT pointer_shape_buffer_size,
 278        void *pointer_shape_buffer,
 279        UINT *pointer_shape_buffer_size_required,
 280        DXGI_OUTDUPL_POINTER_SHAPE_INFO *pointer_shape_info);
 281
 282    HRESULT (STDMETHODCALLTYPE *MapDesktopSurface)(
 283        IDXGIOutputDuplication *This,
 284        DXGI_MAPPED_RECT *locked_rect);
 285
 286    HRESULT (STDMETHODCALLTYPE *UnMapDesktopSurface)(
 287        IDXGIOutputDuplication *This);
 288
 289    HRESULT (STDMETHODCALLTYPE *ReleaseFrame)(
 290        IDXGIOutputDuplication *This);
 291
 292    END_INTERFACE
 293} IDXGIOutputDuplicationVtbl;
 294
 295interface IDXGIOutputDuplication {
 296    CONST_VTBL IDXGIOutputDuplicationVtbl* lpVtbl;
 297};
 298
 299#ifdef COBJMACROS
 300#ifndef WIDL_C_INLINE_WRAPPERS
 301/*** IUnknown methods ***/
 302#define IDXGIOutputDuplication_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 303#define IDXGIOutputDuplication_AddRef(This) (This)->lpVtbl->AddRef(This)
 304#define IDXGIOutputDuplication_Release(This) (This)->lpVtbl->Release(This)
 305/*** IDXGIObject methods ***/
 306#define IDXGIOutputDuplication_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
 307#define IDXGIOutputDuplication_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
 308#define IDXGIOutputDuplication_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
 309#define IDXGIOutputDuplication_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
 310/*** IDXGIOutputDuplication methods ***/
 311#define IDXGIOutputDuplication_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
 312#define IDXGIOutputDuplication_AcquireNextFrame(This,timeout_in_milliseconds,frame_info,desktop_resource) (This)->lpVtbl->AcquireNextFrame(This,timeout_in_milliseconds,frame_info,desktop_resource)
 313#define IDXGIOutputDuplication_GetFrameDirtyRects(This,dirty_rects_buffer_size,dirty_rects_buffer,dirty_rects_buffer_size_required) (This)->lpVtbl->GetFrameDirtyRects(This,dirty_rects_buffer_size,dirty_rects_buffer,dirty_rects_buffer_size_required)
 314#define IDXGIOutputDuplication_GetFrameMoveRects(This,move_rects_buffer_size,move_rect_buffer,move_rects_buffer_size_required) (This)->lpVtbl->GetFrameMoveRects(This,move_rects_buffer_size,move_rect_buffer,move_rects_buffer_size_required)
 315#define IDXGIOutputDuplication_GetFramePointerShape(This,pointer_shape_buffer_size,pointer_shape_buffer,pointer_shape_buffer_size_required,pointer_shape_info) (This)->lpVtbl->GetFramePointerShape(This,pointer_shape_buffer_size,pointer_shape_buffer,pointer_shape_buffer_size_required,pointer_shape_info)
 316#define IDXGIOutputDuplication_MapDesktopSurface(This,locked_rect) (This)->lpVtbl->MapDesktopSurface(This,locked_rect)
 317#define IDXGIOutputDuplication_UnMapDesktopSurface(This) (This)->lpVtbl->UnMapDesktopSurface(This)
 318#define IDXGIOutputDuplication_ReleaseFrame(This) (This)->lpVtbl->ReleaseFrame(This)
 319#else
 320/*** IUnknown methods ***/
 321static inline HRESULT IDXGIOutputDuplication_QueryInterface(IDXGIOutputDuplication* This,REFIID riid,void **ppvObject) {
 322    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 323}
 324static inline ULONG IDXGIOutputDuplication_AddRef(IDXGIOutputDuplication* This) {
 325    return This->lpVtbl->AddRef(This);
 326}
 327static inline ULONG IDXGIOutputDuplication_Release(IDXGIOutputDuplication* This) {
 328    return This->lpVtbl->Release(This);
 329}
 330/*** IDXGIObject methods ***/
 331static inline HRESULT IDXGIOutputDuplication_SetPrivateData(IDXGIOutputDuplication* This,REFGUID guid,UINT data_size,const void *data) {
 332    return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
 333}
 334static inline HRESULT IDXGIOutputDuplication_SetPrivateDataInterface(IDXGIOutputDuplication* This,REFGUID guid,const IUnknown *object) {
 335    return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
 336}
 337static inline HRESULT IDXGIOutputDuplication_GetPrivateData(IDXGIOutputDuplication* This,REFGUID guid,UINT *data_size,void *data) {
 338    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
 339}
 340static inline HRESULT IDXGIOutputDuplication_GetParent(IDXGIOutputDuplication* This,REFIID riid,void **parent) {
 341    return This->lpVtbl->GetParent(This,riid,parent);
 342}
 343/*** IDXGIOutputDuplication methods ***/
 344static inline void IDXGIOutputDuplication_GetDesc(IDXGIOutputDuplication* This,DXGI_OUTDUPL_DESC *desc) {
 345    This->lpVtbl->GetDesc(This,desc);
 346}
 347static inline HRESULT IDXGIOutputDuplication_AcquireNextFrame(IDXGIOutputDuplication* This,UINT timeout_in_milliseconds,DXGI_OUTDUPL_FRAME_INFO *frame_info,IDXGIResource **desktop_resource) {
 348    return This->lpVtbl->AcquireNextFrame(This,timeout_in_milliseconds,frame_info,desktop_resource);
 349}
 350static inline HRESULT IDXGIOutputDuplication_GetFrameDirtyRects(IDXGIOutputDuplication* This,UINT dirty_rects_buffer_size,RECT *dirty_rects_buffer,UINT *dirty_rects_buffer_size_required) {
 351    return This->lpVtbl->GetFrameDirtyRects(This,dirty_rects_buffer_size,dirty_rects_buffer,dirty_rects_buffer_size_required);
 352}
 353static inline HRESULT IDXGIOutputDuplication_GetFrameMoveRects(IDXGIOutputDuplication* This,UINT move_rects_buffer_size,DXGI_OUTDUPL_MOVE_RECT *move_rect_buffer,UINT *move_rects_buffer_size_required) {
 354    return This->lpVtbl->GetFrameMoveRects(This,move_rects_buffer_size,move_rect_buffer,move_rects_buffer_size_required);
 355}
 356static inline HRESULT IDXGIOutputDuplication_GetFramePointerShape(IDXGIOutputDuplication* This,UINT pointer_shape_buffer_size,void *pointer_shape_buffer,UINT *pointer_shape_buffer_size_required,DXGI_OUTDUPL_POINTER_SHAPE_INFO *pointer_shape_info) {
 357    return This->lpVtbl->GetFramePointerShape(This,pointer_shape_buffer_size,pointer_shape_buffer,pointer_shape_buffer_size_required,pointer_shape_info);
 358}
 359static inline HRESULT IDXGIOutputDuplication_MapDesktopSurface(IDXGIOutputDuplication* This,DXGI_MAPPED_RECT *locked_rect) {
 360    return This->lpVtbl->MapDesktopSurface(This,locked_rect);
 361}
 362static inline HRESULT IDXGIOutputDuplication_UnMapDesktopSurface(IDXGIOutputDuplication* This) {
 363    return This->lpVtbl->UnMapDesktopSurface(This);
 364}
 365static inline HRESULT IDXGIOutputDuplication_ReleaseFrame(IDXGIOutputDuplication* This) {
 366    return This->lpVtbl->ReleaseFrame(This);
 367}
 368#endif
 369#endif
 370
 371#endif
 372
 373
 374#endif  /* __IDXGIOutputDuplication_INTERFACE_DEFINED__ */
 375
 376/*****************************************************************************
 377 * IDXGISurface2 interface
 378 */
 379#ifndef __IDXGISurface2_INTERFACE_DEFINED__
 380#define __IDXGISurface2_INTERFACE_DEFINED__
 381
 382DEFINE_GUID(IID_IDXGISurface2, 0xaba496dd, 0xb617, 0x4cb8, 0xa8,0x66, 0xbc,0x44,0xd7,0xeb,0x1f,0xa2);
 383#if defined(__cplusplus) && !defined(CINTERFACE)
 384MIDL_INTERFACE("aba496dd-b617-4cb8-a866-bc44d7eb1fa2")
 385IDXGISurface2 : public IDXGISurface1
 386{
 387    virtual HRESULT STDMETHODCALLTYPE GetResource(
 388        REFIID iid,
 389        void **parent_resource,
 390        UINT *subresource_idx) = 0;
 391
 392};
 393#ifdef __CRT_UUID_DECL
 394__CRT_UUID_DECL(IDXGISurface2, 0xaba496dd, 0xb617, 0x4cb8, 0xa8,0x66, 0xbc,0x44,0xd7,0xeb,0x1f,0xa2)
 395#endif
 396#else
 397typedef struct IDXGISurface2Vtbl {
 398    BEGIN_INTERFACE
 399
 400    /*** IUnknown methods ***/
 401    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 402        IDXGISurface2 *This,
 403        REFIID riid,
 404        void **ppvObject);
 405
 406    ULONG (STDMETHODCALLTYPE *AddRef)(
 407        IDXGISurface2 *This);
 408
 409    ULONG (STDMETHODCALLTYPE *Release)(
 410        IDXGISurface2 *This);
 411
 412    /*** IDXGIObject methods ***/
 413    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
 414        IDXGISurface2 *This,
 415        REFGUID guid,
 416        UINT data_size,
 417        const void *data);
 418
 419    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
 420        IDXGISurface2 *This,
 421        REFGUID guid,
 422        const IUnknown *object);
 423
 424    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
 425        IDXGISurface2 *This,
 426        REFGUID guid,
 427        UINT *data_size,
 428        void *data);
 429
 430    HRESULT (STDMETHODCALLTYPE *GetParent)(
 431        IDXGISurface2 *This,
 432        REFIID riid,
 433        void **parent);
 434
 435    /*** IDXGIDeviceSubObject methods ***/
 436    HRESULT (STDMETHODCALLTYPE *GetDevice)(
 437        IDXGISurface2 *This,
 438        REFIID riid,
 439        void **device);
 440
 441    /*** IDXGISurface methods ***/
 442    HRESULT (STDMETHODCALLTYPE *GetDesc)(
 443        IDXGISurface2 *This,
 444        DXGI_SURFACE_DESC *desc);
 445
 446    HRESULT (STDMETHODCALLTYPE *Map)(
 447        IDXGISurface2 *This,
 448        DXGI_MAPPED_RECT *mapped_rect,
 449        UINT flags);
 450
 451    HRESULT (STDMETHODCALLTYPE *Unmap)(
 452        IDXGISurface2 *This);
 453
 454    /*** IDXGISurface1 methods ***/
 455    HRESULT (STDMETHODCALLTYPE *GetDC)(
 456        IDXGISurface2 *This,
 457        WINBOOL discard,
 458        HDC *hdc);
 459
 460    HRESULT (STDMETHODCALLTYPE *ReleaseDC)(
 461        IDXGISurface2 *This,
 462        RECT *dirty_rect);
 463
 464    /*** IDXGISurface2 methods ***/
 465    HRESULT (STDMETHODCALLTYPE *GetResource)(
 466        IDXGISurface2 *This,
 467        REFIID iid,
 468        void **parent_resource,
 469        UINT *subresource_idx);
 470
 471    END_INTERFACE
 472} IDXGISurface2Vtbl;
 473
 474interface IDXGISurface2 {
 475    CONST_VTBL IDXGISurface2Vtbl* lpVtbl;
 476};
 477
 478#ifdef COBJMACROS
 479#ifndef WIDL_C_INLINE_WRAPPERS
 480/*** IUnknown methods ***/
 481#define IDXGISurface2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 482#define IDXGISurface2_AddRef(This) (This)->lpVtbl->AddRef(This)
 483#define IDXGISurface2_Release(This) (This)->lpVtbl->Release(This)
 484/*** IDXGIObject methods ***/
 485#define IDXGISurface2_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
 486#define IDXGISurface2_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
 487#define IDXGISurface2_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
 488#define IDXGISurface2_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
 489/*** IDXGIDeviceSubObject methods ***/
 490#define IDXGISurface2_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
 491/*** IDXGISurface methods ***/
 492#define IDXGISurface2_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
 493#define IDXGISurface2_Map(This,mapped_rect,flags) (This)->lpVtbl->Map(This,mapped_rect,flags)
 494#define IDXGISurface2_Unmap(This) (This)->lpVtbl->Unmap(This)
 495/*** IDXGISurface1 methods ***/
 496#define IDXGISurface2_GetDC(This,discard,hdc) (This)->lpVtbl->GetDC(This,discard,hdc)
 497#define IDXGISurface2_ReleaseDC(This,dirty_rect) (This)->lpVtbl->ReleaseDC(This,dirty_rect)
 498/*** IDXGISurface2 methods ***/
 499#define IDXGISurface2_GetResource(This,iid,parent_resource,subresource_idx) (This)->lpVtbl->GetResource(This,iid,parent_resource,subresource_idx)
 500#else
 501/*** IUnknown methods ***/
 502static inline HRESULT IDXGISurface2_QueryInterface(IDXGISurface2* This,REFIID riid,void **ppvObject) {
 503    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 504}
 505static inline ULONG IDXGISurface2_AddRef(IDXGISurface2* This) {
 506    return This->lpVtbl->AddRef(This);
 507}
 508static inline ULONG IDXGISurface2_Release(IDXGISurface2* This) {
 509    return This->lpVtbl->Release(This);
 510}
 511/*** IDXGIObject methods ***/
 512static inline HRESULT IDXGISurface2_SetPrivateData(IDXGISurface2* This,REFGUID guid,UINT data_size,const void *data) {
 513    return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
 514}
 515static inline HRESULT IDXGISurface2_SetPrivateDataInterface(IDXGISurface2* This,REFGUID guid,const IUnknown *object) {
 516    return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
 517}
 518static inline HRESULT IDXGISurface2_GetPrivateData(IDXGISurface2* This,REFGUID guid,UINT *data_size,void *data) {
 519    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
 520}
 521static inline HRESULT IDXGISurface2_GetParent(IDXGISurface2* This,REFIID riid,void **parent) {
 522    return This->lpVtbl->GetParent(This,riid,parent);
 523}
 524/*** IDXGIDeviceSubObject methods ***/
 525static inline HRESULT IDXGISurface2_GetDevice(IDXGISurface2* This,REFIID riid,void **device) {
 526    return This->lpVtbl->GetDevice(This,riid,device);
 527}
 528/*** IDXGISurface methods ***/
 529static inline HRESULT IDXGISurface2_GetDesc(IDXGISurface2* This,DXGI_SURFACE_DESC *desc) {
 530    return This->lpVtbl->GetDesc(This,desc);
 531}
 532static inline HRESULT IDXGISurface2_Map(IDXGISurface2* This,DXGI_MAPPED_RECT *mapped_rect,UINT flags) {
 533    return This->lpVtbl->Map(This,mapped_rect,flags);
 534}
 535static inline HRESULT IDXGISurface2_Unmap(IDXGISurface2* This) {
 536    return This->lpVtbl->Unmap(This);
 537}
 538/*** IDXGISurface1 methods ***/
 539static inline HRESULT IDXGISurface2_GetDC(IDXGISurface2* This,WINBOOL discard,HDC *hdc) {
 540    return This->lpVtbl->GetDC(This,discard,hdc);
 541}
 542static inline HRESULT IDXGISurface2_ReleaseDC(IDXGISurface2* This,RECT *dirty_rect) {
 543    return This->lpVtbl->ReleaseDC(This,dirty_rect);
 544}
 545/*** IDXGISurface2 methods ***/
 546static inline HRESULT IDXGISurface2_GetResource(IDXGISurface2* This,REFIID iid,void **parent_resource,UINT *subresource_idx) {
 547    return This->lpVtbl->GetResource(This,iid,parent_resource,subresource_idx);
 548}
 549#endif
 550#endif
 551
 552#endif
 553
 554
 555#endif  /* __IDXGISurface2_INTERFACE_DEFINED__ */
 556
 557/*****************************************************************************
 558 * IDXGIResource1 interface
 559 */
 560#ifndef __IDXGIResource1_INTERFACE_DEFINED__
 561#define __IDXGIResource1_INTERFACE_DEFINED__
 562
 563DEFINE_GUID(IID_IDXGIResource1, 0x30961379, 0x4609, 0x4a41, 0x99,0x8e, 0x54,0xfe,0x56,0x7e,0xe0,0xc1);
 564#if defined(__cplusplus) && !defined(CINTERFACE)
 565MIDL_INTERFACE("30961379-4609-4a41-998e-54fe567ee0c1")
 566IDXGIResource1 : public IDXGIResource
 567{
 568    virtual HRESULT STDMETHODCALLTYPE CreateSubresourceSurface(
 569        UINT index,
 570        IDXGISurface2 **surface) = 0;
 571
 572    virtual HRESULT STDMETHODCALLTYPE CreateSharedHandle(
 573        const SECURITY_ATTRIBUTES *attributes,
 574        DWORD access,
 575        const WCHAR *name,
 576        HANDLE *handle) = 0;
 577
 578};
 579#ifdef __CRT_UUID_DECL
 580__CRT_UUID_DECL(IDXGIResource1, 0x30961379, 0x4609, 0x4a41, 0x99,0x8e, 0x54,0xfe,0x56,0x7e,0xe0,0xc1)
 581#endif
 582#else
 583typedef struct IDXGIResource1Vtbl {
 584    BEGIN_INTERFACE
 585
 586    /*** IUnknown methods ***/
 587    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 588        IDXGIResource1 *This,
 589        REFIID riid,
 590        void **ppvObject);
 591
 592    ULONG (STDMETHODCALLTYPE *AddRef)(
 593        IDXGIResource1 *This);
 594
 595    ULONG (STDMETHODCALLTYPE *Release)(
 596        IDXGIResource1 *This);
 597
 598    /*** IDXGIObject methods ***/
 599    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
 600        IDXGIResource1 *This,
 601        REFGUID guid,
 602        UINT data_size,
 603        const void *data);
 604
 605    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
 606        IDXGIResource1 *This,
 607        REFGUID guid,
 608        const IUnknown *object);
 609
 610    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
 611        IDXGIResource1 *This,
 612        REFGUID guid,
 613        UINT *data_size,
 614        void *data);
 615
 616    HRESULT (STDMETHODCALLTYPE *GetParent)(
 617        IDXGIResource1 *This,
 618        REFIID riid,
 619        void **parent);
 620
 621    /*** IDXGIDeviceSubObject methods ***/
 622    HRESULT (STDMETHODCALLTYPE *GetDevice)(
 623        IDXGIResource1 *This,
 624        REFIID riid,
 625        void **device);
 626
 627    /*** IDXGIResource methods ***/
 628    HRESULT (STDMETHODCALLTYPE *GetSharedHandle)(
 629        IDXGIResource1 *This,
 630        HANDLE *pSharedHandle);
 631
 632    HRESULT (STDMETHODCALLTYPE *GetUsage)(
 633        IDXGIResource1 *This,
 634        DXGI_USAGE *pUsage);
 635
 636    HRESULT (STDMETHODCALLTYPE *SetEvictionPriority)(
 637        IDXGIResource1 *This,
 638        UINT EvictionPriority);
 639
 640    HRESULT (STDMETHODCALLTYPE *GetEvictionPriority)(
 641        IDXGIResource1 *This,
 642        UINT *pEvictionPriority);
 643
 644    /*** IDXGIResource1 methods ***/
 645    HRESULT (STDMETHODCALLTYPE *CreateSubresourceSurface)(
 646        IDXGIResource1 *This,
 647        UINT index,
 648        IDXGISurface2 **surface);
 649
 650    HRESULT (STDMETHODCALLTYPE *CreateSharedHandle)(
 651        IDXGIResource1 *This,
 652        const SECURITY_ATTRIBUTES *attributes,
 653        DWORD access,
 654        const WCHAR *name,
 655        HANDLE *handle);
 656
 657    END_INTERFACE
 658} IDXGIResource1Vtbl;
 659
 660interface IDXGIResource1 {
 661    CONST_VTBL IDXGIResource1Vtbl* lpVtbl;
 662};
 663
 664#ifdef COBJMACROS
 665#ifndef WIDL_C_INLINE_WRAPPERS
 666/*** IUnknown methods ***/
 667#define IDXGIResource1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 668#define IDXGIResource1_AddRef(This) (This)->lpVtbl->AddRef(This)
 669#define IDXGIResource1_Release(This) (This)->lpVtbl->Release(This)
 670/*** IDXGIObject methods ***/
 671#define IDXGIResource1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
 672#define IDXGIResource1_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
 673#define IDXGIResource1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
 674#define IDXGIResource1_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
 675/*** IDXGIDeviceSubObject methods ***/
 676#define IDXGIResource1_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
 677/*** IDXGIResource methods ***/
 678#define IDXGIResource1_GetSharedHandle(This,pSharedHandle) (This)->lpVtbl->GetSharedHandle(This,pSharedHandle)
 679#define IDXGIResource1_GetUsage(This,pUsage) (This)->lpVtbl->GetUsage(This,pUsage)
 680#define IDXGIResource1_SetEvictionPriority(This,EvictionPriority) (This)->lpVtbl->SetEvictionPriority(This,EvictionPriority)
 681#define IDXGIResource1_GetEvictionPriority(This,pEvictionPriority) (This)->lpVtbl->GetEvictionPriority(This,pEvictionPriority)
 682/*** IDXGIResource1 methods ***/
 683#define IDXGIResource1_CreateSubresourceSurface(This,index,surface) (This)->lpVtbl->CreateSubresourceSurface(This,index,surface)
 684#define IDXGIResource1_CreateSharedHandle(This,attributes,access,name,handle) (This)->lpVtbl->CreateSharedHandle(This,attributes,access,name,handle)
 685#else
 686/*** IUnknown methods ***/
 687static inline HRESULT IDXGIResource1_QueryInterface(IDXGIResource1* This,REFIID riid,void **ppvObject) {
 688    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 689}
 690static inline ULONG IDXGIResource1_AddRef(IDXGIResource1* This) {
 691    return This->lpVtbl->AddRef(This);
 692}
 693static inline ULONG IDXGIResource1_Release(IDXGIResource1* This) {
 694    return This->lpVtbl->Release(This);
 695}
 696/*** IDXGIObject methods ***/
 697static inline HRESULT IDXGIResource1_SetPrivateData(IDXGIResource1* This,REFGUID guid,UINT data_size,const void *data) {
 698    return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
 699}
 700static inline HRESULT IDXGIResource1_SetPrivateDataInterface(IDXGIResource1* This,REFGUID guid,const IUnknown *object) {
 701    return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
 702}
 703static inline HRESULT IDXGIResource1_GetPrivateData(IDXGIResource1* This,REFGUID guid,UINT *data_size,void *data) {
 704    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
 705}
 706static inline HRESULT IDXGIResource1_GetParent(IDXGIResource1* This,REFIID riid,void **parent) {
 707    return This->lpVtbl->GetParent(This,riid,parent);
 708}
 709/*** IDXGIDeviceSubObject methods ***/
 710static inline HRESULT IDXGIResource1_GetDevice(IDXGIResource1* This,REFIID riid,void **device) {
 711    return This->lpVtbl->GetDevice(This,riid,device);
 712}
 713/*** IDXGIResource methods ***/
 714static inline HRESULT IDXGIResource1_GetSharedHandle(IDXGIResource1* This,HANDLE *pSharedHandle) {
 715    return This->lpVtbl->GetSharedHandle(This,pSharedHandle);
 716}
 717static inline HRESULT IDXGIResource1_GetUsage(IDXGIResource1* This,DXGI_USAGE *pUsage) {
 718    return This->lpVtbl->GetUsage(This,pUsage);
 719}
 720static inline HRESULT IDXGIResource1_SetEvictionPriority(IDXGIResource1* This,UINT EvictionPriority) {
 721    return This->lpVtbl->SetEvictionPriority(This,EvictionPriority);
 722}
 723static inline HRESULT IDXGIResource1_GetEvictionPriority(IDXGIResource1* This,UINT *pEvictionPriority) {
 724    return This->lpVtbl->GetEvictionPriority(This,pEvictionPriority);
 725}
 726/*** IDXGIResource1 methods ***/
 727static inline HRESULT IDXGIResource1_CreateSubresourceSurface(IDXGIResource1* This,UINT index,IDXGISurface2 **surface) {
 728    return This->lpVtbl->CreateSubresourceSurface(This,index,surface);
 729}
 730static inline HRESULT IDXGIResource1_CreateSharedHandle(IDXGIResource1* This,const SECURITY_ATTRIBUTES *attributes,DWORD access,const WCHAR *name,HANDLE *handle) {
 731    return This->lpVtbl->CreateSharedHandle(This,attributes,access,name,handle);
 732}
 733#endif
 734#endif
 735
 736#endif
 737
 738
 739#endif  /* __IDXGIResource1_INTERFACE_DEFINED__ */
 740
 741/*****************************************************************************
 742 * IDXGIDisplayControl interface
 743 */
 744#ifndef __IDXGIDisplayControl_INTERFACE_DEFINED__
 745#define __IDXGIDisplayControl_INTERFACE_DEFINED__
 746
 747DEFINE_GUID(IID_IDXGIDisplayControl, 0xea9dbf1a, 0xc88e, 0x4486, 0x85,0x4a, 0x98,0xaa,0x01,0x38,0xf3,0x0c);
 748#if defined(__cplusplus) && !defined(CINTERFACE)
 749MIDL_INTERFACE("ea9dbf1a-c88e-4486-854a-98aa0138f30c")
 750IDXGIDisplayControl : public IUnknown
 751{
 752    virtual WINBOOL STDMETHODCALLTYPE IsStereoEnabled(
 753        ) = 0;
 754
 755    virtual void STDMETHODCALLTYPE SetStereoEnabled(
 756        WINBOOL enabled) = 0;
 757
 758};
 759#ifdef __CRT_UUID_DECL
 760__CRT_UUID_DECL(IDXGIDisplayControl, 0xea9dbf1a, 0xc88e, 0x4486, 0x85,0x4a, 0x98,0xaa,0x01,0x38,0xf3,0x0c)
 761#endif
 762#else
 763typedef struct IDXGIDisplayControlVtbl {
 764    BEGIN_INTERFACE
 765
 766    /*** IUnknown methods ***/
 767    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 768        IDXGIDisplayControl *This,
 769        REFIID riid,
 770        void **ppvObject);
 771
 772    ULONG (STDMETHODCALLTYPE *AddRef)(
 773        IDXGIDisplayControl *This);
 774
 775    ULONG (STDMETHODCALLTYPE *Release)(
 776        IDXGIDisplayControl *This);
 777
 778    /*** IDXGIDisplayControl methods ***/
 779    WINBOOL (STDMETHODCALLTYPE *IsStereoEnabled)(
 780        IDXGIDisplayControl *This);
 781
 782    void (STDMETHODCALLTYPE *SetStereoEnabled)(
 783        IDXGIDisplayControl *This,
 784        WINBOOL enabled);
 785
 786    END_INTERFACE
 787} IDXGIDisplayControlVtbl;
 788
 789interface IDXGIDisplayControl {
 790    CONST_VTBL IDXGIDisplayControlVtbl* lpVtbl;
 791};
 792
 793#ifdef COBJMACROS
 794#ifndef WIDL_C_INLINE_WRAPPERS
 795/*** IUnknown methods ***/
 796#define IDXGIDisplayControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 797#define IDXGIDisplayControl_AddRef(This) (This)->lpVtbl->AddRef(This)
 798#define IDXGIDisplayControl_Release(This) (This)->lpVtbl->Release(This)
 799/*** IDXGIDisplayControl methods ***/
 800#define IDXGIDisplayControl_IsStereoEnabled(This) (This)->lpVtbl->IsStereoEnabled(This)
 801#define IDXGIDisplayControl_SetStereoEnabled(This,enabled) (This)->lpVtbl->SetStereoEnabled(This,enabled)
 802#else
 803/*** IUnknown methods ***/
 804static inline HRESULT IDXGIDisplayControl_QueryInterface(IDXGIDisplayControl* This,REFIID riid,void **ppvObject) {
 805    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 806}
 807static inline ULONG IDXGIDisplayControl_AddRef(IDXGIDisplayControl* This) {
 808    return This->lpVtbl->AddRef(This);
 809}
 810static inline ULONG IDXGIDisplayControl_Release(IDXGIDisplayControl* This) {
 811    return This->lpVtbl->Release(This);
 812}
 813/*** IDXGIDisplayControl methods ***/
 814static inline WINBOOL IDXGIDisplayControl_IsStereoEnabled(IDXGIDisplayControl* This) {
 815    return This->lpVtbl->IsStereoEnabled(This);
 816}
 817static inline void IDXGIDisplayControl_SetStereoEnabled(IDXGIDisplayControl* This,WINBOOL enabled) {
 818    This->lpVtbl->SetStereoEnabled(This,enabled);
 819}
 820#endif
 821#endif
 822
 823#endif
 824
 825
 826#endif  /* __IDXGIDisplayControl_INTERFACE_DEFINED__ */
 827
 828/*****************************************************************************
 829 * IDXGIDevice2 interface
 830 */
 831#ifndef __IDXGIDevice2_INTERFACE_DEFINED__
 832#define __IDXGIDevice2_INTERFACE_DEFINED__
 833
 834DEFINE_GUID(IID_IDXGIDevice2, 0x05008617, 0xfbfd, 0x4051, 0xa7,0x90, 0x14,0x48,0x84,0xb4,0xf6,0xa9);
 835#if defined(__cplusplus) && !defined(CINTERFACE)
 836MIDL_INTERFACE("05008617-fbfd-4051-a790-144884b4f6a9")
 837IDXGIDevice2 : public IDXGIDevice1
 838{
 839    virtual HRESULT STDMETHODCALLTYPE OfferResources(
 840        UINT NumResources,
 841        IDXGIResource *const *ppResources,
 842        DXGI_OFFER_RESOURCE_PRIORITY Priority) = 0;
 843
 844    virtual HRESULT STDMETHODCALLTYPE ReclaimResources(
 845        UINT NumResources,
 846        IDXGIResource *const *ppResources,
 847        WINBOOL *pDiscarded) = 0;
 848
 849    virtual HRESULT STDMETHODCALLTYPE EnqueueSetEvent(
 850        HANDLE hEvent) = 0;
 851
 852};
 853#ifdef __CRT_UUID_DECL
 854__CRT_UUID_DECL(IDXGIDevice2, 0x05008617, 0xfbfd, 0x4051, 0xa7,0x90, 0x14,0x48,0x84,0xb4,0xf6,0xa9)
 855#endif
 856#else
 857typedef struct IDXGIDevice2Vtbl {
 858    BEGIN_INTERFACE
 859
 860    /*** IUnknown methods ***/
 861    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
 862        IDXGIDevice2 *This,
 863        REFIID riid,
 864        void **ppvObject);
 865
 866    ULONG (STDMETHODCALLTYPE *AddRef)(
 867        IDXGIDevice2 *This);
 868
 869    ULONG (STDMETHODCALLTYPE *Release)(
 870        IDXGIDevice2 *This);
 871
 872    /*** IDXGIObject methods ***/
 873    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
 874        IDXGIDevice2 *This,
 875        REFGUID guid,
 876        UINT data_size,
 877        const void *data);
 878
 879    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
 880        IDXGIDevice2 *This,
 881        REFGUID guid,
 882        const IUnknown *object);
 883
 884    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
 885        IDXGIDevice2 *This,
 886        REFGUID guid,
 887        UINT *data_size,
 888        void *data);
 889
 890    HRESULT (STDMETHODCALLTYPE *GetParent)(
 891        IDXGIDevice2 *This,
 892        REFIID riid,
 893        void **parent);
 894
 895    /*** IDXGIDevice methods ***/
 896    HRESULT (STDMETHODCALLTYPE *GetAdapter)(
 897        IDXGIDevice2 *This,
 898        IDXGIAdapter **adapter);
 899
 900    HRESULT (STDMETHODCALLTYPE *CreateSurface)(
 901        IDXGIDevice2 *This,
 902        const DXGI_SURFACE_DESC *desc,
 903        UINT surface_count,
 904        DXGI_USAGE usage,
 905        const DXGI_SHARED_RESOURCE *shared_resource,
 906        IDXGISurface **surface);
 907
 908    HRESULT (STDMETHODCALLTYPE *QueryResourceResidency)(
 909        IDXGIDevice2 *This,
 910        IUnknown *const *resources,
 911        DXGI_RESIDENCY *residency,
 912        UINT resource_count);
 913
 914    HRESULT (STDMETHODCALLTYPE *SetGPUThreadPriority)(
 915        IDXGIDevice2 *This,
 916        INT priority);
 917
 918    HRESULT (STDMETHODCALLTYPE *GetGPUThreadPriority)(
 919        IDXGIDevice2 *This,
 920        INT *priority);
 921
 922    /*** IDXGIDevice1 methods ***/
 923    HRESULT (STDMETHODCALLTYPE *SetMaximumFrameLatency)(
 924        IDXGIDevice2 *This,
 925        UINT MaxLatency);
 926
 927    HRESULT (STDMETHODCALLTYPE *GetMaximumFrameLatency)(
 928        IDXGIDevice2 *This,
 929        UINT *pMaxLatency);
 930
 931    /*** IDXGIDevice2 methods ***/
 932    HRESULT (STDMETHODCALLTYPE *OfferResources)(
 933        IDXGIDevice2 *This,
 934        UINT NumResources,
 935        IDXGIResource *const *ppResources,
 936        DXGI_OFFER_RESOURCE_PRIORITY Priority);
 937
 938    HRESULT (STDMETHODCALLTYPE *ReclaimResources)(
 939        IDXGIDevice2 *This,
 940        UINT NumResources,
 941        IDXGIResource *const *ppResources,
 942        WINBOOL *pDiscarded);
 943
 944    HRESULT (STDMETHODCALLTYPE *EnqueueSetEvent)(
 945        IDXGIDevice2 *This,
 946        HANDLE hEvent);
 947
 948    END_INTERFACE
 949} IDXGIDevice2Vtbl;
 950
 951interface IDXGIDevice2 {
 952    CONST_VTBL IDXGIDevice2Vtbl* lpVtbl;
 953};
 954
 955#ifdef COBJMACROS
 956#ifndef WIDL_C_INLINE_WRAPPERS
 957/*** IUnknown methods ***/
 958#define IDXGIDevice2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 959#define IDXGIDevice2_AddRef(This) (This)->lpVtbl->AddRef(This)
 960#define IDXGIDevice2_Release(This) (This)->lpVtbl->Release(This)
 961/*** IDXGIObject methods ***/
 962#define IDXGIDevice2_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
 963#define IDXGIDevice2_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
 964#define IDXGIDevice2_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
 965#define IDXGIDevice2_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
 966/*** IDXGIDevice methods ***/
 967#define IDXGIDevice2_GetAdapter(This,adapter) (This)->lpVtbl->GetAdapter(This,adapter)
 968#define IDXGIDevice2_CreateSurface(This,desc,surface_count,usage,shared_resource,surface) (This)->lpVtbl->CreateSurface(This,desc,surface_count,usage,shared_resource,surface)
 969#define IDXGIDevice2_QueryResourceResidency(This,resources,residency,resource_count) (This)->lpVtbl->QueryResourceResidency(This,resources,residency,resource_count)
 970#define IDXGIDevice2_SetGPUThreadPriority(This,priority) (This)->lpVtbl->SetGPUThreadPriority(This,priority)
 971#define IDXGIDevice2_GetGPUThreadPriority(This,priority) (This)->lpVtbl->GetGPUThreadPriority(This,priority)
 972/*** IDXGIDevice1 methods ***/
 973#define IDXGIDevice2_SetMaximumFrameLatency(This,MaxLatency) (This)->lpVtbl->SetMaximumFrameLatency(This,MaxLatency)
 974#define IDXGIDevice2_GetMaximumFrameLatency(This,pMaxLatency) (This)->lpVtbl->GetMaximumFrameLatency(This,pMaxLatency)
 975/*** IDXGIDevice2 methods ***/
 976#define IDXGIDevice2_OfferResources(This,NumResources,ppResources,Priority) (This)->lpVtbl->OfferResources(This,NumResources,ppResources,Priority)
 977#define IDXGIDevice2_ReclaimResources(This,NumResources,ppResources,pDiscarded) (This)->lpVtbl->ReclaimResources(This,NumResources,ppResources,pDiscarded)
 978#define IDXGIDevice2_EnqueueSetEvent(This,hEvent) (This)->lpVtbl->EnqueueSetEvent(This,hEvent)
 979#else
 980/*** IUnknown methods ***/
 981static inline HRESULT IDXGIDevice2_QueryInterface(IDXGIDevice2* This,REFIID riid,void **ppvObject) {
 982    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 983}
 984static inline ULONG IDXGIDevice2_AddRef(IDXGIDevice2* This) {
 985    return This->lpVtbl->AddRef(This);
 986}
 987static inline ULONG IDXGIDevice2_Release(IDXGIDevice2* This) {
 988    return This->lpVtbl->Release(This);
 989}
 990/*** IDXGIObject methods ***/
 991static inline HRESULT IDXGIDevice2_SetPrivateData(IDXGIDevice2* This,REFGUID guid,UINT data_size,const void *data) {
 992    return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
 993}
 994static inline HRESULT IDXGIDevice2_SetPrivateDataInterface(IDXGIDevice2* This,REFGUID guid,const IUnknown *object) {
 995    return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
 996}
 997static inline HRESULT IDXGIDevice2_GetPrivateData(IDXGIDevice2* This,REFGUID guid,UINT *data_size,void *data) {
 998    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
 999}
1000static inline HRESULT IDXGIDevice2_GetParent(IDXGIDevice2* This,REFIID riid,void **parent) {
1001    return This->lpVtbl->GetParent(This,riid,parent);
1002}
1003/*** IDXGIDevice methods ***/
1004static inline HRESULT IDXGIDevice2_GetAdapter(IDXGIDevice2* This,IDXGIAdapter **adapter) {
1005    return This->lpVtbl->GetAdapter(This,adapter);
1006}
1007static inline HRESULT IDXGIDevice2_CreateSurface(IDXGIDevice2* This,const DXGI_SURFACE_DESC *desc,UINT surface_count,DXGI_USAGE usage,const DXGI_SHARED_RESOURCE *shared_resource,IDXGISurface **surface) {
1008    return This->lpVtbl->CreateSurface(This,desc,surface_count,usage,shared_resource,surface);
1009}
1010static inline HRESULT IDXGIDevice2_QueryResourceResidency(IDXGIDevice2* This,IUnknown *const *resources,DXGI_RESIDENCY *residency,UINT resource_count) {
1011    return This->lpVtbl->QueryResourceResidency(This,resources,residency,resource_count);
1012}
1013static inline HRESULT IDXGIDevice2_SetGPUThreadPriority(IDXGIDevice2* This,INT priority) {
1014    return This->lpVtbl->SetGPUThreadPriority(This,priority);
1015}
1016static inline HRESULT IDXGIDevice2_GetGPUThreadPriority(IDXGIDevice2* This,INT *priority) {
1017    return This->lpVtbl->GetGPUThreadPriority(This,priority);
1018}
1019/*** IDXGIDevice1 methods ***/
1020static inline HRESULT IDXGIDevice2_SetMaximumFrameLatency(IDXGIDevice2* This,UINT MaxLatency) {
1021    return This->lpVtbl->SetMaximumFrameLatency(This,MaxLatency);
1022}
1023static inline HRESULT IDXGIDevice2_GetMaximumFrameLatency(IDXGIDevice2* This,UINT *pMaxLatency) {
1024    return This->lpVtbl->GetMaximumFrameLatency(This,pMaxLatency);
1025}
1026/*** IDXGIDevice2 methods ***/
1027static inline HRESULT IDXGIDevice2_OfferResources(IDXGIDevice2* This,UINT NumResources,IDXGIResource *const *ppResources,DXGI_OFFER_RESOURCE_PRIORITY Priority) {
1028    return This->lpVtbl->OfferResources(This,NumResources,ppResources,Priority);
1029}
1030static inline HRESULT IDXGIDevice2_ReclaimResources(IDXGIDevice2* This,UINT NumResources,IDXGIResource *const *ppResources,WINBOOL *pDiscarded) {
1031    return This->lpVtbl->ReclaimResources(This,NumResources,ppResources,pDiscarded);
1032}
1033static inline HRESULT IDXGIDevice2_EnqueueSetEvent(IDXGIDevice2* This,HANDLE hEvent) {
1034    return This->lpVtbl->EnqueueSetEvent(This,hEvent);
1035}
1036#endif
1037#endif
1038
1039#endif
1040
1041
1042#endif  /* __IDXGIDevice2_INTERFACE_DEFINED__ */
1043
1044typedef enum DXGI_SCALING {
1045    DXGI_SCALING_STRETCH = 0,
1046    DXGI_SCALING_NONE = 1,
1047    DXGI_SCALING_ASPECT_RATIO_STRETCH = 2
1048} DXGI_SCALING;
1049typedef struct DXGI_SWAP_CHAIN_DESC1 {
1050    UINT Width;
1051    UINT Height;
1052    DXGI_FORMAT Format;
1053    WINBOOL Stereo;
1054    DXGI_SAMPLE_DESC SampleDesc;
1055    DXGI_USAGE BufferUsage;
1056    UINT BufferCount;
1057    DXGI_SCALING Scaling;
1058    DXGI_SWAP_EFFECT SwapEffect;
1059    DXGI_ALPHA_MODE AlphaMode;
1060    UINT Flags;
1061} DXGI_SWAP_CHAIN_DESC1;
1062typedef struct DXGI_SWAP_CHAIN_FULLSCREEN_DESC {
1063    DXGI_RATIONAL RefreshRate;
1064    DXGI_MODE_SCANLINE_ORDER ScanlineOrdering;
1065    DXGI_MODE_SCALING Scaling;
1066    WINBOOL Windowed;
1067} DXGI_SWAP_CHAIN_FULLSCREEN_DESC;
1068typedef struct DXGI_PRESENT_PARAMETERS {
1069    UINT DirtyRectsCount;
1070    RECT *pDirtyRects;
1071    RECT *pScrollRect;
1072    POINT *pScrollOffset;
1073} DXGI_PRESENT_PARAMETERS;
1074/*****************************************************************************
1075 * IDXGISwapChain1 interface
1076 */
1077#ifndef __IDXGISwapChain1_INTERFACE_DEFINED__
1078#define __IDXGISwapChain1_INTERFACE_DEFINED__
1079
1080DEFINE_GUID(IID_IDXGISwapChain1, 0x790a45f7, 0x0d42, 0x4876, 0x98,0x3a, 0x0a,0x55,0xcf,0xe6,0xf4,0xaa);
1081#if defined(__cplusplus) && !defined(CINTERFACE)
1082MIDL_INTERFACE("790a45f7-0d42-4876-983a-0a55cfe6f4aa")
1083IDXGISwapChain1 : public IDXGISwapChain
1084{
1085    virtual HRESULT STDMETHODCALLTYPE GetDesc1(
1086        DXGI_SWAP_CHAIN_DESC1 *pDesc) = 0;
1087
1088    virtual HRESULT STDMETHODCALLTYPE GetFullscreenDesc(
1089        DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc) = 0;
1090
1091    virtual HRESULT STDMETHODCALLTYPE GetHwnd(
1092        HWND *pHwnd) = 0;
1093
1094    virtual HRESULT STDMETHODCALLTYPE GetCoreWindow(
1095        REFIID refiid,
1096        void **ppUnk) = 0;
1097
1098    virtual HRESULT STDMETHODCALLTYPE Present1(
1099        UINT SyncInterval,
1100        UINT PresentFlags,
1101        const DXGI_PRESENT_PARAMETERS *pPresentParameters) = 0;
1102
1103    virtual WINBOOL STDMETHODCALLTYPE IsTemporaryMonoSupported(
1104        ) = 0;
1105
1106    virtual HRESULT STDMETHODCALLTYPE GetRestrictToOutput(
1107        IDXGIOutput **ppRestrictToOutput) = 0;
1108
1109    virtual HRESULT STDMETHODCALLTYPE SetBackgroundColor(
1110        const DXGI_RGBA *pColor) = 0;
1111
1112    virtual HRESULT STDMETHODCALLTYPE GetBackgroundColor(
1113        DXGI_RGBA *pColor) = 0;
1114
1115    virtual HRESULT STDMETHODCALLTYPE SetRotation(
1116        DXGI_MODE_ROTATION Rotation) = 0;
1117
1118    virtual HRESULT STDMETHODCALLTYPE GetRotation(
1119        DXGI_MODE_ROTATION *pRotation) = 0;
1120
1121};
1122#ifdef __CRT_UUID_DECL
1123__CRT_UUID_DECL(IDXGISwapChain1, 0x790a45f7, 0x0d42, 0x4876, 0x98,0x3a, 0x0a,0x55,0xcf,0xe6,0xf4,0xaa)
1124#endif
1125#else
1126typedef struct IDXGISwapChain1Vtbl {
1127    BEGIN_INTERFACE
1128
1129    /*** IUnknown methods ***/
1130    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1131        IDXGISwapChain1 *This,
1132        REFIID riid,
1133        void **ppvObject);
1134
1135    ULONG (STDMETHODCALLTYPE *AddRef)(
1136        IDXGISwapChain1 *This);
1137
1138    ULONG (STDMETHODCALLTYPE *Release)(
1139        IDXGISwapChain1 *This);
1140
1141    /*** IDXGIObject methods ***/
1142    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
1143        IDXGISwapChain1 *This,
1144        REFGUID guid,
1145        UINT data_size,
1146        const void *data);
1147
1148    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
1149        IDXGISwapChain1 *This,
1150        REFGUID guid,
1151        const IUnknown *object);
1152
1153    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
1154        IDXGISwapChain1 *This,
1155        REFGUID guid,
1156        UINT *data_size,
1157        void *data);
1158
1159    HRESULT (STDMETHODCALLTYPE *GetParent)(
1160        IDXGISwapChain1 *This,
1161        REFIID riid,
1162        void **parent);
1163
1164    /*** IDXGIDeviceSubObject methods ***/
1165    HRESULT (STDMETHODCALLTYPE *GetDevice)(
1166        IDXGISwapChain1 *This,
1167        REFIID riid,
1168        void **device);
1169
1170    /*** IDXGISwapChain methods ***/
1171    HRESULT (STDMETHODCALLTYPE *Present)(
1172        IDXGISwapChain1 *This,
1173        UINT sync_interval,
1174        UINT flags);
1175
1176    HRESULT (STDMETHODCALLTYPE *GetBuffer)(
1177        IDXGISwapChain1 *This,
1178        UINT buffer_idx,
1179        REFIID riid,
1180        void **surface);
1181
1182    HRESULT (STDMETHODCALLTYPE *SetFullscreenState)(
1183        IDXGISwapChain1 *This,
1184        WINBOOL fullscreen,
1185        IDXGIOutput *target);
1186
1187    HRESULT (STDMETHODCALLTYPE *GetFullscreenState)(
1188        IDXGISwapChain1 *This,
1189        WINBOOL *fullscreen,
1190        IDXGIOutput **target);
1191
1192    HRESULT (STDMETHODCALLTYPE *GetDesc)(
1193        IDXGISwapChain1 *This,
1194        DXGI_SWAP_CHAIN_DESC *desc);
1195
1196    HRESULT (STDMETHODCALLTYPE *ResizeBuffers)(
1197        IDXGISwapChain1 *This,
1198        UINT buffer_count,
1199        UINT width,
1200        UINT height,
1201        DXGI_FORMAT format,
1202        UINT flags);
1203
1204    HRESULT (STDMETHODCALLTYPE *ResizeTarget)(
1205        IDXGISwapChain1 *This,
1206        const DXGI_MODE_DESC *target_mode_desc);
1207
1208    HRESULT (STDMETHODCALLTYPE *GetContainingOutput)(
1209        IDXGISwapChain1 *This,
1210        IDXGIOutput **output);
1211
1212    HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)(
1213        IDXGISwapChain1 *This,
1214        DXGI_FRAME_STATISTICS *stats);
1215
1216    HRESULT (STDMETHODCALLTYPE *GetLastPresentCount)(
1217        IDXGISwapChain1 *This,
1218        UINT *last_present_count);
1219
1220    /*** IDXGISwapChain1 methods ***/
1221    HRESULT (STDMETHODCALLTYPE *GetDesc1)(
1222        IDXGISwapChain1 *This,
1223        DXGI_SWAP_CHAIN_DESC1 *pDesc);
1224
1225    HRESULT (STDMETHODCALLTYPE *GetFullscreenDesc)(
1226        IDXGISwapChain1 *This,
1227        DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc);
1228
1229    HRESULT (STDMETHODCALLTYPE *GetHwnd)(
1230        IDXGISwapChain1 *This,
1231        HWND *pHwnd);
1232
1233    HRESULT (STDMETHODCALLTYPE *GetCoreWindow)(
1234        IDXGISwapChain1 *This,
1235        REFIID refiid,
1236        void **ppUnk);
1237
1238    HRESULT (STDMETHODCALLTYPE *Present1)(
1239        IDXGISwapChain1 *This,
1240        UINT SyncInterval,
1241        UINT PresentFlags,
1242        const DXGI_PRESENT_PARAMETERS *pPresentParameters);
1243
1244    WINBOOL (STDMETHODCALLTYPE *IsTemporaryMonoSupported)(
1245        IDXGISwapChain1 *This);
1246
1247    HRESULT (STDMETHODCALLTYPE *GetRestrictToOutput)(
1248        IDXGISwapChain1 *This,
1249        IDXGIOutput **ppRestrictToOutput);
1250
1251    HRESULT (STDMETHODCALLTYPE *SetBackgroundColor)(
1252        IDXGISwapChain1 *This,
1253        const DXGI_RGBA *pColor);
1254
1255    HRESULT (STDMETHODCALLTYPE *GetBackgroundColor)(
1256        IDXGISwapChain1 *This,
1257        DXGI_RGBA *pColor);
1258
1259    HRESULT (STDMETHODCALLTYPE *SetRotation)(
1260        IDXGISwapChain1 *This,
1261        DXGI_MODE_ROTATION Rotation);
1262
1263    HRESULT (STDMETHODCALLTYPE *GetRotation)(
1264        IDXGISwapChain1 *This,
1265        DXGI_MODE_ROTATION *pRotation);
1266
1267    END_INTERFACE
1268} IDXGISwapChain1Vtbl;
1269
1270interface IDXGISwapChain1 {
1271    CONST_VTBL IDXGISwapChain1Vtbl* lpVtbl;
1272};
1273
1274#ifdef COBJMACROS
1275#ifndef WIDL_C_INLINE_WRAPPERS
1276/*** IUnknown methods ***/
1277#define IDXGISwapChain1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1278#define IDXGISwapChain1_AddRef(This) (This)->lpVtbl->AddRef(This)
1279#define IDXGISwapChain1_Release(This) (This)->lpVtbl->Release(This)
1280/*** IDXGIObject methods ***/
1281#define IDXGISwapChain1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
1282#define IDXGISwapChain1_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
1283#define IDXGISwapChain1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
1284#define IDXGISwapChain1_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
1285/*** IDXGIDeviceSubObject methods ***/
1286#define IDXGISwapChain1_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
1287/*** IDXGISwapChain methods ***/
1288#define IDXGISwapChain1_Present(This,sync_interval,flags) (This)->lpVtbl->Present(This,sync_interval,flags)
1289#define IDXGISwapChain1_GetBuffer(This,buffer_idx,riid,surface) (This)->lpVtbl->GetBuffer(This,buffer_idx,riid,surface)
1290#define IDXGISwapChain1_SetFullscreenState(This,fullscreen,target) (This)->lpVtbl->SetFullscreenState(This,fullscreen,target)
1291#define IDXGISwapChain1_GetFullscreenState(This,fullscreen,target) (This)->lpVtbl->GetFullscreenState(This,fullscreen,target)
1292#define IDXGISwapChain1_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
1293#define IDXGISwapChain1_ResizeBuffers(This,buffer_count,width,height,format,flags) (This)->lpVtbl->ResizeBuffers(This,buffer_count,width,height,format,flags)
1294#define IDXGISwapChain1_ResizeTarget(This,target_mode_desc) (This)->lpVtbl->ResizeTarget(This,target_mode_desc)
1295#define IDXGISwapChain1_GetContainingOutput(This,output) (This)->lpVtbl->GetContainingOutput(This,output)
1296#define IDXGISwapChain1_GetFrameStatistics(This,stats) (This)->lpVtbl->GetFrameStatistics(This,stats)
1297#define IDXGISwapChain1_GetLastPresentCount(This,last_present_count) (This)->lpVtbl->GetLastPresentCount(This,last_present_count)
1298/*** IDXGISwapChain1 methods ***/
1299#define IDXGISwapChain1_GetDesc1(This,pDesc) (This)->lpVtbl->GetDesc1(This,pDesc)
1300#define IDXGISwapChain1_GetFullscreenDesc(This,pDesc) (This)->lpVtbl->GetFullscreenDesc(This,pDesc)
1301#define IDXGISwapChain1_GetHwnd(This,pHwnd) (This)->lpVtbl->GetHwnd(This,pHwnd)
1302#define IDXGISwapChain1_GetCoreWindow(This,refiid,ppUnk) (This)->lpVtbl->GetCoreWindow(This,refiid,ppUnk)
1303#define IDXGISwapChain1_Present1(This,SyncInterval,PresentFlags,pPresentParameters) (This)->lpVtbl->Present1(This,SyncInterval,PresentFlags,pPresentParameters)
1304#define IDXGISwapChain1_IsTemporaryMonoSupported(This) (This)->lpVtbl->IsTemporaryMonoSupported(This)
1305#define IDXGISwapChain1_GetRestrictToOutput(This,ppRestrictToOutput) (This)->lpVtbl->GetRestrictToOutput(This,ppRestrictToOutput)
1306#define IDXGISwapChain1_SetBackgroundColor(This,pColor) (This)->lpVtbl->SetBackgroundColor(This,pColor)
1307#define IDXGISwapChain1_GetBackgroundColor(This,pColor) (This)->lpVtbl->GetBackgroundColor(This,pColor)
1308#define IDXGISwapChain1_SetRotation(This,Rotation) (This)->lpVtbl->SetRotation(This,Rotation)
1309#define IDXGISwapChain1_GetRotation(This,pRotation) (This)->lpVtbl->GetRotation(This,pRotation)
1310#else
1311/*** IUnknown methods ***/
1312static inline HRESULT IDXGISwapChain1_QueryInterface(IDXGISwapChain1* This,REFIID riid,void **ppvObject) {
1313    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1314}
1315static inline ULONG IDXGISwapChain1_AddRef(IDXGISwapChain1* This) {
1316    return This->lpVtbl->AddRef(This);
1317}
1318static inline ULONG IDXGISwapChain1_Release(IDXGISwapChain1* This) {
1319    return This->lpVtbl->Release(This);
1320}
1321/*** IDXGIObject methods ***/
1322static inline HRESULT IDXGISwapChain1_SetPrivateData(IDXGISwapChain1* This,REFGUID guid,UINT data_size,const void *data) {
1323    return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
1324}
1325static inline HRESULT IDXGISwapChain1_SetPrivateDataInterface(IDXGISwapChain1* This,REFGUID guid,const IUnknown *object) {
1326    return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
1327}
1328static inline HRESULT IDXGISwapChain1_GetPrivateData(IDXGISwapChain1* This,REFGUID guid,UINT *data_size,void *data) {
1329    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
1330}
1331static inline HRESULT IDXGISwapChain1_GetParent(IDXGISwapChain1* This,REFIID riid,void **parent) {
1332    return This->lpVtbl->GetParent(This,riid,parent);
1333}
1334/*** IDXGIDeviceSubObject methods ***/
1335static inline HRESULT IDXGISwapChain1_GetDevice(IDXGISwapChain1* This,REFIID riid,void **device) {
1336    return This->lpVtbl->GetDevice(This,riid,device);
1337}
1338/*** IDXGISwapChain methods ***/
1339static inline HRESULT IDXGISwapChain1_Present(IDXGISwapChain1* This,UINT sync_interval,UINT flags) {
1340    return This->lpVtbl->Present(This,sync_interval,flags);
1341}
1342static inline HRESULT IDXGISwapChain1_GetBuffer(IDXGISwapChain1* This,UINT buffer_idx,REFIID riid,void **surface) {
1343    return This->lpVtbl->GetBuffer(This,buffer_idx,riid,surface);
1344}
1345static inline HRESULT IDXGISwapChain1_SetFullscreenState(IDXGISwapChain1* This,WINBOOL fullscreen,IDXGIOutput *target) {
1346    return This->lpVtbl->SetFullscreenState(This,fullscreen,target);
1347}
1348static inline HRESULT IDXGISwapChain1_GetFullscreenState(IDXGISwapChain1* This,WINBOOL *fullscreen,IDXGIOutput **target) {
1349    return This->lpVtbl->GetFullscreenState(This,fullscreen,target);
1350}
1351static inline HRESULT IDXGISwapChain1_GetDesc(IDXGISwapChain1* This,DXGI_SWAP_CHAIN_DESC *desc) {
1352    return This->lpVtbl->GetDesc(This,desc);
1353}
1354static inline HRESULT IDXGISwapChain1_ResizeBuffers(IDXGISwapChain1* This,UINT buffer_count,UINT width,UINT height,DXGI_FORMAT format,UINT flags) {
1355    return This->lpVtbl->ResizeBuffers(This,buffer_count,width,height,format,flags);
1356}
1357static inline HRESULT IDXGISwapChain1_ResizeTarget(IDXGISwapChain1* This,const DXGI_MODE_DESC *target_mode_desc) {
1358    return This->lpVtbl->ResizeTarget(This,target_mode_desc);
1359}
1360static inline HRESULT IDXGISwapChain1_GetContainingOutput(IDXGISwapChain1* This,IDXGIOutput **output) {
1361    return This->lpVtbl->GetContainingOutput(This,output);
1362}
1363static inline HRESULT IDXGISwapChain1_GetFrameStatistics(IDXGISwapChain1* This,DXGI_FRAME_STATISTICS *stats) {
1364    return This->lpVtbl->GetFrameStatistics(This,stats);
1365}
1366static inline HRESULT IDXGISwapChain1_GetLastPresentCount(IDXGISwapChain1* This,UINT *last_present_count) {
1367    return This->lpVtbl->GetLastPresentCount(This,last_present_count);
1368}
1369/*** IDXGISwapChain1 methods ***/
1370static inline HRESULT IDXGISwapChain1_GetDesc1(IDXGISwapChain1* This,DXGI_SWAP_CHAIN_DESC1 *pDesc) {
1371    return This->lpVtbl->GetDesc1(This,pDesc);
1372}
1373static inline HRESULT IDXGISwapChain1_GetFullscreenDesc(IDXGISwapChain1* This,DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc) {
1374    return This->lpVtbl->GetFullscreenDesc(This,pDesc);
1375}
1376static inline HRESULT IDXGISwapChain1_GetHwnd(IDXGISwapChain1* This,HWND *pHwnd) {
1377    return This->lpVtbl->GetHwnd(This,pHwnd);
1378}
1379static inline HRESULT IDXGISwapChain1_GetCoreWindow(IDXGISwapChain1* This,REFIID refiid,void **ppUnk) {
1380    return This->lpVtbl->GetCoreWindow(This,refiid,ppUnk);
1381}
1382static inline HRESULT IDXGISwapChain1_Present1(IDXGISwapChain1* This,UINT SyncInterval,UINT PresentFlags,const DXGI_PRESENT_PARAMETERS *pPresentParameters) {
1383    return This->lpVtbl->Present1(This,SyncInterval,PresentFlags,pPresentParameters);
1384}
1385static inline WINBOOL IDXGISwapChain1_IsTemporaryMonoSupported(IDXGISwapChain1* This) {
1386    return This->lpVtbl->IsTemporaryMonoSupported(This);
1387}
1388static inline HRESULT IDXGISwapChain1_GetRestrictToOutput(IDXGISwapChain1* This,IDXGIOutput **ppRestrictToOutput) {
1389    return This->lpVtbl->GetRestrictToOutput(This,ppRestrictToOutput);
1390}
1391static inline HRESULT IDXGISwapChain1_SetBackgroundColor(IDXGISwapChain1* This,const DXGI_RGBA *pColor) {
1392    return This->lpVtbl->SetBackgroundColor(This,pColor);
1393}
1394static inline HRESULT IDXGISwapChain1_GetBackgroundColor(IDXGISwapChain1* This,DXGI_RGBA *pColor) {
1395    return This->lpVtbl->GetBackgroundColor(This,pColor);
1396}
1397static inline HRESULT IDXGISwapChain1_SetRotation(IDXGISwapChain1* This,DXGI_MODE_ROTATION Rotation) {
1398    return This->lpVtbl->SetRotation(This,Rotation);
1399}
1400static inline HRESULT IDXGISwapChain1_GetRotation(IDXGISwapChain1* This,DXGI_MODE_ROTATION *pRotation) {
1401    return This->lpVtbl->GetRotation(This,pRotation);
1402}
1403#endif
1404#endif
1405
1406#endif
1407
1408
1409#endif  /* __IDXGISwapChain1_INTERFACE_DEFINED__ */
1410
1411/*****************************************************************************
1412 * IDXGIFactory2 interface
1413 */
1414#ifndef __IDXGIFactory2_INTERFACE_DEFINED__
1415#define __IDXGIFactory2_INTERFACE_DEFINED__
1416
1417DEFINE_GUID(IID_IDXGIFactory2, 0x50c83a1c, 0xe072, 0x4c48, 0x87,0xb0, 0x36,0x30,0xfa,0x36,0xa6,0xd0);
1418#if defined(__cplusplus) && !defined(CINTERFACE)
1419MIDL_INTERFACE("50c83a1c-e072-4c48-87b0-3630fa36a6d0")
1420IDXGIFactory2 : public IDXGIFactory1
1421{
1422    virtual WINBOOL STDMETHODCALLTYPE IsWindowedStereoEnabled(
1423        ) = 0;
1424
1425    virtual HRESULT STDMETHODCALLTYPE CreateSwapChainForHwnd(
1426        IUnknown *pDevice,
1427        HWND hWnd,
1428        const DXGI_SWAP_CHAIN_DESC1 *pDesc,
1429        const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,
1430        IDXGIOutput *pRestrictToOutput,
1431        IDXGISwapChain1 **ppSwapChain) = 0;
1432
1433    virtual HRESULT STDMETHODCALLTYPE CreateSwapChainForCoreWindow(
1434        IUnknown *pDevice,
1435        IUnknown *pWindow,
1436        const DXGI_SWAP_CHAIN_DESC1 *pDesc,
1437        IDXGIOutput *pRestrictToOutput,
1438        IDXGISwapChain1 **ppSwapChain) = 0;
1439
1440    virtual HRESULT STDMETHODCALLTYPE GetSharedResourceAdapterLuid(
1441        HANDLE hResource,
1442        LUID *pLuid) = 0;
1443
1444    virtual HRESULT STDMETHODCALLTYPE RegisterStereoStatusWindow(
1445        HWND WindowHandle,
1446        UINT wMsg,
1447        DWORD *pdwCookie) = 0;
1448
1449    virtual HRESULT STDMETHODCALLTYPE RegisterStereoStatusEvent(
1450        HANDLE hEvent,
1451        DWORD *pdwCookie) = 0;
1452
1453    virtual void STDMETHODCALLTYPE UnregisterStereoStatus(
1454        DWORD dwCookie) = 0;
1455
1456    virtual HRESULT STDMETHODCALLTYPE RegisterOcclusionStatusWindow(
1457        HWND WindowHandle,
1458        UINT wMsg,
1459        DWORD *pdwCookie) = 0;
1460
1461    virtual HRESULT STDMETHODCALLTYPE RegisterOcclusionStatusEvent(
1462        HANDLE hEvent,
1463        DWORD *pdwCookie) = 0;
1464
1465    virtual void STDMETHODCALLTYPE UnregisterOcclusionStatus(
1466        DWORD dwCookie) = 0;
1467
1468    virtual HRESULT STDMETHODCALLTYPE CreateSwapChainForComposition(
1469        IUnknown *pDevice,
1470        const DXGI_SWAP_CHAIN_DESC1 *pDesc,
1471        IDXGIOutput *pRestrictToOutput,
1472        IDXGISwapChain1 **ppSwapChain) = 0;
1473
1474};
1475#ifdef __CRT_UUID_DECL
1476__CRT_UUID_DECL(IDXGIFactory2, 0x50c83a1c, 0xe072, 0x4c48, 0x87,0xb0, 0x36,0x30,0xfa,0x36,0xa6,0xd0)
1477#endif
1478#else
1479typedef struct IDXGIFactory2Vtbl {
1480    BEGIN_INTERFACE
1481
1482    /*** IUnknown methods ***/
1483    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1484        IDXGIFactory2 *This,
1485        REFIID riid,
1486        void **ppvObject);
1487
1488    ULONG (STDMETHODCALLTYPE *AddRef)(
1489        IDXGIFactory2 *This);
1490
1491    ULONG (STDMETHODCALLTYPE *Release)(
1492        IDXGIFactory2 *This);
1493
1494    /*** IDXGIObject methods ***/
1495    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
1496        IDXGIFactory2 *This,
1497        REFGUID guid,
1498        UINT data_size,
1499        const void *data);
1500
1501    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
1502        IDXGIFactory2 *This,
1503        REFGUID guid,
1504        const IUnknown *object);
1505
1506    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
1507        IDXGIFactory2 *This,
1508        REFGUID guid,
1509        UINT *data_size,
1510        void *data);
1511
1512    HRESULT (STDMETHODCALLTYPE *GetParent)(
1513        IDXGIFactory2 *This,
1514        REFIID riid,
1515        void **parent);
1516
1517    /*** IDXGIFactory methods ***/
1518    HRESULT (STDMETHODCALLTYPE *EnumAdapters)(
1519        IDXGIFactory2 *This,
1520        UINT adapter_idx,
1521        IDXGIAdapter **adapter);
1522
1523    HRESULT (STDMETHODCALLTYPE *MakeWindowAssociation)(
1524        IDXGIFactory2 *This,
1525        HWND window,
1526        UINT flags);
1527
1528    HRESULT (STDMETHODCALLTYPE *GetWindowAssociation)(
1529        IDXGIFactory2 *This,
1530        HWND *window);
1531
1532    HRESULT (STDMETHODCALLTYPE *CreateSwapChain)(
1533        IDXGIFactory2 *This,
1534        IUnknown *device,
1535        DXGI_SWAP_CHAIN_DESC *desc,
1536        IDXGISwapChain **swapchain);
1537
1538    HRESULT (STDMETHODCALLTYPE *CreateSoftwareAdapter)(
1539        IDXGIFactory2 *This,
1540        HMODULE swrast,
1541        IDXGIAdapter **adapter);
1542
1543    /*** IDXGIFactory1 methods ***/
1544    HRESULT (STDMETHODCALLTYPE *EnumAdapters1)(
1545        IDXGIFactory2 *This,
1546        UINT Adapter,
1547        IDXGIAdapter1 **ppAdapter);
1548
1549    WINBOOL (STDMETHODCALLTYPE *IsCurrent)(
1550        IDXGIFactory2 *This);
1551
1552    /*** IDXGIFactory2 methods ***/
1553    WINBOOL (STDMETHODCALLTYPE *IsWindowedStereoEnabled)(
1554        IDXGIFactory2 *This);
1555
1556    HRESULT (STDMETHODCALLTYPE *CreateSwapChainForHwnd)(
1557        IDXGIFactory2 *This,
1558        IUnknown *pDevice,
1559        HWND hWnd,
1560        const DXGI_SWAP_CHAIN_DESC1 *pDesc,
1561        const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,
1562        IDXGIOutput *pRestrictToOutput,
1563        IDXGISwapChain1 **ppSwapChain);
1564
1565    HRESULT (STDMETHODCALLTYPE *CreateSwapChainForCoreWindow)(
1566        IDXGIFactory2 *This,
1567        IUnknown *pDevice,
1568        IUnknown *pWindow,
1569        const DXGI_SWAP_CHAIN_DESC1 *pDesc,
1570        IDXGIOutput *pRestrictToOutput,
1571        IDXGISwapChain1 **ppSwapChain);
1572
1573    HRESULT (STDMETHODCALLTYPE *GetSharedResourceAdapterLuid)(
1574        IDXGIFactory2 *This,
1575        HANDLE hResource,
1576        LUID *pLuid);
1577
1578    HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusWindow)(
1579        IDXGIFactory2 *This,
1580        HWND WindowHandle,
1581        UINT wMsg,
1582        DWORD *pdwCookie);
1583
1584    HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusEvent)(
1585        IDXGIFactory2 *This,
1586        HANDLE hEvent,
1587        DWORD *pdwCookie);
1588
1589    void (STDMETHODCALLTYPE *UnregisterStereoStatus)(
1590        IDXGIFactory2 *This,
1591        DWORD dwCookie);
1592
1593    HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusWindow)(
1594        IDXGIFactory2 *This,
1595        HWND WindowHandle,
1596        UINT wMsg,
1597        DWORD *pdwCookie);
1598
1599    HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusEvent)(
1600        IDXGIFactory2 *This,
1601        HANDLE hEvent,
1602        DWORD *pdwCookie);
1603
1604    void (STDMETHODCALLTYPE *UnregisterOcclusionStatus)(
1605        IDXGIFactory2 *This,
1606        DWORD dwCookie);
1607
1608    HRESULT (STDMETHODCALLTYPE *CreateSwapChainForComposition)(
1609        IDXGIFactory2 *This,
1610        IUnknown *pDevice,
1611        const DXGI_SWAP_CHAIN_DESC1 *pDesc,
1612        IDXGIOutput *pRestrictToOutput,
1613        IDXGISwapChain1 **ppSwapChain);
1614
1615    END_INTERFACE
1616} IDXGIFactory2Vtbl;
1617
1618interface IDXGIFactory2 {
1619    CONST_VTBL IDXGIFactory2Vtbl* lpVtbl;
1620};
1621
1622#ifdef COBJMACROS
1623#ifndef WIDL_C_INLINE_WRAPPERS
1624/*** IUnknown methods ***/
1625#define IDXGIFactory2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1626#define IDXGIFactory2_AddRef(This) (This)->lpVtbl->AddRef(This)
1627#define IDXGIFactory2_Release(This) (This)->lpVtbl->Release(This)
1628/*** IDXGIObject methods ***/
1629#define IDXGIFactory2_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
1630#define IDXGIFactory2_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
1631#define IDXGIFactory2_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
1632#define IDXGIFactory2_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
1633/*** IDXGIFactory methods ***/
1634#define IDXGIFactory2_EnumAdapters(This,adapter_idx,adapter) (This)->lpVtbl->EnumAdapters(This,adapter_idx,adapter)
1635#define IDXGIFactory2_MakeWindowAssociation(This,window,flags) (This)->lpVtbl->MakeWindowAssociation(This,window,flags)
1636#define IDXGIFactory2_GetWindowAssociation(This,window) (This)->lpVtbl->GetWindowAssociation(This,window)
1637#define IDXGIFactory2_CreateSwapChain(This,device,desc,swapchain) (This)->lpVtbl->CreateSwapChain(This,device,desc,swapchain)
1638#define IDXGIFactory2_CreateSoftwareAdapter(This,swrast,adapter) (This)->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter)
1639/*** IDXGIFactory1 methods ***/
1640#define IDXGIFactory2_EnumAdapters1(This,Adapter,ppAdapter) (This)->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter)
1641#define IDXGIFactory2_IsCurrent(This) (This)->lpVtbl->IsCurrent(This)
1642/*** IDXGIFactory2 methods ***/
1643#define IDXGIFactory2_IsWindowedStereoEnabled(This) (This)->lpVtbl->IsWindowedStereoEnabled(This)
1644#define IDXGIFactory2_CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain)
1645#define IDXGIFactory2_CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain)
1646#define IDXGIFactory2_GetSharedResourceAdapterLuid(This,hResource,pLuid) (This)->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid)
1647#define IDXGIFactory2_RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie)
1648#define IDXGIFactory2_RegisterStereoStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie)
1649#define IDXGIFactory2_UnregisterStereoStatus(This,dwCookie) (This)->lpVtbl->UnregisterStereoStatus(This,dwCookie)
1650#define IDXGIFactory2_RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie)
1651#define IDXGIFactory2_RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie)
1652#define IDXGIFactory2_UnregisterOcclusionStatus(This,dwCookie) (This)->lpVtbl->UnregisterOcclusionStatus(This,dwCookie)
1653#define IDXGIFactory2_CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain)
1654#else
1655/*** IUnknown methods ***/
1656static inline HRESULT IDXGIFactory2_QueryInterface(IDXGIFactory2* This,REFIID riid,void **ppvObject) {
1657    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1658}
1659static inline ULONG IDXGIFactory2_AddRef(IDXGIFactory2* This) {
1660    return This->lpVtbl->AddRef(This);
1661}
1662static inline ULONG IDXGIFactory2_Release(IDXGIFactory2* This) {
1663    return This->lpVtbl->Release(This);
1664}
1665/*** IDXGIObject methods ***/
1666static inline HRESULT IDXGIFactory2_SetPrivateData(IDXGIFactory2* This,REFGUID guid,UINT data_size,const void *data) {
1667    return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
1668}
1669static inline HRESULT IDXGIFactory2_SetPrivateDataInterface(IDXGIFactory2* This,REFGUID guid,const IUnknown *object) {
1670    return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
1671}
1672static inline HRESULT IDXGIFactory2_GetPrivateData(IDXGIFactory2* This,REFGUID guid,UINT *data_size,void *data) {
1673    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
1674}
1675static inline HRESULT IDXGIFactory2_GetParent(IDXGIFactory2* This,REFIID riid,void **parent) {
1676    return This->lpVtbl->GetParent(This,riid,parent);
1677}
1678/*** IDXGIFactory methods ***/
1679static inline HRESULT IDXGIFactory2_EnumAdapters(IDXGIFactory2* This,UINT adapter_idx,IDXGIAdapter **adapter) {
1680    return This->lpVtbl->EnumAdapters(This,adapter_idx,adapter);
1681}
1682static inline HRESULT IDXGIFactory2_MakeWindowAssociation(IDXGIFactory2* This,HWND window,UINT flags) {
1683    return This->lpVtbl->MakeWindowAssociation(This,window,flags);
1684}
1685static inline HRESULT IDXGIFactory2_GetWindowAssociation(IDXGIFactory2* This,HWND *window) {
1686    return This->lpVtbl->GetWindowAssociation(This,window);
1687}
1688static inline HRESULT IDXGIFactory2_CreateSwapChain(IDXGIFactory2* This,IUnknown *device,DXGI_SWAP_CHAIN_DESC *desc,IDXGISwapChain **swapchain) {
1689    return This->lpVtbl->CreateSwapChain(This,device,desc,swapchain);
1690}
1691static inline HRESULT IDXGIFactory2_CreateSoftwareAdapter(IDXGIFactory2* This,HMODULE swrast,IDXGIAdapter **adapter) {
1692    return This->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter);
1693}
1694/*** IDXGIFactory1 methods ***/
1695static inline HRESULT IDXGIFactory2_EnumAdapters1(IDXGIFactory2* This,UINT Adapter,IDXGIAdapter1 **ppAdapter) {
1696    return This->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter);
1697}
1698static inline WINBOOL IDXGIFactory2_IsCurrent(IDXGIFactory2* This) {
1699    return This->lpVtbl->IsCurrent(This);
1700}
1701/*** IDXGIFactory2 methods ***/
1702static inline WINBOOL IDXGIFactory2_IsWindowedStereoEnabled(IDXGIFactory2* This) {
1703    return This->lpVtbl->IsWindowedStereoEnabled(This);
1704}
1705static inline HRESULT IDXGIFactory2_CreateSwapChainForHwnd(IDXGIFactory2* This,IUnknown *pDevice,HWND hWnd,const DXGI_SWAP_CHAIN_DESC1 *pDesc,const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
1706    return This->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain);
1707}
1708static inline HRESULT IDXGIFactory2_CreateSwapChainForCoreWindow(IDXGIFactory2* This,IUnknown *pDevice,IUnknown *pWindow,const DXGI_SWAP_CHAIN_DESC1 *pDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
1709    return This->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain);
1710}
1711static inline HRESULT IDXGIFactory2_GetSharedResourceAdapterLuid(IDXGIFactory2* This,HANDLE hResource,LUID *pLuid) {
1712    return This->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid);
1713}
1714static inline HRESULT IDXGIFactory2_RegisterStereoStatusWindow(IDXGIFactory2* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
1715    return This->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie);
1716}
1717static inline HRESULT IDXGIFactory2_RegisterStereoStatusEvent(IDXGIFactory2* This,HANDLE hEvent,DWORD *pdwCookie) {
1718    return This->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie);
1719}
1720static inline void IDXGIFactory2_UnregisterStereoStatus(IDXGIFactory2* This,DWORD dwCookie) {
1721    This->lpVtbl->UnregisterStereoStatus(This,dwCookie);
1722}
1723static inline HRESULT IDXGIFactory2_RegisterOcclusionStatusWindow(IDXGIFactory2* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
1724    return This->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie);
1725}
1726static inline HRESULT IDXGIFactory2_RegisterOcclusionStatusEvent(IDXGIFactory2* This,HANDLE hEvent,DWORD *pdwCookie) {
1727    return This->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie);
1728}
1729static inline void IDXGIFactory2_UnregisterOcclusionStatus(IDXGIFactory2* This,DWORD dwCookie) {
1730    This->lpVtbl->UnregisterOcclusionStatus(This,dwCookie);
1731}
1732static inline HRESULT IDXGIFactory2_CreateSwapChainForComposition(IDXGIFactory2* This,IUnknown *pDevice,const DXGI_SWAP_CHAIN_DESC1 *pDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
1733    return This->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain);
1734}
1735#endif
1736#endif
1737
1738#endif
1739
1740
1741#endif  /* __IDXGIFactory2_INTERFACE_DEFINED__ */
1742
1743typedef enum DXGI_GRAPHICS_PREEMPTION_GRANULARITY {
1744    DXGI_GRAPHICS_PREEMPTION_DMA_BUFFER_BOUNDARY = 0,
1745    DXGI_GRAPHICS_PREEMPTION_PRIMITIVE_BOUNDARY = 1,
1746    DXGI_GRAPHICS_PREEMPTION_TRIANGLE_BOUNDARY = 2,
1747    DXGI_GRAPHICS_PREEMPTION_PIXEL_BOUNDARY = 3,
1748    DXGI_GRAPHICS_PREEMPTION_INSTRUCTION_BOUNDARY = 4
1749} DXGI_GRAPHICS_PREEMPTION_GRANULARITY;
1750typedef enum DXGI_COMPUTE_PREEMPTION_GRANULARITY {
1751    DXGI_COMPUTE_PREEMPTION_DMA_BUFFER_BOUNDARY = 0,
1752    DXGI_COMPUTE_PREEMPTION_DISPATCH_BOUNDARY = 1,
1753    DXGI_COMPUTE_PREEMPTION_THREAD_GROUP_BOUNDARY = 2,
1754    DXGI_COMPUTE_PREEMPTION_THREAD_BOUNDARY = 3,
1755    DXGI_COMPUTE_PREEMPTION_INSTRUCTION_BOUNDARY = 4
1756} DXGI_COMPUTE_PREEMPTION_GRANULARITY;
1757typedef struct DXGI_ADAPTER_DESC2 {
1758    WCHAR Description[128];
1759    UINT VendorId;
1760    UINT DeviceId;
1761    UINT SubSysId;
1762    UINT Revision;
1763    SIZE_T DedicatedVideoMemory;
1764    SIZE_T DedicatedSystemMemory;
1765    SIZE_T SharedSystemMemory;
1766    LUID AdapterLuid;
1767    UINT Flags;
1768    DXGI_GRAPHICS_PREEMPTION_GRANULARITY GraphicsPreemptionGranularity;
1769    DXGI_COMPUTE_PREEMPTION_GRANULARITY ComputePreemptionGranularity;
1770} DXGI_ADAPTER_DESC2;
1771/*****************************************************************************
1772 * IDXGIAdapter2 interface
1773 */
1774#ifndef __IDXGIAdapter2_INTERFACE_DEFINED__
1775#define __IDXGIAdapter2_INTERFACE_DEFINED__
1776
1777DEFINE_GUID(IID_IDXGIAdapter2, 0x0aa1ae0a, 0xfa0e, 0x4b84, 0x86,0x44, 0xe0,0x5f,0xf8,0xe5,0xac,0xb5);
1778#if defined(__cplusplus) && !defined(CINTERFACE)
1779MIDL_INTERFACE("0aa1ae0a-fa0e-4b84-8644-e05ff8e5acb5")
1780IDXGIAdapter2 : public IDXGIAdapter1
1781{
1782    virtual HRESULT STDMETHODCALLTYPE GetDesc2(
1783        DXGI_ADAPTER_DESC2 *pDesc) = 0;
1784
1785};
1786#ifdef __CRT_UUID_DECL
1787__CRT_UUID_DECL(IDXGIAdapter2, 0x0aa1ae0a, 0xfa0e, 0x4b84, 0x86,0x44, 0xe0,0x5f,0xf8,0xe5,0xac,0xb5)
1788#endif
1789#else
1790typedef struct IDXGIAdapter2Vtbl {
1791    BEGIN_INTERFACE
1792
1793    /*** IUnknown methods ***/
1794    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1795        IDXGIAdapter2 *This,
1796        REFIID riid,
1797        void **ppvObject);
1798
1799    ULONG (STDMETHODCALLTYPE *AddRef)(
1800        IDXGIAdapter2 *This);
1801
1802    ULONG (STDMETHODCALLTYPE *Release)(
1803        IDXGIAdapter2 *This);
1804
1805    /*** IDXGIObject methods ***/
1806    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
1807        IDXGIAdapter2 *This,
1808        REFGUID guid,
1809        UINT data_size,
1810        const void *data);
1811
1812    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
1813        IDXGIAdapter2 *This,
1814        REFGUID guid,
1815        const IUnknown *object);
1816
1817    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
1818        IDXGIAdapter2 *This,
1819        REFGUID guid,
1820        UINT *data_size,
1821        void *data);
1822
1823    HRESULT (STDMETHODCALLTYPE *GetParent)(
1824        IDXGIAdapter2 *This,
1825        REFIID riid,
1826        void **parent);
1827
1828    /*** IDXGIAdapter methods ***/
1829    HRESULT (STDMETHODCALLTYPE *EnumOutputs)(
1830        IDXGIAdapter2 *This,
1831        UINT output_idx,
1832        IDXGIOutput **output);
1833
1834    HRESULT (STDMETHODCALLTYPE *GetDesc)(
1835        IDXGIAdapter2 *This,
1836        DXGI_ADAPTER_DESC *desc);
1837
1838    HRESULT (STDMETHODCALLTYPE *CheckInterfaceSupport)(
1839        IDXGIAdapter2 *This,
1840        REFGUID guid,
1841        LARGE_INTEGER *umd_version);
1842
1843    /*** IDXGIAdapter1 methods ***/
1844    HRESULT (STDMETHODCALLTYPE *GetDesc1)(
1845        IDXGIAdapter2 *This,
1846        DXGI_ADAPTER_DESC1 *pDesc);
1847
1848    /*** IDXGIAdapter2 methods ***/
1849    HRESULT (STDMETHODCALLTYPE *GetDesc2)(
1850        IDXGIAdapter2 *This,
1851        DXGI_ADAPTER_DESC2 *pDesc);
1852
1853    END_INTERFACE
1854} IDXGIAdapter2Vtbl;
1855
1856interface IDXGIAdapter2 {
1857    CONST_VTBL IDXGIAdapter2Vtbl* lpVtbl;
1858};
1859
1860#ifdef COBJMACROS
1861#ifndef WIDL_C_INLINE_WRAPPERS
1862/*** IUnknown methods ***/
1863#define IDXGIAdapter2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1864#define IDXGIAdapter2_AddRef(This) (This)->lpVtbl->AddRef(This)
1865#define IDXGIAdapter2_Release(This) (This)->lpVtbl->Release(This)
1866/*** IDXGIObject methods ***/
1867#define IDXGIAdapter2_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
1868#define IDXGIAdapter2_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
1869#define IDXGIAdapter2_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
1870#define IDXGIAdapter2_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
1871/*** IDXGIAdapter methods ***/
1872#define IDXGIAdapter2_EnumOutputs(This,output_idx,output) (This)->lpVtbl->EnumOutputs(This,output_idx,output)
1873#define IDXGIAdapter2_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
1874#define IDXGIAdapter2_CheckInterfaceSupport(This,guid,umd_version) (This)->lpVtbl->CheckInterfaceSupport(This,guid,umd_version)
1875/*** IDXGIAdapter1 methods ***/
1876#define IDXGIAdapter2_GetDesc1(This,pDesc) (This)->lpVtbl->GetDesc1(This,pDesc)
1877/*** IDXGIAdapter2 methods ***/
1878#define IDXGIAdapter2_GetDesc2(This,pDesc) (This)->lpVtbl->GetDesc2(This,pDesc)
1879#else
1880/*** IUnknown methods ***/
1881static inline HRESULT IDXGIAdapter2_QueryInterface(IDXGIAdapter2* This,REFIID riid,void **ppvObject) {
1882    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1883}
1884static inline ULONG IDXGIAdapter2_AddRef(IDXGIAdapter2* This) {
1885    return This->lpVtbl->AddRef(This);
1886}
1887static inline ULONG IDXGIAdapter2_Release(IDXGIAdapter2* This) {
1888    return This->lpVtbl->Release(This);
1889}
1890/*** IDXGIObject methods ***/
1891static inline HRESULT IDXGIAdapter2_SetPrivateData(IDXGIAdapter2* This,REFGUID guid,UINT data_size,const void *data) {
1892    return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
1893}
1894static inline HRESULT IDXGIAdapter2_SetPrivateDataInterface(IDXGIAdapter2* This,REFGUID guid,const IUnknown *object) {
1895    return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
1896}
1897static inline HRESULT IDXGIAdapter2_GetPrivateData(IDXGIAdapter2* This,REFGUID guid,UINT *data_size,void *data) {
1898    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
1899}
1900static inline HRESULT IDXGIAdapter2_GetParent(IDXGIAdapter2* This,REFIID riid,void **parent) {
1901    return This->lpVtbl->GetParent(This,riid,parent);
1902}
1903/*** IDXGIAdapter methods ***/
1904static inline HRESULT IDXGIAdapter2_EnumOutputs(IDXGIAdapter2* This,UINT output_idx,IDXGIOutput **output) {
1905    return This->lpVtbl->EnumOutputs(This,output_idx,output);
1906}
1907static inline HRESULT IDXGIAdapter2_GetDesc(IDXGIAdapter2* This,DXGI_ADAPTER_DESC *desc) {
1908    return This->lpVtbl->GetDesc(This,desc);
1909}
1910static inline HRESULT IDXGIAdapter2_CheckInterfaceSupport(IDXGIAdapter2* This,REFGUID guid,LARGE_INTEGER *umd_version) {
1911    return This->lpVtbl->CheckInterfaceSupport(This,guid,umd_version);
1912}
1913/*** IDXGIAdapter1 methods ***/
1914static inline HRESULT IDXGIAdapter2_GetDesc1(IDXGIAdapter2* This,DXGI_ADAPTER_DESC1 *pDesc) {
1915    return This->lpVtbl->GetDesc1(This,pDesc);
1916}
1917/*** IDXGIAdapter2 methods ***/
1918static inline HRESULT IDXGIAdapter2_GetDesc2(IDXGIAdapter2* This,DXGI_ADAPTER_DESC2 *pDesc) {
1919    return This->lpVtbl->GetDesc2(This,pDesc);
1920}
1921#endif
1922#endif
1923
1924#endif
1925
1926
1927#endif  /* __IDXGIAdapter2_INTERFACE_DEFINED__ */
1928
1929/*****************************************************************************
1930 * IDXGIOutput1 interface
1931 */
1932#ifndef __IDXGIOutput1_INTERFACE_DEFINED__
1933#define __IDXGIOutput1_INTERFACE_DEFINED__
1934
1935DEFINE_GUID(IID_IDXGIOutput1, 0x00cddea8, 0x939b, 0x4b83, 0xa3,0x40, 0xa6,0x85,0x22,0x66,0x66,0xcc);
1936#if defined(__cplusplus) && !defined(CINTERFACE)
1937MIDL_INTERFACE("00cddea8-939b-4b83-a340-a685226666cc")
1938IDXGIOutput1 : public IDXGIOutput
1939{
1940    virtual HRESULT STDMETHODCALLTYPE GetDisplayModeList1(
1941        DXGI_FORMAT enum_format,
1942        UINT flags,
1943        UINT *num_modes,
1944        DXGI_MODE_DESC1 *desc) = 0;
1945
1946    virtual HRESULT STDMETHODCALLTYPE FindClosestMatchingMode1(
1947        const DXGI_MODE_DESC1 *mode_to_match,
1948        DXGI_MODE_DESC1 *closest_match,
1949        IUnknown *concerned_device) = 0;
1950
1951    virtual HRESULT STDMETHODCALLTYPE GetDisplaySurfaceData1(
1952        IDXGIResource *destination) = 0;
1953
1954    virtual HRESULT STDMETHODCALLTYPE DuplicateOutput(
1955        IUnknown *device,
1956        IDXGIOutputDuplication **output_duplication) = 0;
1957
1958};
1959#ifdef __CRT_UUID_DECL
1960__CRT_UUID_DECL(IDXGIOutput1, 0x00cddea8, 0x939b, 0x4b83, 0xa3,0x40, 0xa6,0x85,0x22,0x66,0x66,0xcc)
1961#endif
1962#else
1963typedef struct IDXGIOutput1Vtbl {
1964    BEGIN_INTERFACE
1965
1966    /*** IUnknown methods ***/
1967    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1968        IDXGIOutput1 *This,
1969        REFIID riid,
1970        void **ppvObject);
1971
1972    ULONG (STDMETHODCALLTYPE *AddRef)(
1973        IDXGIOutput1 *This);
1974
1975    ULONG (STDMETHODCALLTYPE *Release)(
1976        IDXGIOutput1 *This);
1977
1978    /*** IDXGIObject methods ***/
1979    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
1980        IDXGIOutput1 *This,
1981        REFGUID guid,
1982        UINT data_size,
1983        const void *data);
1984
1985    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
1986        IDXGIOutput1 *This,
1987        REFGUID guid,
1988        const IUnknown *object);
1989
1990    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
1991        IDXGIOutput1 *This,
1992        REFGUID guid,
1993        UINT *data_size,
1994        void *data);
1995
1996    HRESULT (STDMETHODCALLTYPE *GetParent)(
1997        IDXGIOutput1 *This,
1998        REFIID riid,
1999        void **parent);
2000
2001    /*** IDXGIOutput methods ***/
2002    HRESULT (STDMETHODCALLTYPE *GetDesc)(
2003        IDXGIOutput1 *This,
2004        DXGI_OUTPUT_DESC *desc);
2005
2006    HRESULT (STDMETHODCALLTYPE *GetDisplayModeList)(
2007        IDXGIOutput1 *This,
2008        DXGI_FORMAT format,
2009        UINT flags,
2010        UINT *mode_count,
2011        DXGI_MODE_DESC *desc);
2012
2013    HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode)(
2014        IDXGIOutput1 *This,
2015        const DXGI_MODE_DESC *mode,
2016        DXGI_MODE_DESC *closest_match,
2017        IUnknown *device);
2018
2019    HRESULT (STDMETHODCALLTYPE *WaitForVBlank)(
2020        IDXGIOutput1 *This);
2021
2022    HRESULT (STDMETHODCALLTYPE *TakeOwnership)(
2023        IDXGIOutput1 *This,
2024        IUnknown *device,
2025        WINBOOL exclusive);
2026
2027    void (STDMETHODCALLTYPE *ReleaseOwnership)(
2028        IDXGIOutput1 *This);
2029
2030    HRESULT (STDMETHODCALLTYPE *GetGammaControlCapabilities)(
2031        IDXGIOutput1 *This,
2032        DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps);
2033
2034    HRESULT (STDMETHODCALLTYPE *SetGammaControl)(
2035        IDXGIOutput1 *This,
2036        const DXGI_GAMMA_CONTROL *gamma_control);
2037
2038    HRESULT (STDMETHODCALLTYPE *GetGammaControl)(
2039        IDXGIOutput1 *This,
2040        DXGI_GAMMA_CONTROL *gamma_control);
2041
2042    HRESULT (STDMETHODCALLTYPE *SetDisplaySurface)(
2043        IDXGIOutput1 *This,
2044        IDXGISurface *surface);
2045
2046    HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData)(
2047        IDXGIOutput1 *This,
2048        IDXGISurface *surface);
2049
2050    HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)(
2051        IDXGIOutput1 *This,
2052        DXGI_FRAME_STATISTICS *stats);
2053
2054    /*** IDXGIOutput1 methods ***/
2055    HRESULT (STDMETHODCALLTYPE *GetDisplayModeList1)(
2056        IDXGIOutput1 *This,
2057        DXGI_FORMAT enum_format,
2058        UINT flags,
2059        UINT *num_modes,
2060        DXGI_MODE_DESC1 *desc);
2061
2062    HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode1)(
2063        IDXGIOutput1 *This,
2064        const DXGI_MODE_DESC1 *mode_to_match,
2065        DXGI_MODE_DESC1 *closest_match,
2066        IUnknown *concerned_device);
2067
2068    HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData1)(
2069        IDXGIOutput1 *This,
2070        IDXGIResource *destination);
2071
2072    HRESULT (STDMETHODCALLTYPE *DuplicateOutput)(
2073        IDXGIOutput1 *This,
2074        IUnknown *device,
2075        IDXGIOutputDuplication **output_duplication);
2076
2077    END_INTERFACE
2078} IDXGIOutput1Vtbl;
2079
2080interface IDXGIOutput1 {
2081    CONST_VTBL IDXGIOutput1Vtbl* lpVtbl;
2082};
2083
2084#ifdef COBJMACROS
2085#ifndef WIDL_C_INLINE_WRAPPERS
2086/*** IUnknown methods ***/
2087#define IDXGIOutput1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2088#define IDXGIOutput1_AddRef(This) (This)->lpVtbl->AddRef(This)
2089#define IDXGIOutput1_Release(This) (This)->lpVtbl->Release(This)
2090/*** IDXGIObject methods ***/
2091#define IDXGIOutput1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
2092#define IDXGIOutput1_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
2093#define IDXGIOutput1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
2094#define IDXGIOutput1_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
2095/*** IDXGIOutput methods ***/
2096#define IDXGIOutput1_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
2097#define IDXGIOutput1_GetDisplayModeList(This,format,flags,mode_count,desc) (This)->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc)
2098#define IDXGIOutput1_FindClosestMatchingMode(This,mode,closest_match,device) (This)->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device)
2099#define IDXGIOutput1_WaitForVBlank(This) (This)->lpVtbl->WaitForVBlank(This)
2100#define IDXGIOutput1_TakeOwnership(This,device,exclusive) (This)->lpVtbl->TakeOwnership(This,device,exclusive)
2101#define IDXGIOutput1_ReleaseOwnership(This) (This)->lpVtbl->ReleaseOwnership(This)
2102#define IDXGIOutput1_GetGammaControlCapabilities(This,gamma_caps) (This)->lpVtbl->GetGammaControlCapabilities(This,gamma_caps)
2103#define IDXGIOutput1_SetGammaControl(This,gamma_control) (This)->lpVtbl->SetGammaControl(This,gamma_control)
2104#define IDXGIOutput1_GetGammaControl(This,gamma_control) (This)->lpVtbl->GetGammaControl(This,gamma_control)
2105#define IDXGIOutput1_SetDisplaySurface(This,surface) (This)->lpVtbl->SetDisplaySurface(This,surface)
2106#define IDXGIOutput1_GetDisplaySurfaceData(This,surface) (This)->lpVtbl->GetDisplaySurfaceData(This,surface)
2107#define IDXGIOutput1_GetFrameStatistics(This,stats) (This)->lpVtbl->GetFrameStatistics(This,stats)
2108/*** IDXGIOutput1 methods ***/
2109#define IDXGIOutput1_GetDisplayModeList1(This,enum_format,flags,num_modes,desc) (This)->lpVtbl->GetDisplayModeList1(This,enum_format,flags,num_modes,desc)
2110#define IDXGIOutput1_FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device) (This)->lpVtbl->FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device)
2111#define IDXGIOutput1_GetDisplaySurfaceData1(This,destination) (This)->lpVtbl->GetDisplaySurfaceData1(This,destination)
2112#define IDXGIOutput1_DuplicateOutput(This,device,output_duplication) (This)->lpVtbl->DuplicateOutput(This,device,output_duplication)
2113#else
2114/*** IUnknown methods ***/
2115static inline HRESULT IDXGIOutput1_QueryInterface(IDXGIOutput1* This,REFIID riid,void **ppvObject) {
2116    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2117}
2118static inline ULONG IDXGIOutput1_AddRef(IDXGIOutput1* This) {
2119    return This->lpVtbl->AddRef(This);
2120}
2121static inline ULONG IDXGIOutput1_Release(IDXGIOutput1* This) {
2122    return This->lpVtbl->Release(This);
2123}
2124/*** IDXGIObject methods ***/
2125static inline HRESULT IDXGIOutput1_SetPrivateData(IDXGIOutput1* This,REFGUID guid,UINT data_size,const void *data) {
2126    return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
2127}
2128static inline HRESULT IDXGIOutput1_SetPrivateDataInterface(IDXGIOutput1* This,REFGUID guid,const IUnknown *object) {
2129    return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
2130}
2131static inline HRESULT IDXGIOutput1_GetPrivateData(IDXGIOutput1* This,REFGUID guid,UINT *data_size,void *data) {
2132    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
2133}
2134static inline HRESULT IDXGIOutput1_GetParent(IDXGIOutput1* This,REFIID riid,void **parent) {
2135    return This->lpVtbl->GetParent(This,riid,parent);
2136}
2137/*** IDXGIOutput methods ***/
2138static inline HRESULT IDXGIOutput1_GetDesc(IDXGIOutput1* This,DXGI_OUTPUT_DESC *desc) {
2139    return This->lpVtbl->GetDesc(This,desc);
2140}
2141static inline HRESULT IDXGIOutput1_GetDisplayModeList(IDXGIOutput1* This,DXGI_FORMAT format,UINT flags,UINT *mode_count,DXGI_MODE_DESC *desc) {
2142    return This->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc);
2143}
2144static inline HRESULT IDXGIOutput1_FindClosestMatchingMode(IDXGIOutput1* This,const DXGI_MODE_DESC *mode,DXGI_MODE_DESC *closest_match,IUnknown *device) {
2145    return This->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device);
2146}
2147static inline HRESULT IDXGIOutput1_WaitForVBlank(IDXGIOutput1* This) {
2148    return This->lpVtbl->WaitForVBlank(This);
2149}
2150static inline HRESULT IDXGIOutput1_TakeOwnership(IDXGIOutput1* This,IUnknown *device,WINBOOL exclusive) {
2151    return This->lpVtbl->TakeOwnership(This,device,exclusive);
2152}
2153static inline void IDXGIOutput1_ReleaseOwnership(IDXGIOutput1* This) {
2154    This->lpVtbl->ReleaseOwnership(This);
2155}
2156static inline HRESULT IDXGIOutput1_GetGammaControlCapabilities(IDXGIOutput1* This,DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps) {
2157    return This->lpVtbl->GetGammaControlCapabilities(This,gamma_caps);
2158}
2159static inline HRESULT IDXGIOutput1_SetGammaControl(IDXGIOutput1* This,const DXGI_GAMMA_CONTROL *gamma_control) {
2160    return This->lpVtbl->SetGammaControl(This,gamma_control);
2161}
2162static inline HRESULT IDXGIOutput1_GetGammaControl(IDXGIOutput1* This,DXGI_GAMMA_CONTROL *gamma_control) {
2163    return This->lpVtbl->GetGammaControl(This,gamma_control);
2164}
2165static inline HRESULT IDXGIOutput1_SetDisplaySurface(IDXGIOutput1* This,IDXGISurface *surface) {
2166    return This->lpVtbl->SetDisplaySurface(This,surface);
2167}
2168static inline HRESULT IDXGIOutput1_GetDisplaySurfaceData(IDXGIOutput1* This,IDXGISurface *surface) {
2169    return This->lpVtbl->GetDisplaySurfaceData(This,surface);
2170}
2171static inline HRESULT IDXGIOutput1_GetFrameStatistics(IDXGIOutput1* This,DXGI_FRAME_STATISTICS *stats) {
2172    return This->lpVtbl->GetFrameStatistics(This,stats);
2173}
2174/*** IDXGIOutput1 methods ***/
2175static inline HRESULT IDXGIOutput1_GetDisplayModeList1(IDXGIOutput1* This,DXGI_FORMAT enum_format,UINT flags,UINT *num_modes,DXGI_MODE_DESC1 *desc) {
2176    return This->lpVtbl->GetDisplayModeList1(This,enum_format,flags,num_modes,desc);
2177}
2178static inline HRESULT IDXGIOutput1_FindClosestMatchingMode1(IDXGIOutput1* This,const DXGI_MODE_DESC1 *mode_to_match,DXGI_MODE_DESC1 *closest_match,IUnknown *concerned_device) {
2179    return This->lpVtbl->FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device);
2180}
2181static inline HRESULT IDXGIOutput1_GetDisplaySurfaceData1(IDXGIOutput1* This,IDXGIResource *destination) {
2182    return This->lpVtbl->GetDisplaySurfaceData1(This,destination);
2183}
2184static inline HRESULT IDXGIOutput1_DuplicateOutput(IDXGIOutput1* This,IUnknown *device,IDXGIOutputDuplication **output_duplication) {
2185    return This->lpVtbl->DuplicateOutput(This,device,output_duplication);
2186}
2187#endif
2188#endif
2189
2190#endif
2191
2192
2193#endif  /* __IDXGIOutput1_INTERFACE_DEFINED__ */
2194
2195/* Begin additional prototypes for all interfaces */
2196
2197
2198/* End additional prototypes */
2199
2200#ifdef __cplusplus
2201}
2202#endif
2203
2204#endif /* __dxgi1_2_h__ */