zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

dxgi.h (98000B) - Raw


      1 /*** Autogenerated by WIDL 10.4 from include/dxgi.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 __dxgi_h__
     17 #define __dxgi_h__
     18 
     19 /* Forward declarations */
     20 
     21 #ifndef __IDXGIObject_FWD_DEFINED__
     22 #define __IDXGIObject_FWD_DEFINED__
     23 typedef interface IDXGIObject IDXGIObject;
     24 #ifdef __cplusplus
     25 interface IDXGIObject;
     26 #endif /* __cplusplus */
     27 #endif
     28 
     29 #ifndef __IDXGIDeviceSubObject_FWD_DEFINED__
     30 #define __IDXGIDeviceSubObject_FWD_DEFINED__
     31 typedef interface IDXGIDeviceSubObject IDXGIDeviceSubObject;
     32 #ifdef __cplusplus
     33 interface IDXGIDeviceSubObject;
     34 #endif /* __cplusplus */
     35 #endif
     36 
     37 #ifndef __IDXGIResource_FWD_DEFINED__
     38 #define __IDXGIResource_FWD_DEFINED__
     39 typedef interface IDXGIResource IDXGIResource;
     40 #ifdef __cplusplus
     41 interface IDXGIResource;
     42 #endif /* __cplusplus */
     43 #endif
     44 
     45 #ifndef __IDXGIKeyedMutex_FWD_DEFINED__
     46 #define __IDXGIKeyedMutex_FWD_DEFINED__
     47 typedef interface IDXGIKeyedMutex IDXGIKeyedMutex;
     48 #ifdef __cplusplus
     49 interface IDXGIKeyedMutex;
     50 #endif /* __cplusplus */
     51 #endif
     52 
     53 #ifndef __IDXGISurface_FWD_DEFINED__
     54 #define __IDXGISurface_FWD_DEFINED__
     55 typedef interface IDXGISurface IDXGISurface;
     56 #ifdef __cplusplus
     57 interface IDXGISurface;
     58 #endif /* __cplusplus */
     59 #endif
     60 
     61 #ifndef __IDXGISurface1_FWD_DEFINED__
     62 #define __IDXGISurface1_FWD_DEFINED__
     63 typedef interface IDXGISurface1 IDXGISurface1;
     64 #ifdef __cplusplus
     65 interface IDXGISurface1;
     66 #endif /* __cplusplus */
     67 #endif
     68 
     69 #ifndef __IDXGIOutput_FWD_DEFINED__
     70 #define __IDXGIOutput_FWD_DEFINED__
     71 typedef interface IDXGIOutput IDXGIOutput;
     72 #ifdef __cplusplus
     73 interface IDXGIOutput;
     74 #endif /* __cplusplus */
     75 #endif
     76 
     77 #ifndef __IDXGIAdapter_FWD_DEFINED__
     78 #define __IDXGIAdapter_FWD_DEFINED__
     79 typedef interface IDXGIAdapter IDXGIAdapter;
     80 #ifdef __cplusplus
     81 interface IDXGIAdapter;
     82 #endif /* __cplusplus */
     83 #endif
     84 
     85 #ifndef __IDXGISwapChain_FWD_DEFINED__
     86 #define __IDXGISwapChain_FWD_DEFINED__
     87 typedef interface IDXGISwapChain IDXGISwapChain;
     88 #ifdef __cplusplus
     89 interface IDXGISwapChain;
     90 #endif /* __cplusplus */
     91 #endif
     92 
     93 #ifndef __IDXGIFactory_FWD_DEFINED__
     94 #define __IDXGIFactory_FWD_DEFINED__
     95 typedef interface IDXGIFactory IDXGIFactory;
     96 #ifdef __cplusplus
     97 interface IDXGIFactory;
     98 #endif /* __cplusplus */
     99 #endif
    100 
    101 #ifndef __IDXGIDevice_FWD_DEFINED__
    102 #define __IDXGIDevice_FWD_DEFINED__
    103 typedef interface IDXGIDevice IDXGIDevice;
    104 #ifdef __cplusplus
    105 interface IDXGIDevice;
    106 #endif /* __cplusplus */
    107 #endif
    108 
    109 #ifndef __IDXGIAdapter1_FWD_DEFINED__
    110 #define __IDXGIAdapter1_FWD_DEFINED__
    111 typedef interface IDXGIAdapter1 IDXGIAdapter1;
    112 #ifdef __cplusplus
    113 interface IDXGIAdapter1;
    114 #endif /* __cplusplus */
    115 #endif
    116 
    117 #ifndef __IDXGIDevice1_FWD_DEFINED__
    118 #define __IDXGIDevice1_FWD_DEFINED__
    119 typedef interface IDXGIDevice1 IDXGIDevice1;
    120 #ifdef __cplusplus
    121 interface IDXGIDevice1;
    122 #endif /* __cplusplus */
    123 #endif
    124 
    125 #ifndef __IDXGIFactory1_FWD_DEFINED__
    126 #define __IDXGIFactory1_FWD_DEFINED__
    127 typedef interface IDXGIFactory1 IDXGIFactory1;
    128 #ifdef __cplusplus
    129 interface IDXGIFactory1;
    130 #endif /* __cplusplus */
    131 #endif
    132 
    133 /* Headers for imported files */
    134 
    135 #include <oaidl.h>
    136 #include <ocidl.h>
    137 #include <dxgitype.h>
    138 
    139 #ifdef __cplusplus
    140 extern "C" {
    141 #endif
    142 
    143 #define _FACDXGI (0x87a)
    144 
    145 #define MAKE_DXGI_STATUS(x)                         MAKE_HRESULT(0, _FACDXGI, x)
    146 #define MAKE_DXGI_HRESULT(x)                        MAKE_HRESULT(1, _FACDXGI, x)
    147 #if 0
    148 typedef HANDLE HMONITOR;
    149 typedef struct _LUID {
    150     DWORD LowPart;
    151     LONG HighPart;
    152 } LUID;
    153 typedef struct _LUID *PLUID;
    154 #endif
    155 #define DXGI_CPU_ACCESS_NONE (0)
    156 
    157 #define DXGI_CPU_ACCESS_DYNAMIC (1)
    158 
    159 #define DXGI_CPU_ACCESS_READ_WRITE (2)
    160 
    161 #define DXGI_CPU_ACCESS_SCRATCH (3)
    162 
    163 #define DXGI_CPU_ACCESS_FIELD (15)
    164 
    165 typedef UINT DXGI_USAGE;
    166 #define DXGI_USAGE_SHADER_INPUT (0x10)
    167 
    168 #define DXGI_USAGE_RENDER_TARGET_OUTPUT (0x20)
    169 
    170 #define DXGI_USAGE_BACK_BUFFER (0x40)
    171 
    172 #define DXGI_USAGE_SHARED (0x80)
    173 
    174 #define DXGI_USAGE_READ_ONLY (0x100)
    175 
    176 #define DXGI_USAGE_DISCARD_ON_PRESENT (0x200)
    177 
    178 #define DXGI_USAGE_UNORDERED_ACCESS (0x400)
    179 
    180 #define DXGI_ENUM_MODES_INTERLACED (1)
    181 
    182 #define DXGI_ENUM_MODES_SCALING (2)
    183 
    184 #define DXGI_RESOURCE_PRIORITY_MINIMUM (0x28000000)
    185 
    186 #define DXGI_RESOURCE_PRIORITY_LOW (0x50000000)
    187 
    188 #define DXGI_RESOURCE_PRIORITY_NORMAL (0x78000000)
    189 
    190 #define DXGI_RESOURCE_PRIORITY_HIGH (0xa0000000)
    191 
    192 #define DXGI_RESOURCE_PRIORITY_MAXIMUM (0xc8000000)
    193 
    194 #define DXGI_MAP_READ (0x1)
    195 
    196 #define DXGI_MAP_WRITE (0x2)
    197 
    198 #define DXGI_MAP_DISCARD (0x4)
    199 
    200 typedef enum DXGI_SWAP_EFFECT {
    201     DXGI_SWAP_EFFECT_DISCARD = 0,
    202     DXGI_SWAP_EFFECT_SEQUENTIAL = 1,
    203     DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL = 3,
    204     DXGI_SWAP_EFFECT_FLIP_DISCARD = 4
    205 } DXGI_SWAP_EFFECT;
    206 typedef enum DXGI_RESIDENCY {
    207     DXGI_RESIDENCY_FULLY_RESIDENT = 1,
    208     DXGI_RESIDENCY_RESIDENT_IN_SHARED_MEMORY = 2,
    209     DXGI_RESIDENCY_EVICTED_TO_DISK = 3
    210 } DXGI_RESIDENCY;
    211 typedef struct DXGI_SURFACE_DESC {
    212     UINT Width;
    213     UINT Height;
    214     DXGI_FORMAT Format;
    215     DXGI_SAMPLE_DESC SampleDesc;
    216 } DXGI_SURFACE_DESC;
    217 typedef struct DXGI_MAPPED_RECT {
    218     INT Pitch;
    219     BYTE *pBits;
    220 } DXGI_MAPPED_RECT;
    221 typedef struct DXGI_OUTPUT_DESC {
    222     WCHAR DeviceName[32];
    223     RECT DesktopCoordinates;
    224     WINBOOL AttachedToDesktop;
    225     DXGI_MODE_ROTATION Rotation;
    226     HMONITOR Monitor;
    227 } DXGI_OUTPUT_DESC;
    228 typedef struct DXGI_FRAME_STATISTICS {
    229     UINT PresentCount;
    230     UINT PresentRefreshCount;
    231     UINT SyncRefreshCount;
    232     LARGE_INTEGER SyncQPCTime;
    233     LARGE_INTEGER SyncGPUTime;
    234 } DXGI_FRAME_STATISTICS;
    235 typedef struct DXGI_ADAPTER_DESC {
    236     WCHAR Description[128];
    237     UINT VendorId;
    238     UINT DeviceId;
    239     UINT SubSysId;
    240     UINT Revision;
    241     SIZE_T DedicatedVideoMemory;
    242     SIZE_T DedicatedSystemMemory;
    243     SIZE_T SharedSystemMemory;
    244     LUID AdapterLuid;
    245 } DXGI_ADAPTER_DESC;
    246 typedef enum DXGI_SWAP_CHAIN_FLAG {
    247     DXGI_SWAP_CHAIN_FLAG_NONPREROTATED = 0x1,
    248     DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH = 0x2,
    249     DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE = 0x4,
    250     DXGI_SWAP_CHAIN_FLAG_RESTRICTED_CONTENT = 0x8,
    251     DXGI_SWAP_CHAIN_FLAG_RESTRICT_SHARED_RESOURCE_DRIVER = 0x10,
    252     DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY = 0x20,
    253     DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT = 0x40,
    254     DXGI_SWAP_CHAIN_FLAG_FOREGROUND_LAYER = 0x80,
    255     DXGI_SWAP_CHAIN_FLAG_FULLSCREEN_VIDEO = 0x100,
    256     DXGI_SWAP_CHAIN_FLAG_YUV_VIDEO = 0x200,
    257     DXGI_SWAP_CHAIN_FLAG_HW_PROTECTED = 0x400,
    258     DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING = 0x800,
    259     DXGI_SWAP_CHAIN_FLAG_RESTRICTED_TO_ALL_HOLOGRAPHIC_DISPLAYS = 0x1000
    260 } DXGI_SWAP_CHAIN_FLAG;
    261 typedef struct DXGI_SWAP_CHAIN_DESC {
    262     DXGI_MODE_DESC BufferDesc;
    263     DXGI_SAMPLE_DESC SampleDesc;
    264     DXGI_USAGE BufferUsage;
    265     UINT BufferCount;
    266     HWND OutputWindow;
    267     WINBOOL Windowed;
    268     DXGI_SWAP_EFFECT SwapEffect;
    269     UINT Flags;
    270 } DXGI_SWAP_CHAIN_DESC;
    271 typedef struct DXGI_SHARED_RESOURCE {
    272     HANDLE Handle;
    273 } DXGI_SHARED_RESOURCE;
    274 /*****************************************************************************
    275  * IDXGIObject interface
    276  */
    277 #ifndef __IDXGIObject_INTERFACE_DEFINED__
    278 #define __IDXGIObject_INTERFACE_DEFINED__
    279 
    280 DEFINE_GUID(IID_IDXGIObject, 0xaec22fb8, 0x76f3, 0x4639, 0x9b,0xe0, 0x28,0xeb,0x43,0xa6,0x7a,0x2e);
    281 #if defined(__cplusplus) && !defined(CINTERFACE)
    282 MIDL_INTERFACE("aec22fb8-76f3-4639-9be0-28eb43a67a2e")
    283 IDXGIObject : public IUnknown
    284 {
    285     virtual HRESULT STDMETHODCALLTYPE SetPrivateData(
    286         REFGUID guid,
    287         UINT data_size,
    288         const void *data) = 0;
    289 
    290     virtual HRESULT STDMETHODCALLTYPE SetPrivateDataInterface(
    291         REFGUID guid,
    292         const IUnknown *object) = 0;
    293 
    294     virtual HRESULT STDMETHODCALLTYPE GetPrivateData(
    295         REFGUID guid,
    296         UINT *data_size,
    297         void *data) = 0;
    298 
    299     virtual HRESULT STDMETHODCALLTYPE GetParent(
    300         REFIID riid,
    301         void **parent) = 0;
    302 
    303 };
    304 #ifdef __CRT_UUID_DECL
    305 __CRT_UUID_DECL(IDXGIObject, 0xaec22fb8, 0x76f3, 0x4639, 0x9b,0xe0, 0x28,0xeb,0x43,0xa6,0x7a,0x2e)
    306 #endif
    307 #else
    308 typedef struct IDXGIObjectVtbl {
    309     BEGIN_INTERFACE
    310 
    311     /*** IUnknown methods ***/
    312     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    313         IDXGIObject *This,
    314         REFIID riid,
    315         void **ppvObject);
    316 
    317     ULONG (STDMETHODCALLTYPE *AddRef)(
    318         IDXGIObject *This);
    319 
    320     ULONG (STDMETHODCALLTYPE *Release)(
    321         IDXGIObject *This);
    322 
    323     /*** IDXGIObject methods ***/
    324     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
    325         IDXGIObject *This,
    326         REFGUID guid,
    327         UINT data_size,
    328         const void *data);
    329 
    330     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
    331         IDXGIObject *This,
    332         REFGUID guid,
    333         const IUnknown *object);
    334 
    335     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
    336         IDXGIObject *This,
    337         REFGUID guid,
    338         UINT *data_size,
    339         void *data);
    340 
    341     HRESULT (STDMETHODCALLTYPE *GetParent)(
    342         IDXGIObject *This,
    343         REFIID riid,
    344         void **parent);
    345 
    346     END_INTERFACE
    347 } IDXGIObjectVtbl;
    348 
    349 interface IDXGIObject {
    350     CONST_VTBL IDXGIObjectVtbl* lpVtbl;
    351 };
    352 
    353 #ifdef COBJMACROS
    354 #ifndef WIDL_C_INLINE_WRAPPERS
    355 /*** IUnknown methods ***/
    356 #define IDXGIObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    357 #define IDXGIObject_AddRef(This) (This)->lpVtbl->AddRef(This)
    358 #define IDXGIObject_Release(This) (This)->lpVtbl->Release(This)
    359 /*** IDXGIObject methods ***/
    360 #define IDXGIObject_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
    361 #define IDXGIObject_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
    362 #define IDXGIObject_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
    363 #define IDXGIObject_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
    364 #else
    365 /*** IUnknown methods ***/
    366 static inline HRESULT IDXGIObject_QueryInterface(IDXGIObject* This,REFIID riid,void **ppvObject) {
    367     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    368 }
    369 static inline ULONG IDXGIObject_AddRef(IDXGIObject* This) {
    370     return This->lpVtbl->AddRef(This);
    371 }
    372 static inline ULONG IDXGIObject_Release(IDXGIObject* This) {
    373     return This->lpVtbl->Release(This);
    374 }
    375 /*** IDXGIObject methods ***/
    376 static inline HRESULT IDXGIObject_SetPrivateData(IDXGIObject* This,REFGUID guid,UINT data_size,const void *data) {
    377     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
    378 }
    379 static inline HRESULT IDXGIObject_SetPrivateDataInterface(IDXGIObject* This,REFGUID guid,const IUnknown *object) {
    380     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
    381 }
    382 static inline HRESULT IDXGIObject_GetPrivateData(IDXGIObject* This,REFGUID guid,UINT *data_size,void *data) {
    383     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
    384 }
    385 static inline HRESULT IDXGIObject_GetParent(IDXGIObject* This,REFIID riid,void **parent) {
    386     return This->lpVtbl->GetParent(This,riid,parent);
    387 }
    388 #endif
    389 #endif
    390 
    391 #endif
    392 
    393 
    394 #endif  /* __IDXGIObject_INTERFACE_DEFINED__ */
    395 
    396 /*****************************************************************************
    397  * IDXGIDeviceSubObject interface
    398  */
    399 #ifndef __IDXGIDeviceSubObject_INTERFACE_DEFINED__
    400 #define __IDXGIDeviceSubObject_INTERFACE_DEFINED__
    401 
    402 DEFINE_GUID(IID_IDXGIDeviceSubObject, 0x3d3e0379, 0xf9de, 0x4d58, 0xbb,0x6c, 0x18,0xd6,0x29,0x92,0xf1,0xa6);
    403 #if defined(__cplusplus) && !defined(CINTERFACE)
    404 MIDL_INTERFACE("3d3e0379-f9de-4d58-bb6c-18d62992f1a6")
    405 IDXGIDeviceSubObject : public IDXGIObject
    406 {
    407     virtual HRESULT STDMETHODCALLTYPE GetDevice(
    408         REFIID riid,
    409         void **device) = 0;
    410 
    411 };
    412 #ifdef __CRT_UUID_DECL
    413 __CRT_UUID_DECL(IDXGIDeviceSubObject, 0x3d3e0379, 0xf9de, 0x4d58, 0xbb,0x6c, 0x18,0xd6,0x29,0x92,0xf1,0xa6)
    414 #endif
    415 #else
    416 typedef struct IDXGIDeviceSubObjectVtbl {
    417     BEGIN_INTERFACE
    418 
    419     /*** IUnknown methods ***/
    420     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    421         IDXGIDeviceSubObject *This,
    422         REFIID riid,
    423         void **ppvObject);
    424 
    425     ULONG (STDMETHODCALLTYPE *AddRef)(
    426         IDXGIDeviceSubObject *This);
    427 
    428     ULONG (STDMETHODCALLTYPE *Release)(
    429         IDXGIDeviceSubObject *This);
    430 
    431     /*** IDXGIObject methods ***/
    432     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
    433         IDXGIDeviceSubObject *This,
    434         REFGUID guid,
    435         UINT data_size,
    436         const void *data);
    437 
    438     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
    439         IDXGIDeviceSubObject *This,
    440         REFGUID guid,
    441         const IUnknown *object);
    442 
    443     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
    444         IDXGIDeviceSubObject *This,
    445         REFGUID guid,
    446         UINT *data_size,
    447         void *data);
    448 
    449     HRESULT (STDMETHODCALLTYPE *GetParent)(
    450         IDXGIDeviceSubObject *This,
    451         REFIID riid,
    452         void **parent);
    453 
    454     /*** IDXGIDeviceSubObject methods ***/
    455     HRESULT (STDMETHODCALLTYPE *GetDevice)(
    456         IDXGIDeviceSubObject *This,
    457         REFIID riid,
    458         void **device);
    459 
    460     END_INTERFACE
    461 } IDXGIDeviceSubObjectVtbl;
    462 
    463 interface IDXGIDeviceSubObject {
    464     CONST_VTBL IDXGIDeviceSubObjectVtbl* lpVtbl;
    465 };
    466 
    467 #ifdef COBJMACROS
    468 #ifndef WIDL_C_INLINE_WRAPPERS
    469 /*** IUnknown methods ***/
    470 #define IDXGIDeviceSubObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    471 #define IDXGIDeviceSubObject_AddRef(This) (This)->lpVtbl->AddRef(This)
    472 #define IDXGIDeviceSubObject_Release(This) (This)->lpVtbl->Release(This)
    473 /*** IDXGIObject methods ***/
    474 #define IDXGIDeviceSubObject_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
    475 #define IDXGIDeviceSubObject_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
    476 #define IDXGIDeviceSubObject_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
    477 #define IDXGIDeviceSubObject_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
    478 /*** IDXGIDeviceSubObject methods ***/
    479 #define IDXGIDeviceSubObject_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
    480 #else
    481 /*** IUnknown methods ***/
    482 static inline HRESULT IDXGIDeviceSubObject_QueryInterface(IDXGIDeviceSubObject* This,REFIID riid,void **ppvObject) {
    483     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    484 }
    485 static inline ULONG IDXGIDeviceSubObject_AddRef(IDXGIDeviceSubObject* This) {
    486     return This->lpVtbl->AddRef(This);
    487 }
    488 static inline ULONG IDXGIDeviceSubObject_Release(IDXGIDeviceSubObject* This) {
    489     return This->lpVtbl->Release(This);
    490 }
    491 /*** IDXGIObject methods ***/
    492 static inline HRESULT IDXGIDeviceSubObject_SetPrivateData(IDXGIDeviceSubObject* This,REFGUID guid,UINT data_size,const void *data) {
    493     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
    494 }
    495 static inline HRESULT IDXGIDeviceSubObject_SetPrivateDataInterface(IDXGIDeviceSubObject* This,REFGUID guid,const IUnknown *object) {
    496     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
    497 }
    498 static inline HRESULT IDXGIDeviceSubObject_GetPrivateData(IDXGIDeviceSubObject* This,REFGUID guid,UINT *data_size,void *data) {
    499     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
    500 }
    501 static inline HRESULT IDXGIDeviceSubObject_GetParent(IDXGIDeviceSubObject* This,REFIID riid,void **parent) {
    502     return This->lpVtbl->GetParent(This,riid,parent);
    503 }
    504 /*** IDXGIDeviceSubObject methods ***/
    505 static inline HRESULT IDXGIDeviceSubObject_GetDevice(IDXGIDeviceSubObject* This,REFIID riid,void **device) {
    506     return This->lpVtbl->GetDevice(This,riid,device);
    507 }
    508 #endif
    509 #endif
    510 
    511 #endif
    512 
    513 
    514 #endif  /* __IDXGIDeviceSubObject_INTERFACE_DEFINED__ */
    515 
    516 /*****************************************************************************
    517  * IDXGIResource interface
    518  */
    519 #ifndef __IDXGIResource_INTERFACE_DEFINED__
    520 #define __IDXGIResource_INTERFACE_DEFINED__
    521 
    522 DEFINE_GUID(IID_IDXGIResource, 0x035f3ab4, 0x482e, 0x4e50, 0xb4,0x1f, 0x8a,0x7f,0x8b,0xd8,0x96,0x0b);
    523 #if defined(__cplusplus) && !defined(CINTERFACE)
    524 MIDL_INTERFACE("035f3ab4-482e-4e50-b41f-8a7f8bd8960b")
    525 IDXGIResource : public IDXGIDeviceSubObject
    526 {
    527     virtual HRESULT STDMETHODCALLTYPE GetSharedHandle(
    528         HANDLE *pSharedHandle) = 0;
    529 
    530     virtual HRESULT STDMETHODCALLTYPE GetUsage(
    531         DXGI_USAGE *pUsage) = 0;
    532 
    533     virtual HRESULT STDMETHODCALLTYPE SetEvictionPriority(
    534         UINT EvictionPriority) = 0;
    535 
    536     virtual HRESULT STDMETHODCALLTYPE GetEvictionPriority(
    537         UINT *pEvictionPriority) = 0;
    538 
    539 };
    540 #ifdef __CRT_UUID_DECL
    541 __CRT_UUID_DECL(IDXGIResource, 0x035f3ab4, 0x482e, 0x4e50, 0xb4,0x1f, 0x8a,0x7f,0x8b,0xd8,0x96,0x0b)
    542 #endif
    543 #else
    544 typedef struct IDXGIResourceVtbl {
    545     BEGIN_INTERFACE
    546 
    547     /*** IUnknown methods ***/
    548     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    549         IDXGIResource *This,
    550         REFIID riid,
    551         void **ppvObject);
    552 
    553     ULONG (STDMETHODCALLTYPE *AddRef)(
    554         IDXGIResource *This);
    555 
    556     ULONG (STDMETHODCALLTYPE *Release)(
    557         IDXGIResource *This);
    558 
    559     /*** IDXGIObject methods ***/
    560     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
    561         IDXGIResource *This,
    562         REFGUID guid,
    563         UINT data_size,
    564         const void *data);
    565 
    566     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
    567         IDXGIResource *This,
    568         REFGUID guid,
    569         const IUnknown *object);
    570 
    571     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
    572         IDXGIResource *This,
    573         REFGUID guid,
    574         UINT *data_size,
    575         void *data);
    576 
    577     HRESULT (STDMETHODCALLTYPE *GetParent)(
    578         IDXGIResource *This,
    579         REFIID riid,
    580         void **parent);
    581 
    582     /*** IDXGIDeviceSubObject methods ***/
    583     HRESULT (STDMETHODCALLTYPE *GetDevice)(
    584         IDXGIResource *This,
    585         REFIID riid,
    586         void **device);
    587 
    588     /*** IDXGIResource methods ***/
    589     HRESULT (STDMETHODCALLTYPE *GetSharedHandle)(
    590         IDXGIResource *This,
    591         HANDLE *pSharedHandle);
    592 
    593     HRESULT (STDMETHODCALLTYPE *GetUsage)(
    594         IDXGIResource *This,
    595         DXGI_USAGE *pUsage);
    596 
    597     HRESULT (STDMETHODCALLTYPE *SetEvictionPriority)(
    598         IDXGIResource *This,
    599         UINT EvictionPriority);
    600 
    601     HRESULT (STDMETHODCALLTYPE *GetEvictionPriority)(
    602         IDXGIResource *This,
    603         UINT *pEvictionPriority);
    604 
    605     END_INTERFACE
    606 } IDXGIResourceVtbl;
    607 
    608 interface IDXGIResource {
    609     CONST_VTBL IDXGIResourceVtbl* lpVtbl;
    610 };
    611 
    612 #ifdef COBJMACROS
    613 #ifndef WIDL_C_INLINE_WRAPPERS
    614 /*** IUnknown methods ***/
    615 #define IDXGIResource_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    616 #define IDXGIResource_AddRef(This) (This)->lpVtbl->AddRef(This)
    617 #define IDXGIResource_Release(This) (This)->lpVtbl->Release(This)
    618 /*** IDXGIObject methods ***/
    619 #define IDXGIResource_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
    620 #define IDXGIResource_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
    621 #define IDXGIResource_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
    622 #define IDXGIResource_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
    623 /*** IDXGIDeviceSubObject methods ***/
    624 #define IDXGIResource_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
    625 /*** IDXGIResource methods ***/
    626 #define IDXGIResource_GetSharedHandle(This,pSharedHandle) (This)->lpVtbl->GetSharedHandle(This,pSharedHandle)
    627 #define IDXGIResource_GetUsage(This,pUsage) (This)->lpVtbl->GetUsage(This,pUsage)
    628 #define IDXGIResource_SetEvictionPriority(This,EvictionPriority) (This)->lpVtbl->SetEvictionPriority(This,EvictionPriority)
    629 #define IDXGIResource_GetEvictionPriority(This,pEvictionPriority) (This)->lpVtbl->GetEvictionPriority(This,pEvictionPriority)
    630 #else
    631 /*** IUnknown methods ***/
    632 static inline HRESULT IDXGIResource_QueryInterface(IDXGIResource* This,REFIID riid,void **ppvObject) {
    633     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    634 }
    635 static inline ULONG IDXGIResource_AddRef(IDXGIResource* This) {
    636     return This->lpVtbl->AddRef(This);
    637 }
    638 static inline ULONG IDXGIResource_Release(IDXGIResource* This) {
    639     return This->lpVtbl->Release(This);
    640 }
    641 /*** IDXGIObject methods ***/
    642 static inline HRESULT IDXGIResource_SetPrivateData(IDXGIResource* This,REFGUID guid,UINT data_size,const void *data) {
    643     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
    644 }
    645 static inline HRESULT IDXGIResource_SetPrivateDataInterface(IDXGIResource* This,REFGUID guid,const IUnknown *object) {
    646     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
    647 }
    648 static inline HRESULT IDXGIResource_GetPrivateData(IDXGIResource* This,REFGUID guid,UINT *data_size,void *data) {
    649     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
    650 }
    651 static inline HRESULT IDXGIResource_GetParent(IDXGIResource* This,REFIID riid,void **parent) {
    652     return This->lpVtbl->GetParent(This,riid,parent);
    653 }
    654 /*** IDXGIDeviceSubObject methods ***/
    655 static inline HRESULT IDXGIResource_GetDevice(IDXGIResource* This,REFIID riid,void **device) {
    656     return This->lpVtbl->GetDevice(This,riid,device);
    657 }
    658 /*** IDXGIResource methods ***/
    659 static inline HRESULT IDXGIResource_GetSharedHandle(IDXGIResource* This,HANDLE *pSharedHandle) {
    660     return This->lpVtbl->GetSharedHandle(This,pSharedHandle);
    661 }
    662 static inline HRESULT IDXGIResource_GetUsage(IDXGIResource* This,DXGI_USAGE *pUsage) {
    663     return This->lpVtbl->GetUsage(This,pUsage);
    664 }
    665 static inline HRESULT IDXGIResource_SetEvictionPriority(IDXGIResource* This,UINT EvictionPriority) {
    666     return This->lpVtbl->SetEvictionPriority(This,EvictionPriority);
    667 }
    668 static inline HRESULT IDXGIResource_GetEvictionPriority(IDXGIResource* This,UINT *pEvictionPriority) {
    669     return This->lpVtbl->GetEvictionPriority(This,pEvictionPriority);
    670 }
    671 #endif
    672 #endif
    673 
    674 #endif
    675 
    676 
    677 #endif  /* __IDXGIResource_INTERFACE_DEFINED__ */
    678 
    679 /*****************************************************************************
    680  * IDXGIKeyedMutex interface
    681  */
    682 #ifndef __IDXGIKeyedMutex_INTERFACE_DEFINED__
    683 #define __IDXGIKeyedMutex_INTERFACE_DEFINED__
    684 
    685 DEFINE_GUID(IID_IDXGIKeyedMutex, 0x9d8e1289, 0xd7b3, 0x465f, 0x81,0x26, 0x25,0x0e,0x34,0x9a,0xf8,0x5d);
    686 #if defined(__cplusplus) && !defined(CINTERFACE)
    687 MIDL_INTERFACE("9d8e1289-d7b3-465f-8126-250e349af85d")
    688 IDXGIKeyedMutex : public IDXGIDeviceSubObject
    689 {
    690     virtual HRESULT STDMETHODCALLTYPE AcquireSync(
    691         UINT64 Key,
    692         DWORD dwMilliseconds) = 0;
    693 
    694     virtual HRESULT STDMETHODCALLTYPE ReleaseSync(
    695         UINT64 Key) = 0;
    696 
    697 };
    698 #ifdef __CRT_UUID_DECL
    699 __CRT_UUID_DECL(IDXGIKeyedMutex, 0x9d8e1289, 0xd7b3, 0x465f, 0x81,0x26, 0x25,0x0e,0x34,0x9a,0xf8,0x5d)
    700 #endif
    701 #else
    702 typedef struct IDXGIKeyedMutexVtbl {
    703     BEGIN_INTERFACE
    704 
    705     /*** IUnknown methods ***/
    706     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    707         IDXGIKeyedMutex *This,
    708         REFIID riid,
    709         void **ppvObject);
    710 
    711     ULONG (STDMETHODCALLTYPE *AddRef)(
    712         IDXGIKeyedMutex *This);
    713 
    714     ULONG (STDMETHODCALLTYPE *Release)(
    715         IDXGIKeyedMutex *This);
    716 
    717     /*** IDXGIObject methods ***/
    718     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
    719         IDXGIKeyedMutex *This,
    720         REFGUID guid,
    721         UINT data_size,
    722         const void *data);
    723 
    724     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
    725         IDXGIKeyedMutex *This,
    726         REFGUID guid,
    727         const IUnknown *object);
    728 
    729     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
    730         IDXGIKeyedMutex *This,
    731         REFGUID guid,
    732         UINT *data_size,
    733         void *data);
    734 
    735     HRESULT (STDMETHODCALLTYPE *GetParent)(
    736         IDXGIKeyedMutex *This,
    737         REFIID riid,
    738         void **parent);
    739 
    740     /*** IDXGIDeviceSubObject methods ***/
    741     HRESULT (STDMETHODCALLTYPE *GetDevice)(
    742         IDXGIKeyedMutex *This,
    743         REFIID riid,
    744         void **device);
    745 
    746     /*** IDXGIKeyedMutex methods ***/
    747     HRESULT (STDMETHODCALLTYPE *AcquireSync)(
    748         IDXGIKeyedMutex *This,
    749         UINT64 Key,
    750         DWORD dwMilliseconds);
    751 
    752     HRESULT (STDMETHODCALLTYPE *ReleaseSync)(
    753         IDXGIKeyedMutex *This,
    754         UINT64 Key);
    755 
    756     END_INTERFACE
    757 } IDXGIKeyedMutexVtbl;
    758 
    759 interface IDXGIKeyedMutex {
    760     CONST_VTBL IDXGIKeyedMutexVtbl* lpVtbl;
    761 };
    762 
    763 #ifdef COBJMACROS
    764 #ifndef WIDL_C_INLINE_WRAPPERS
    765 /*** IUnknown methods ***/
    766 #define IDXGIKeyedMutex_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    767 #define IDXGIKeyedMutex_AddRef(This) (This)->lpVtbl->AddRef(This)
    768 #define IDXGIKeyedMutex_Release(This) (This)->lpVtbl->Release(This)
    769 /*** IDXGIObject methods ***/
    770 #define IDXGIKeyedMutex_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
    771 #define IDXGIKeyedMutex_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
    772 #define IDXGIKeyedMutex_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
    773 #define IDXGIKeyedMutex_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
    774 /*** IDXGIDeviceSubObject methods ***/
    775 #define IDXGIKeyedMutex_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
    776 /*** IDXGIKeyedMutex methods ***/
    777 #define IDXGIKeyedMutex_AcquireSync(This,Key,dwMilliseconds) (This)->lpVtbl->AcquireSync(This,Key,dwMilliseconds)
    778 #define IDXGIKeyedMutex_ReleaseSync(This,Key) (This)->lpVtbl->ReleaseSync(This,Key)
    779 #else
    780 /*** IUnknown methods ***/
    781 static inline HRESULT IDXGIKeyedMutex_QueryInterface(IDXGIKeyedMutex* This,REFIID riid,void **ppvObject) {
    782     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    783 }
    784 static inline ULONG IDXGIKeyedMutex_AddRef(IDXGIKeyedMutex* This) {
    785     return This->lpVtbl->AddRef(This);
    786 }
    787 static inline ULONG IDXGIKeyedMutex_Release(IDXGIKeyedMutex* This) {
    788     return This->lpVtbl->Release(This);
    789 }
    790 /*** IDXGIObject methods ***/
    791 static inline HRESULT IDXGIKeyedMutex_SetPrivateData(IDXGIKeyedMutex* This,REFGUID guid,UINT data_size,const void *data) {
    792     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
    793 }
    794 static inline HRESULT IDXGIKeyedMutex_SetPrivateDataInterface(IDXGIKeyedMutex* This,REFGUID guid,const IUnknown *object) {
    795     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
    796 }
    797 static inline HRESULT IDXGIKeyedMutex_GetPrivateData(IDXGIKeyedMutex* This,REFGUID guid,UINT *data_size,void *data) {
    798     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
    799 }
    800 static inline HRESULT IDXGIKeyedMutex_GetParent(IDXGIKeyedMutex* This,REFIID riid,void **parent) {
    801     return This->lpVtbl->GetParent(This,riid,parent);
    802 }
    803 /*** IDXGIDeviceSubObject methods ***/
    804 static inline HRESULT IDXGIKeyedMutex_GetDevice(IDXGIKeyedMutex* This,REFIID riid,void **device) {
    805     return This->lpVtbl->GetDevice(This,riid,device);
    806 }
    807 /*** IDXGIKeyedMutex methods ***/
    808 static inline HRESULT IDXGIKeyedMutex_AcquireSync(IDXGIKeyedMutex* This,UINT64 Key,DWORD dwMilliseconds) {
    809     return This->lpVtbl->AcquireSync(This,Key,dwMilliseconds);
    810 }
    811 static inline HRESULT IDXGIKeyedMutex_ReleaseSync(IDXGIKeyedMutex* This,UINT64 Key) {
    812     return This->lpVtbl->ReleaseSync(This,Key);
    813 }
    814 #endif
    815 #endif
    816 
    817 #endif
    818 
    819 
    820 #endif  /* __IDXGIKeyedMutex_INTERFACE_DEFINED__ */
    821 
    822 /*****************************************************************************
    823  * IDXGISurface interface
    824  */
    825 #ifndef __IDXGISurface_INTERFACE_DEFINED__
    826 #define __IDXGISurface_INTERFACE_DEFINED__
    827 
    828 DEFINE_GUID(IID_IDXGISurface, 0xcafcb56c, 0x6ac3, 0x4889, 0xbf,0x47, 0x9e,0x23,0xbb,0xd2,0x60,0xec);
    829 #if defined(__cplusplus) && !defined(CINTERFACE)
    830 MIDL_INTERFACE("cafcb56c-6ac3-4889-bf47-9e23bbd260ec")
    831 IDXGISurface : public IDXGIDeviceSubObject
    832 {
    833     virtual HRESULT STDMETHODCALLTYPE GetDesc(
    834         DXGI_SURFACE_DESC *desc) = 0;
    835 
    836     virtual HRESULT STDMETHODCALLTYPE Map(
    837         DXGI_MAPPED_RECT *mapped_rect,
    838         UINT flags) = 0;
    839 
    840     virtual HRESULT STDMETHODCALLTYPE Unmap(
    841         ) = 0;
    842 
    843 };
    844 #ifdef __CRT_UUID_DECL
    845 __CRT_UUID_DECL(IDXGISurface, 0xcafcb56c, 0x6ac3, 0x4889, 0xbf,0x47, 0x9e,0x23,0xbb,0xd2,0x60,0xec)
    846 #endif
    847 #else
    848 typedef struct IDXGISurfaceVtbl {
    849     BEGIN_INTERFACE
    850 
    851     /*** IUnknown methods ***/
    852     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    853         IDXGISurface *This,
    854         REFIID riid,
    855         void **ppvObject);
    856 
    857     ULONG (STDMETHODCALLTYPE *AddRef)(
    858         IDXGISurface *This);
    859 
    860     ULONG (STDMETHODCALLTYPE *Release)(
    861         IDXGISurface *This);
    862 
    863     /*** IDXGIObject methods ***/
    864     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
    865         IDXGISurface *This,
    866         REFGUID guid,
    867         UINT data_size,
    868         const void *data);
    869 
    870     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
    871         IDXGISurface *This,
    872         REFGUID guid,
    873         const IUnknown *object);
    874 
    875     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
    876         IDXGISurface *This,
    877         REFGUID guid,
    878         UINT *data_size,
    879         void *data);
    880 
    881     HRESULT (STDMETHODCALLTYPE *GetParent)(
    882         IDXGISurface *This,
    883         REFIID riid,
    884         void **parent);
    885 
    886     /*** IDXGIDeviceSubObject methods ***/
    887     HRESULT (STDMETHODCALLTYPE *GetDevice)(
    888         IDXGISurface *This,
    889         REFIID riid,
    890         void **device);
    891 
    892     /*** IDXGISurface methods ***/
    893     HRESULT (STDMETHODCALLTYPE *GetDesc)(
    894         IDXGISurface *This,
    895         DXGI_SURFACE_DESC *desc);
    896 
    897     HRESULT (STDMETHODCALLTYPE *Map)(
    898         IDXGISurface *This,
    899         DXGI_MAPPED_RECT *mapped_rect,
    900         UINT flags);
    901 
    902     HRESULT (STDMETHODCALLTYPE *Unmap)(
    903         IDXGISurface *This);
    904 
    905     END_INTERFACE
    906 } IDXGISurfaceVtbl;
    907 
    908 interface IDXGISurface {
    909     CONST_VTBL IDXGISurfaceVtbl* lpVtbl;
    910 };
    911 
    912 #ifdef COBJMACROS
    913 #ifndef WIDL_C_INLINE_WRAPPERS
    914 /*** IUnknown methods ***/
    915 #define IDXGISurface_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    916 #define IDXGISurface_AddRef(This) (This)->lpVtbl->AddRef(This)
    917 #define IDXGISurface_Release(This) (This)->lpVtbl->Release(This)
    918 /*** IDXGIObject methods ***/
    919 #define IDXGISurface_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
    920 #define IDXGISurface_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
    921 #define IDXGISurface_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
    922 #define IDXGISurface_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
    923 /*** IDXGIDeviceSubObject methods ***/
    924 #define IDXGISurface_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
    925 /*** IDXGISurface methods ***/
    926 #define IDXGISurface_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
    927 #define IDXGISurface_Map(This,mapped_rect,flags) (This)->lpVtbl->Map(This,mapped_rect,flags)
    928 #define IDXGISurface_Unmap(This) (This)->lpVtbl->Unmap(This)
    929 #else
    930 /*** IUnknown methods ***/
    931 static inline HRESULT IDXGISurface_QueryInterface(IDXGISurface* This,REFIID riid,void **ppvObject) {
    932     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    933 }
    934 static inline ULONG IDXGISurface_AddRef(IDXGISurface* This) {
    935     return This->lpVtbl->AddRef(This);
    936 }
    937 static inline ULONG IDXGISurface_Release(IDXGISurface* This) {
    938     return This->lpVtbl->Release(This);
    939 }
    940 /*** IDXGIObject methods ***/
    941 static inline HRESULT IDXGISurface_SetPrivateData(IDXGISurface* This,REFGUID guid,UINT data_size,const void *data) {
    942     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
    943 }
    944 static inline HRESULT IDXGISurface_SetPrivateDataInterface(IDXGISurface* This,REFGUID guid,const IUnknown *object) {
    945     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
    946 }
    947 static inline HRESULT IDXGISurface_GetPrivateData(IDXGISurface* This,REFGUID guid,UINT *data_size,void *data) {
    948     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
    949 }
    950 static inline HRESULT IDXGISurface_GetParent(IDXGISurface* This,REFIID riid,void **parent) {
    951     return This->lpVtbl->GetParent(This,riid,parent);
    952 }
    953 /*** IDXGIDeviceSubObject methods ***/
    954 static inline HRESULT IDXGISurface_GetDevice(IDXGISurface* This,REFIID riid,void **device) {
    955     return This->lpVtbl->GetDevice(This,riid,device);
    956 }
    957 /*** IDXGISurface methods ***/
    958 static inline HRESULT IDXGISurface_GetDesc(IDXGISurface* This,DXGI_SURFACE_DESC *desc) {
    959     return This->lpVtbl->GetDesc(This,desc);
    960 }
    961 static inline HRESULT IDXGISurface_Map(IDXGISurface* This,DXGI_MAPPED_RECT *mapped_rect,UINT flags) {
    962     return This->lpVtbl->Map(This,mapped_rect,flags);
    963 }
    964 static inline HRESULT IDXGISurface_Unmap(IDXGISurface* This) {
    965     return This->lpVtbl->Unmap(This);
    966 }
    967 #endif
    968 #endif
    969 
    970 #endif
    971 
    972 
    973 #endif  /* __IDXGISurface_INTERFACE_DEFINED__ */
    974 
    975 /*****************************************************************************
    976  * IDXGISurface1 interface
    977  */
    978 #ifndef __IDXGISurface1_INTERFACE_DEFINED__
    979 #define __IDXGISurface1_INTERFACE_DEFINED__
    980 
    981 DEFINE_GUID(IID_IDXGISurface1, 0x4ae63092, 0x6327, 0x4c1b, 0x80,0xae, 0xbf,0xe1,0x2e,0xa3,0x2b,0x86);
    982 #if defined(__cplusplus) && !defined(CINTERFACE)
    983 MIDL_INTERFACE("4ae63092-6327-4c1b-80ae-bfe12ea32b86")
    984 IDXGISurface1 : public IDXGISurface
    985 {
    986     virtual HRESULT STDMETHODCALLTYPE GetDC(
    987         WINBOOL discard,
    988         HDC *hdc) = 0;
    989 
    990     virtual HRESULT STDMETHODCALLTYPE ReleaseDC(
    991         RECT *dirty_rect) = 0;
    992 
    993 };
    994 #ifdef __CRT_UUID_DECL
    995 __CRT_UUID_DECL(IDXGISurface1, 0x4ae63092, 0x6327, 0x4c1b, 0x80,0xae, 0xbf,0xe1,0x2e,0xa3,0x2b,0x86)
    996 #endif
    997 #else
    998 typedef struct IDXGISurface1Vtbl {
    999     BEGIN_INTERFACE
   1000 
   1001     /*** IUnknown methods ***/
   1002     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1003         IDXGISurface1 *This,
   1004         REFIID riid,
   1005         void **ppvObject);
   1006 
   1007     ULONG (STDMETHODCALLTYPE *AddRef)(
   1008         IDXGISurface1 *This);
   1009 
   1010     ULONG (STDMETHODCALLTYPE *Release)(
   1011         IDXGISurface1 *This);
   1012 
   1013     /*** IDXGIObject methods ***/
   1014     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   1015         IDXGISurface1 *This,
   1016         REFGUID guid,
   1017         UINT data_size,
   1018         const void *data);
   1019 
   1020     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   1021         IDXGISurface1 *This,
   1022         REFGUID guid,
   1023         const IUnknown *object);
   1024 
   1025     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   1026         IDXGISurface1 *This,
   1027         REFGUID guid,
   1028         UINT *data_size,
   1029         void *data);
   1030 
   1031     HRESULT (STDMETHODCALLTYPE *GetParent)(
   1032         IDXGISurface1 *This,
   1033         REFIID riid,
   1034         void **parent);
   1035 
   1036     /*** IDXGIDeviceSubObject methods ***/
   1037     HRESULT (STDMETHODCALLTYPE *GetDevice)(
   1038         IDXGISurface1 *This,
   1039         REFIID riid,
   1040         void **device);
   1041 
   1042     /*** IDXGISurface methods ***/
   1043     HRESULT (STDMETHODCALLTYPE *GetDesc)(
   1044         IDXGISurface1 *This,
   1045         DXGI_SURFACE_DESC *desc);
   1046 
   1047     HRESULT (STDMETHODCALLTYPE *Map)(
   1048         IDXGISurface1 *This,
   1049         DXGI_MAPPED_RECT *mapped_rect,
   1050         UINT flags);
   1051 
   1052     HRESULT (STDMETHODCALLTYPE *Unmap)(
   1053         IDXGISurface1 *This);
   1054 
   1055     /*** IDXGISurface1 methods ***/
   1056     HRESULT (STDMETHODCALLTYPE *GetDC)(
   1057         IDXGISurface1 *This,
   1058         WINBOOL discard,
   1059         HDC *hdc);
   1060 
   1061     HRESULT (STDMETHODCALLTYPE *ReleaseDC)(
   1062         IDXGISurface1 *This,
   1063         RECT *dirty_rect);
   1064 
   1065     END_INTERFACE
   1066 } IDXGISurface1Vtbl;
   1067 
   1068 interface IDXGISurface1 {
   1069     CONST_VTBL IDXGISurface1Vtbl* lpVtbl;
   1070 };
   1071 
   1072 #ifdef COBJMACROS
   1073 #ifndef WIDL_C_INLINE_WRAPPERS
   1074 /*** IUnknown methods ***/
   1075 #define IDXGISurface1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1076 #define IDXGISurface1_AddRef(This) (This)->lpVtbl->AddRef(This)
   1077 #define IDXGISurface1_Release(This) (This)->lpVtbl->Release(This)
   1078 /*** IDXGIObject methods ***/
   1079 #define IDXGISurface1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
   1080 #define IDXGISurface1_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
   1081 #define IDXGISurface1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
   1082 #define IDXGISurface1_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
   1083 /*** IDXGIDeviceSubObject methods ***/
   1084 #define IDXGISurface1_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
   1085 /*** IDXGISurface methods ***/
   1086 #define IDXGISurface1_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
   1087 #define IDXGISurface1_Map(This,mapped_rect,flags) (This)->lpVtbl->Map(This,mapped_rect,flags)
   1088 #define IDXGISurface1_Unmap(This) (This)->lpVtbl->Unmap(This)
   1089 /*** IDXGISurface1 methods ***/
   1090 #define IDXGISurface1_GetDC(This,discard,hdc) (This)->lpVtbl->GetDC(This,discard,hdc)
   1091 #define IDXGISurface1_ReleaseDC(This,dirty_rect) (This)->lpVtbl->ReleaseDC(This,dirty_rect)
   1092 #else
   1093 /*** IUnknown methods ***/
   1094 static inline HRESULT IDXGISurface1_QueryInterface(IDXGISurface1* This,REFIID riid,void **ppvObject) {
   1095     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1096 }
   1097 static inline ULONG IDXGISurface1_AddRef(IDXGISurface1* This) {
   1098     return This->lpVtbl->AddRef(This);
   1099 }
   1100 static inline ULONG IDXGISurface1_Release(IDXGISurface1* This) {
   1101     return This->lpVtbl->Release(This);
   1102 }
   1103 /*** IDXGIObject methods ***/
   1104 static inline HRESULT IDXGISurface1_SetPrivateData(IDXGISurface1* This,REFGUID guid,UINT data_size,const void *data) {
   1105     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   1106 }
   1107 static inline HRESULT IDXGISurface1_SetPrivateDataInterface(IDXGISurface1* This,REFGUID guid,const IUnknown *object) {
   1108     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
   1109 }
   1110 static inline HRESULT IDXGISurface1_GetPrivateData(IDXGISurface1* This,REFGUID guid,UINT *data_size,void *data) {
   1111     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   1112 }
   1113 static inline HRESULT IDXGISurface1_GetParent(IDXGISurface1* This,REFIID riid,void **parent) {
   1114     return This->lpVtbl->GetParent(This,riid,parent);
   1115 }
   1116 /*** IDXGIDeviceSubObject methods ***/
   1117 static inline HRESULT IDXGISurface1_GetDevice(IDXGISurface1* This,REFIID riid,void **device) {
   1118     return This->lpVtbl->GetDevice(This,riid,device);
   1119 }
   1120 /*** IDXGISurface methods ***/
   1121 static inline HRESULT IDXGISurface1_GetDesc(IDXGISurface1* This,DXGI_SURFACE_DESC *desc) {
   1122     return This->lpVtbl->GetDesc(This,desc);
   1123 }
   1124 static inline HRESULT IDXGISurface1_Map(IDXGISurface1* This,DXGI_MAPPED_RECT *mapped_rect,UINT flags) {
   1125     return This->lpVtbl->Map(This,mapped_rect,flags);
   1126 }
   1127 static inline HRESULT IDXGISurface1_Unmap(IDXGISurface1* This) {
   1128     return This->lpVtbl->Unmap(This);
   1129 }
   1130 /*** IDXGISurface1 methods ***/
   1131 static inline HRESULT IDXGISurface1_GetDC(IDXGISurface1* This,WINBOOL discard,HDC *hdc) {
   1132     return This->lpVtbl->GetDC(This,discard,hdc);
   1133 }
   1134 static inline HRESULT IDXGISurface1_ReleaseDC(IDXGISurface1* This,RECT *dirty_rect) {
   1135     return This->lpVtbl->ReleaseDC(This,dirty_rect);
   1136 }
   1137 #endif
   1138 #endif
   1139 
   1140 #endif
   1141 
   1142 
   1143 #endif  /* __IDXGISurface1_INTERFACE_DEFINED__ */
   1144 
   1145 /*****************************************************************************
   1146  * IDXGIOutput interface
   1147  */
   1148 #ifndef __IDXGIOutput_INTERFACE_DEFINED__
   1149 #define __IDXGIOutput_INTERFACE_DEFINED__
   1150 
   1151 DEFINE_GUID(IID_IDXGIOutput, 0xae02eedb, 0xc735, 0x4690, 0x8d,0x52, 0x5a,0x8d,0xc2,0x02,0x13,0xaa);
   1152 #if defined(__cplusplus) && !defined(CINTERFACE)
   1153 MIDL_INTERFACE("ae02eedb-c735-4690-8d52-5a8dc20213aa")
   1154 IDXGIOutput : public IDXGIObject
   1155 {
   1156     virtual HRESULT STDMETHODCALLTYPE GetDesc(
   1157         DXGI_OUTPUT_DESC *desc) = 0;
   1158 
   1159     virtual HRESULT STDMETHODCALLTYPE GetDisplayModeList(
   1160         DXGI_FORMAT format,
   1161         UINT flags,
   1162         UINT *mode_count,
   1163         DXGI_MODE_DESC *desc) = 0;
   1164 
   1165     virtual HRESULT STDMETHODCALLTYPE FindClosestMatchingMode(
   1166         const DXGI_MODE_DESC *mode,
   1167         DXGI_MODE_DESC *closest_match,
   1168         IUnknown *device) = 0;
   1169 
   1170     virtual HRESULT STDMETHODCALLTYPE WaitForVBlank(
   1171         ) = 0;
   1172 
   1173     virtual HRESULT STDMETHODCALLTYPE TakeOwnership(
   1174         IUnknown *device,
   1175         WINBOOL exclusive) = 0;
   1176 
   1177     virtual void STDMETHODCALLTYPE ReleaseOwnership(
   1178         ) = 0;
   1179 
   1180     virtual HRESULT STDMETHODCALLTYPE GetGammaControlCapabilities(
   1181         DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps) = 0;
   1182 
   1183     virtual HRESULT STDMETHODCALLTYPE SetGammaControl(
   1184         const DXGI_GAMMA_CONTROL *gamma_control) = 0;
   1185 
   1186     virtual HRESULT STDMETHODCALLTYPE GetGammaControl(
   1187         DXGI_GAMMA_CONTROL *gamma_control) = 0;
   1188 
   1189     virtual HRESULT STDMETHODCALLTYPE SetDisplaySurface(
   1190         IDXGISurface *surface) = 0;
   1191 
   1192     virtual HRESULT STDMETHODCALLTYPE GetDisplaySurfaceData(
   1193         IDXGISurface *surface) = 0;
   1194 
   1195     virtual HRESULT STDMETHODCALLTYPE GetFrameStatistics(
   1196         DXGI_FRAME_STATISTICS *stats) = 0;
   1197 
   1198 };
   1199 #ifdef __CRT_UUID_DECL
   1200 __CRT_UUID_DECL(IDXGIOutput, 0xae02eedb, 0xc735, 0x4690, 0x8d,0x52, 0x5a,0x8d,0xc2,0x02,0x13,0xaa)
   1201 #endif
   1202 #else
   1203 typedef struct IDXGIOutputVtbl {
   1204     BEGIN_INTERFACE
   1205 
   1206     /*** IUnknown methods ***/
   1207     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1208         IDXGIOutput *This,
   1209         REFIID riid,
   1210         void **ppvObject);
   1211 
   1212     ULONG (STDMETHODCALLTYPE *AddRef)(
   1213         IDXGIOutput *This);
   1214 
   1215     ULONG (STDMETHODCALLTYPE *Release)(
   1216         IDXGIOutput *This);
   1217 
   1218     /*** IDXGIObject methods ***/
   1219     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   1220         IDXGIOutput *This,
   1221         REFGUID guid,
   1222         UINT data_size,
   1223         const void *data);
   1224 
   1225     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   1226         IDXGIOutput *This,
   1227         REFGUID guid,
   1228         const IUnknown *object);
   1229 
   1230     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   1231         IDXGIOutput *This,
   1232         REFGUID guid,
   1233         UINT *data_size,
   1234         void *data);
   1235 
   1236     HRESULT (STDMETHODCALLTYPE *GetParent)(
   1237         IDXGIOutput *This,
   1238         REFIID riid,
   1239         void **parent);
   1240 
   1241     /*** IDXGIOutput methods ***/
   1242     HRESULT (STDMETHODCALLTYPE *GetDesc)(
   1243         IDXGIOutput *This,
   1244         DXGI_OUTPUT_DESC *desc);
   1245 
   1246     HRESULT (STDMETHODCALLTYPE *GetDisplayModeList)(
   1247         IDXGIOutput *This,
   1248         DXGI_FORMAT format,
   1249         UINT flags,
   1250         UINT *mode_count,
   1251         DXGI_MODE_DESC *desc);
   1252 
   1253     HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode)(
   1254         IDXGIOutput *This,
   1255         const DXGI_MODE_DESC *mode,
   1256         DXGI_MODE_DESC *closest_match,
   1257         IUnknown *device);
   1258 
   1259     HRESULT (STDMETHODCALLTYPE *WaitForVBlank)(
   1260         IDXGIOutput *This);
   1261 
   1262     HRESULT (STDMETHODCALLTYPE *TakeOwnership)(
   1263         IDXGIOutput *This,
   1264         IUnknown *device,
   1265         WINBOOL exclusive);
   1266 
   1267     void (STDMETHODCALLTYPE *ReleaseOwnership)(
   1268         IDXGIOutput *This);
   1269 
   1270     HRESULT (STDMETHODCALLTYPE *GetGammaControlCapabilities)(
   1271         IDXGIOutput *This,
   1272         DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps);
   1273 
   1274     HRESULT (STDMETHODCALLTYPE *SetGammaControl)(
   1275         IDXGIOutput *This,
   1276         const DXGI_GAMMA_CONTROL *gamma_control);
   1277 
   1278     HRESULT (STDMETHODCALLTYPE *GetGammaControl)(
   1279         IDXGIOutput *This,
   1280         DXGI_GAMMA_CONTROL *gamma_control);
   1281 
   1282     HRESULT (STDMETHODCALLTYPE *SetDisplaySurface)(
   1283         IDXGIOutput *This,
   1284         IDXGISurface *surface);
   1285 
   1286     HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData)(
   1287         IDXGIOutput *This,
   1288         IDXGISurface *surface);
   1289 
   1290     HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)(
   1291         IDXGIOutput *This,
   1292         DXGI_FRAME_STATISTICS *stats);
   1293 
   1294     END_INTERFACE
   1295 } IDXGIOutputVtbl;
   1296 
   1297 interface IDXGIOutput {
   1298     CONST_VTBL IDXGIOutputVtbl* lpVtbl;
   1299 };
   1300 
   1301 #ifdef COBJMACROS
   1302 #ifndef WIDL_C_INLINE_WRAPPERS
   1303 /*** IUnknown methods ***/
   1304 #define IDXGIOutput_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1305 #define IDXGIOutput_AddRef(This) (This)->lpVtbl->AddRef(This)
   1306 #define IDXGIOutput_Release(This) (This)->lpVtbl->Release(This)
   1307 /*** IDXGIObject methods ***/
   1308 #define IDXGIOutput_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
   1309 #define IDXGIOutput_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
   1310 #define IDXGIOutput_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
   1311 #define IDXGIOutput_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
   1312 /*** IDXGIOutput methods ***/
   1313 #define IDXGIOutput_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
   1314 #define IDXGIOutput_GetDisplayModeList(This,format,flags,mode_count,desc) (This)->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc)
   1315 #define IDXGIOutput_FindClosestMatchingMode(This,mode,closest_match,device) (This)->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device)
   1316 #define IDXGIOutput_WaitForVBlank(This) (This)->lpVtbl->WaitForVBlank(This)
   1317 #define IDXGIOutput_TakeOwnership(This,device,exclusive) (This)->lpVtbl->TakeOwnership(This,device,exclusive)
   1318 #define IDXGIOutput_ReleaseOwnership(This) (This)->lpVtbl->ReleaseOwnership(This)
   1319 #define IDXGIOutput_GetGammaControlCapabilities(This,gamma_caps) (This)->lpVtbl->GetGammaControlCapabilities(This,gamma_caps)
   1320 #define IDXGIOutput_SetGammaControl(This,gamma_control) (This)->lpVtbl->SetGammaControl(This,gamma_control)
   1321 #define IDXGIOutput_GetGammaControl(This,gamma_control) (This)->lpVtbl->GetGammaControl(This,gamma_control)
   1322 #define IDXGIOutput_SetDisplaySurface(This,surface) (This)->lpVtbl->SetDisplaySurface(This,surface)
   1323 #define IDXGIOutput_GetDisplaySurfaceData(This,surface) (This)->lpVtbl->GetDisplaySurfaceData(This,surface)
   1324 #define IDXGIOutput_GetFrameStatistics(This,stats) (This)->lpVtbl->GetFrameStatistics(This,stats)
   1325 #else
   1326 /*** IUnknown methods ***/
   1327 static inline HRESULT IDXGIOutput_QueryInterface(IDXGIOutput* This,REFIID riid,void **ppvObject) {
   1328     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1329 }
   1330 static inline ULONG IDXGIOutput_AddRef(IDXGIOutput* This) {
   1331     return This->lpVtbl->AddRef(This);
   1332 }
   1333 static inline ULONG IDXGIOutput_Release(IDXGIOutput* This) {
   1334     return This->lpVtbl->Release(This);
   1335 }
   1336 /*** IDXGIObject methods ***/
   1337 static inline HRESULT IDXGIOutput_SetPrivateData(IDXGIOutput* This,REFGUID guid,UINT data_size,const void *data) {
   1338     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   1339 }
   1340 static inline HRESULT IDXGIOutput_SetPrivateDataInterface(IDXGIOutput* This,REFGUID guid,const IUnknown *object) {
   1341     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
   1342 }
   1343 static inline HRESULT IDXGIOutput_GetPrivateData(IDXGIOutput* This,REFGUID guid,UINT *data_size,void *data) {
   1344     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   1345 }
   1346 static inline HRESULT IDXGIOutput_GetParent(IDXGIOutput* This,REFIID riid,void **parent) {
   1347     return This->lpVtbl->GetParent(This,riid,parent);
   1348 }
   1349 /*** IDXGIOutput methods ***/
   1350 static inline HRESULT IDXGIOutput_GetDesc(IDXGIOutput* This,DXGI_OUTPUT_DESC *desc) {
   1351     return This->lpVtbl->GetDesc(This,desc);
   1352 }
   1353 static inline HRESULT IDXGIOutput_GetDisplayModeList(IDXGIOutput* This,DXGI_FORMAT format,UINT flags,UINT *mode_count,DXGI_MODE_DESC *desc) {
   1354     return This->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc);
   1355 }
   1356 static inline HRESULT IDXGIOutput_FindClosestMatchingMode(IDXGIOutput* This,const DXGI_MODE_DESC *mode,DXGI_MODE_DESC *closest_match,IUnknown *device) {
   1357     return This->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device);
   1358 }
   1359 static inline HRESULT IDXGIOutput_WaitForVBlank(IDXGIOutput* This) {
   1360     return This->lpVtbl->WaitForVBlank(This);
   1361 }
   1362 static inline HRESULT IDXGIOutput_TakeOwnership(IDXGIOutput* This,IUnknown *device,WINBOOL exclusive) {
   1363     return This->lpVtbl->TakeOwnership(This,device,exclusive);
   1364 }
   1365 static inline void IDXGIOutput_ReleaseOwnership(IDXGIOutput* This) {
   1366     This->lpVtbl->ReleaseOwnership(This);
   1367 }
   1368 static inline HRESULT IDXGIOutput_GetGammaControlCapabilities(IDXGIOutput* This,DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps) {
   1369     return This->lpVtbl->GetGammaControlCapabilities(This,gamma_caps);
   1370 }
   1371 static inline HRESULT IDXGIOutput_SetGammaControl(IDXGIOutput* This,const DXGI_GAMMA_CONTROL *gamma_control) {
   1372     return This->lpVtbl->SetGammaControl(This,gamma_control);
   1373 }
   1374 static inline HRESULT IDXGIOutput_GetGammaControl(IDXGIOutput* This,DXGI_GAMMA_CONTROL *gamma_control) {
   1375     return This->lpVtbl->GetGammaControl(This,gamma_control);
   1376 }
   1377 static inline HRESULT IDXGIOutput_SetDisplaySurface(IDXGIOutput* This,IDXGISurface *surface) {
   1378     return This->lpVtbl->SetDisplaySurface(This,surface);
   1379 }
   1380 static inline HRESULT IDXGIOutput_GetDisplaySurfaceData(IDXGIOutput* This,IDXGISurface *surface) {
   1381     return This->lpVtbl->GetDisplaySurfaceData(This,surface);
   1382 }
   1383 static inline HRESULT IDXGIOutput_GetFrameStatistics(IDXGIOutput* This,DXGI_FRAME_STATISTICS *stats) {
   1384     return This->lpVtbl->GetFrameStatistics(This,stats);
   1385 }
   1386 #endif
   1387 #endif
   1388 
   1389 #endif
   1390 
   1391 
   1392 #endif  /* __IDXGIOutput_INTERFACE_DEFINED__ */
   1393 
   1394 /*****************************************************************************
   1395  * IDXGIAdapter interface
   1396  */
   1397 #ifndef __IDXGIAdapter_INTERFACE_DEFINED__
   1398 #define __IDXGIAdapter_INTERFACE_DEFINED__
   1399 
   1400 DEFINE_GUID(IID_IDXGIAdapter, 0x2411e7e1, 0x12ac, 0x4ccf, 0xbd,0x14, 0x97,0x98,0xe8,0x53,0x4d,0xc0);
   1401 #if defined(__cplusplus) && !defined(CINTERFACE)
   1402 MIDL_INTERFACE("2411e7e1-12ac-4ccf-bd14-9798e8534dc0")
   1403 IDXGIAdapter : public IDXGIObject
   1404 {
   1405     virtual HRESULT STDMETHODCALLTYPE EnumOutputs(
   1406         UINT output_idx,
   1407         IDXGIOutput **output) = 0;
   1408 
   1409     virtual HRESULT STDMETHODCALLTYPE GetDesc(
   1410         DXGI_ADAPTER_DESC *desc) = 0;
   1411 
   1412     virtual HRESULT STDMETHODCALLTYPE CheckInterfaceSupport(
   1413         REFGUID guid,
   1414         LARGE_INTEGER *umd_version) = 0;
   1415 
   1416 };
   1417 #ifdef __CRT_UUID_DECL
   1418 __CRT_UUID_DECL(IDXGIAdapter, 0x2411e7e1, 0x12ac, 0x4ccf, 0xbd,0x14, 0x97,0x98,0xe8,0x53,0x4d,0xc0)
   1419 #endif
   1420 #else
   1421 typedef struct IDXGIAdapterVtbl {
   1422     BEGIN_INTERFACE
   1423 
   1424     /*** IUnknown methods ***/
   1425     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1426         IDXGIAdapter *This,
   1427         REFIID riid,
   1428         void **ppvObject);
   1429 
   1430     ULONG (STDMETHODCALLTYPE *AddRef)(
   1431         IDXGIAdapter *This);
   1432 
   1433     ULONG (STDMETHODCALLTYPE *Release)(
   1434         IDXGIAdapter *This);
   1435 
   1436     /*** IDXGIObject methods ***/
   1437     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   1438         IDXGIAdapter *This,
   1439         REFGUID guid,
   1440         UINT data_size,
   1441         const void *data);
   1442 
   1443     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   1444         IDXGIAdapter *This,
   1445         REFGUID guid,
   1446         const IUnknown *object);
   1447 
   1448     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   1449         IDXGIAdapter *This,
   1450         REFGUID guid,
   1451         UINT *data_size,
   1452         void *data);
   1453 
   1454     HRESULT (STDMETHODCALLTYPE *GetParent)(
   1455         IDXGIAdapter *This,
   1456         REFIID riid,
   1457         void **parent);
   1458 
   1459     /*** IDXGIAdapter methods ***/
   1460     HRESULT (STDMETHODCALLTYPE *EnumOutputs)(
   1461         IDXGIAdapter *This,
   1462         UINT output_idx,
   1463         IDXGIOutput **output);
   1464 
   1465     HRESULT (STDMETHODCALLTYPE *GetDesc)(
   1466         IDXGIAdapter *This,
   1467         DXGI_ADAPTER_DESC *desc);
   1468 
   1469     HRESULT (STDMETHODCALLTYPE *CheckInterfaceSupport)(
   1470         IDXGIAdapter *This,
   1471         REFGUID guid,
   1472         LARGE_INTEGER *umd_version);
   1473 
   1474     END_INTERFACE
   1475 } IDXGIAdapterVtbl;
   1476 
   1477 interface IDXGIAdapter {
   1478     CONST_VTBL IDXGIAdapterVtbl* lpVtbl;
   1479 };
   1480 
   1481 #ifdef COBJMACROS
   1482 #ifndef WIDL_C_INLINE_WRAPPERS
   1483 /*** IUnknown methods ***/
   1484 #define IDXGIAdapter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1485 #define IDXGIAdapter_AddRef(This) (This)->lpVtbl->AddRef(This)
   1486 #define IDXGIAdapter_Release(This) (This)->lpVtbl->Release(This)
   1487 /*** IDXGIObject methods ***/
   1488 #define IDXGIAdapter_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
   1489 #define IDXGIAdapter_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
   1490 #define IDXGIAdapter_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
   1491 #define IDXGIAdapter_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
   1492 /*** IDXGIAdapter methods ***/
   1493 #define IDXGIAdapter_EnumOutputs(This,output_idx,output) (This)->lpVtbl->EnumOutputs(This,output_idx,output)
   1494 #define IDXGIAdapter_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
   1495 #define IDXGIAdapter_CheckInterfaceSupport(This,guid,umd_version) (This)->lpVtbl->CheckInterfaceSupport(This,guid,umd_version)
   1496 #else
   1497 /*** IUnknown methods ***/
   1498 static inline HRESULT IDXGIAdapter_QueryInterface(IDXGIAdapter* This,REFIID riid,void **ppvObject) {
   1499     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1500 }
   1501 static inline ULONG IDXGIAdapter_AddRef(IDXGIAdapter* This) {
   1502     return This->lpVtbl->AddRef(This);
   1503 }
   1504 static inline ULONG IDXGIAdapter_Release(IDXGIAdapter* This) {
   1505     return This->lpVtbl->Release(This);
   1506 }
   1507 /*** IDXGIObject methods ***/
   1508 static inline HRESULT IDXGIAdapter_SetPrivateData(IDXGIAdapter* This,REFGUID guid,UINT data_size,const void *data) {
   1509     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   1510 }
   1511 static inline HRESULT IDXGIAdapter_SetPrivateDataInterface(IDXGIAdapter* This,REFGUID guid,const IUnknown *object) {
   1512     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
   1513 }
   1514 static inline HRESULT IDXGIAdapter_GetPrivateData(IDXGIAdapter* This,REFGUID guid,UINT *data_size,void *data) {
   1515     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   1516 }
   1517 static inline HRESULT IDXGIAdapter_GetParent(IDXGIAdapter* This,REFIID riid,void **parent) {
   1518     return This->lpVtbl->GetParent(This,riid,parent);
   1519 }
   1520 /*** IDXGIAdapter methods ***/
   1521 static inline HRESULT IDXGIAdapter_EnumOutputs(IDXGIAdapter* This,UINT output_idx,IDXGIOutput **output) {
   1522     return This->lpVtbl->EnumOutputs(This,output_idx,output);
   1523 }
   1524 static inline HRESULT IDXGIAdapter_GetDesc(IDXGIAdapter* This,DXGI_ADAPTER_DESC *desc) {
   1525     return This->lpVtbl->GetDesc(This,desc);
   1526 }
   1527 static inline HRESULT IDXGIAdapter_CheckInterfaceSupport(IDXGIAdapter* This,REFGUID guid,LARGE_INTEGER *umd_version) {
   1528     return This->lpVtbl->CheckInterfaceSupport(This,guid,umd_version);
   1529 }
   1530 #endif
   1531 #endif
   1532 
   1533 #endif
   1534 
   1535 
   1536 #endif  /* __IDXGIAdapter_INTERFACE_DEFINED__ */
   1537 
   1538 #define DXGI_MAX_SWAP_CHAIN_BUFFERS  (16)
   1539 #define DXGI_PRESENT_TEST                   __MSABI_LONG(0x00000001U)
   1540 #define DXGI_PRESENT_DO_NOT_SEQUENCE        __MSABI_LONG(0x00000002U)
   1541 #define DXGI_PRESENT_RESTART                __MSABI_LONG(0x00000004U)
   1542 #define DXGI_PRESENT_DO_NOT_WAIT            __MSABI_LONG(0x00000008U)
   1543 #define DXGI_PRESENT_STEREO_PREFER_RIGHT    __MSABI_LONG(0x00000010U)
   1544 #define DXGI_PRESENT_STEREO_TEMPORARY_MONO  __MSABI_LONG(0x00000020U)
   1545 #define DXGI_PRESENT_RESTRICT_TO_OUTPUT     __MSABI_LONG(0x00000040U)
   1546 #define DXGI_PRESENT_USE_DURATION           __MSABI_LONG(0x00000100U)
   1547 #define DXGI_PRESENT_ALLOW_TEARING          __MSABI_LONG(0x00000200U)
   1548 /*****************************************************************************
   1549  * IDXGISwapChain interface
   1550  */
   1551 #ifndef __IDXGISwapChain_INTERFACE_DEFINED__
   1552 #define __IDXGISwapChain_INTERFACE_DEFINED__
   1553 
   1554 DEFINE_GUID(IID_IDXGISwapChain, 0x310d36a0, 0xd2e7, 0x4c0a, 0xaa,0x04, 0x6a,0x9d,0x23,0xb8,0x88,0x6a);
   1555 #if defined(__cplusplus) && !defined(CINTERFACE)
   1556 MIDL_INTERFACE("310d36a0-d2e7-4c0a-aa04-6a9d23b8886a")
   1557 IDXGISwapChain : public IDXGIDeviceSubObject
   1558 {
   1559     virtual HRESULT STDMETHODCALLTYPE Present(
   1560         UINT sync_interval,
   1561         UINT flags) = 0;
   1562 
   1563     virtual HRESULT STDMETHODCALLTYPE GetBuffer(
   1564         UINT buffer_idx,
   1565         REFIID riid,
   1566         void **surface) = 0;
   1567 
   1568     virtual HRESULT STDMETHODCALLTYPE SetFullscreenState(
   1569         WINBOOL fullscreen,
   1570         IDXGIOutput *target) = 0;
   1571 
   1572     virtual HRESULT STDMETHODCALLTYPE GetFullscreenState(
   1573         WINBOOL *fullscreen,
   1574         IDXGIOutput **target) = 0;
   1575 
   1576     virtual HRESULT STDMETHODCALLTYPE GetDesc(
   1577         DXGI_SWAP_CHAIN_DESC *desc) = 0;
   1578 
   1579     virtual HRESULT STDMETHODCALLTYPE ResizeBuffers(
   1580         UINT buffer_count,
   1581         UINT width,
   1582         UINT height,
   1583         DXGI_FORMAT format,
   1584         UINT flags) = 0;
   1585 
   1586     virtual HRESULT STDMETHODCALLTYPE ResizeTarget(
   1587         const DXGI_MODE_DESC *target_mode_desc) = 0;
   1588 
   1589     virtual HRESULT STDMETHODCALLTYPE GetContainingOutput(
   1590         IDXGIOutput **output) = 0;
   1591 
   1592     virtual HRESULT STDMETHODCALLTYPE GetFrameStatistics(
   1593         DXGI_FRAME_STATISTICS *stats) = 0;
   1594 
   1595     virtual HRESULT STDMETHODCALLTYPE GetLastPresentCount(
   1596         UINT *last_present_count) = 0;
   1597 
   1598 };
   1599 #ifdef __CRT_UUID_DECL
   1600 __CRT_UUID_DECL(IDXGISwapChain, 0x310d36a0, 0xd2e7, 0x4c0a, 0xaa,0x04, 0x6a,0x9d,0x23,0xb8,0x88,0x6a)
   1601 #endif
   1602 #else
   1603 typedef struct IDXGISwapChainVtbl {
   1604     BEGIN_INTERFACE
   1605 
   1606     /*** IUnknown methods ***/
   1607     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1608         IDXGISwapChain *This,
   1609         REFIID riid,
   1610         void **ppvObject);
   1611 
   1612     ULONG (STDMETHODCALLTYPE *AddRef)(
   1613         IDXGISwapChain *This);
   1614 
   1615     ULONG (STDMETHODCALLTYPE *Release)(
   1616         IDXGISwapChain *This);
   1617 
   1618     /*** IDXGIObject methods ***/
   1619     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   1620         IDXGISwapChain *This,
   1621         REFGUID guid,
   1622         UINT data_size,
   1623         const void *data);
   1624 
   1625     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   1626         IDXGISwapChain *This,
   1627         REFGUID guid,
   1628         const IUnknown *object);
   1629 
   1630     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   1631         IDXGISwapChain *This,
   1632         REFGUID guid,
   1633         UINT *data_size,
   1634         void *data);
   1635 
   1636     HRESULT (STDMETHODCALLTYPE *GetParent)(
   1637         IDXGISwapChain *This,
   1638         REFIID riid,
   1639         void **parent);
   1640 
   1641     /*** IDXGIDeviceSubObject methods ***/
   1642     HRESULT (STDMETHODCALLTYPE *GetDevice)(
   1643         IDXGISwapChain *This,
   1644         REFIID riid,
   1645         void **device);
   1646 
   1647     /*** IDXGISwapChain methods ***/
   1648     HRESULT (STDMETHODCALLTYPE *Present)(
   1649         IDXGISwapChain *This,
   1650         UINT sync_interval,
   1651         UINT flags);
   1652 
   1653     HRESULT (STDMETHODCALLTYPE *GetBuffer)(
   1654         IDXGISwapChain *This,
   1655         UINT buffer_idx,
   1656         REFIID riid,
   1657         void **surface);
   1658 
   1659     HRESULT (STDMETHODCALLTYPE *SetFullscreenState)(
   1660         IDXGISwapChain *This,
   1661         WINBOOL fullscreen,
   1662         IDXGIOutput *target);
   1663 
   1664     HRESULT (STDMETHODCALLTYPE *GetFullscreenState)(
   1665         IDXGISwapChain *This,
   1666         WINBOOL *fullscreen,
   1667         IDXGIOutput **target);
   1668 
   1669     HRESULT (STDMETHODCALLTYPE *GetDesc)(
   1670         IDXGISwapChain *This,
   1671         DXGI_SWAP_CHAIN_DESC *desc);
   1672 
   1673     HRESULT (STDMETHODCALLTYPE *ResizeBuffers)(
   1674         IDXGISwapChain *This,
   1675         UINT buffer_count,
   1676         UINT width,
   1677         UINT height,
   1678         DXGI_FORMAT format,
   1679         UINT flags);
   1680 
   1681     HRESULT (STDMETHODCALLTYPE *ResizeTarget)(
   1682         IDXGISwapChain *This,
   1683         const DXGI_MODE_DESC *target_mode_desc);
   1684 
   1685     HRESULT (STDMETHODCALLTYPE *GetContainingOutput)(
   1686         IDXGISwapChain *This,
   1687         IDXGIOutput **output);
   1688 
   1689     HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)(
   1690         IDXGISwapChain *This,
   1691         DXGI_FRAME_STATISTICS *stats);
   1692 
   1693     HRESULT (STDMETHODCALLTYPE *GetLastPresentCount)(
   1694         IDXGISwapChain *This,
   1695         UINT *last_present_count);
   1696 
   1697     END_INTERFACE
   1698 } IDXGISwapChainVtbl;
   1699 
   1700 interface IDXGISwapChain {
   1701     CONST_VTBL IDXGISwapChainVtbl* lpVtbl;
   1702 };
   1703 
   1704 #ifdef COBJMACROS
   1705 #ifndef WIDL_C_INLINE_WRAPPERS
   1706 /*** IUnknown methods ***/
   1707 #define IDXGISwapChain_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1708 #define IDXGISwapChain_AddRef(This) (This)->lpVtbl->AddRef(This)
   1709 #define IDXGISwapChain_Release(This) (This)->lpVtbl->Release(This)
   1710 /*** IDXGIObject methods ***/
   1711 #define IDXGISwapChain_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
   1712 #define IDXGISwapChain_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
   1713 #define IDXGISwapChain_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
   1714 #define IDXGISwapChain_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
   1715 /*** IDXGIDeviceSubObject methods ***/
   1716 #define IDXGISwapChain_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
   1717 /*** IDXGISwapChain methods ***/
   1718 #define IDXGISwapChain_Present(This,sync_interval,flags) (This)->lpVtbl->Present(This,sync_interval,flags)
   1719 #define IDXGISwapChain_GetBuffer(This,buffer_idx,riid,surface) (This)->lpVtbl->GetBuffer(This,buffer_idx,riid,surface)
   1720 #define IDXGISwapChain_SetFullscreenState(This,fullscreen,target) (This)->lpVtbl->SetFullscreenState(This,fullscreen,target)
   1721 #define IDXGISwapChain_GetFullscreenState(This,fullscreen,target) (This)->lpVtbl->GetFullscreenState(This,fullscreen,target)
   1722 #define IDXGISwapChain_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
   1723 #define IDXGISwapChain_ResizeBuffers(This,buffer_count,width,height,format,flags) (This)->lpVtbl->ResizeBuffers(This,buffer_count,width,height,format,flags)
   1724 #define IDXGISwapChain_ResizeTarget(This,target_mode_desc) (This)->lpVtbl->ResizeTarget(This,target_mode_desc)
   1725 #define IDXGISwapChain_GetContainingOutput(This,output) (This)->lpVtbl->GetContainingOutput(This,output)
   1726 #define IDXGISwapChain_GetFrameStatistics(This,stats) (This)->lpVtbl->GetFrameStatistics(This,stats)
   1727 #define IDXGISwapChain_GetLastPresentCount(This,last_present_count) (This)->lpVtbl->GetLastPresentCount(This,last_present_count)
   1728 #else
   1729 /*** IUnknown methods ***/
   1730 static inline HRESULT IDXGISwapChain_QueryInterface(IDXGISwapChain* This,REFIID riid,void **ppvObject) {
   1731     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1732 }
   1733 static inline ULONG IDXGISwapChain_AddRef(IDXGISwapChain* This) {
   1734     return This->lpVtbl->AddRef(This);
   1735 }
   1736 static inline ULONG IDXGISwapChain_Release(IDXGISwapChain* This) {
   1737     return This->lpVtbl->Release(This);
   1738 }
   1739 /*** IDXGIObject methods ***/
   1740 static inline HRESULT IDXGISwapChain_SetPrivateData(IDXGISwapChain* This,REFGUID guid,UINT data_size,const void *data) {
   1741     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   1742 }
   1743 static inline HRESULT IDXGISwapChain_SetPrivateDataInterface(IDXGISwapChain* This,REFGUID guid,const IUnknown *object) {
   1744     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
   1745 }
   1746 static inline HRESULT IDXGISwapChain_GetPrivateData(IDXGISwapChain* This,REFGUID guid,UINT *data_size,void *data) {
   1747     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   1748 }
   1749 static inline HRESULT IDXGISwapChain_GetParent(IDXGISwapChain* This,REFIID riid,void **parent) {
   1750     return This->lpVtbl->GetParent(This,riid,parent);
   1751 }
   1752 /*** IDXGIDeviceSubObject methods ***/
   1753 static inline HRESULT IDXGISwapChain_GetDevice(IDXGISwapChain* This,REFIID riid,void **device) {
   1754     return This->lpVtbl->GetDevice(This,riid,device);
   1755 }
   1756 /*** IDXGISwapChain methods ***/
   1757 static inline HRESULT IDXGISwapChain_Present(IDXGISwapChain* This,UINT sync_interval,UINT flags) {
   1758     return This->lpVtbl->Present(This,sync_interval,flags);
   1759 }
   1760 static inline HRESULT IDXGISwapChain_GetBuffer(IDXGISwapChain* This,UINT buffer_idx,REFIID riid,void **surface) {
   1761     return This->lpVtbl->GetBuffer(This,buffer_idx,riid,surface);
   1762 }
   1763 static inline HRESULT IDXGISwapChain_SetFullscreenState(IDXGISwapChain* This,WINBOOL fullscreen,IDXGIOutput *target) {
   1764     return This->lpVtbl->SetFullscreenState(This,fullscreen,target);
   1765 }
   1766 static inline HRESULT IDXGISwapChain_GetFullscreenState(IDXGISwapChain* This,WINBOOL *fullscreen,IDXGIOutput **target) {
   1767     return This->lpVtbl->GetFullscreenState(This,fullscreen,target);
   1768 }
   1769 static inline HRESULT IDXGISwapChain_GetDesc(IDXGISwapChain* This,DXGI_SWAP_CHAIN_DESC *desc) {
   1770     return This->lpVtbl->GetDesc(This,desc);
   1771 }
   1772 static inline HRESULT IDXGISwapChain_ResizeBuffers(IDXGISwapChain* This,UINT buffer_count,UINT width,UINT height,DXGI_FORMAT format,UINT flags) {
   1773     return This->lpVtbl->ResizeBuffers(This,buffer_count,width,height,format,flags);
   1774 }
   1775 static inline HRESULT IDXGISwapChain_ResizeTarget(IDXGISwapChain* This,const DXGI_MODE_DESC *target_mode_desc) {
   1776     return This->lpVtbl->ResizeTarget(This,target_mode_desc);
   1777 }
   1778 static inline HRESULT IDXGISwapChain_GetContainingOutput(IDXGISwapChain* This,IDXGIOutput **output) {
   1779     return This->lpVtbl->GetContainingOutput(This,output);
   1780 }
   1781 static inline HRESULT IDXGISwapChain_GetFrameStatistics(IDXGISwapChain* This,DXGI_FRAME_STATISTICS *stats) {
   1782     return This->lpVtbl->GetFrameStatistics(This,stats);
   1783 }
   1784 static inline HRESULT IDXGISwapChain_GetLastPresentCount(IDXGISwapChain* This,UINT *last_present_count) {
   1785     return This->lpVtbl->GetLastPresentCount(This,last_present_count);
   1786 }
   1787 #endif
   1788 #endif
   1789 
   1790 #endif
   1791 
   1792 
   1793 #endif  /* __IDXGISwapChain_INTERFACE_DEFINED__ */
   1794 
   1795 #define DXGI_MWA_NO_WINDOW_CHANGES  0x1
   1796 #define DXGI_MWA_NO_ALT_ENTER       0x2
   1797 #define DXGI_MWA_NO_PRINT_SCREEN    0x4
   1798 #define DXGI_MWA_VALID              0x7
   1799 /*****************************************************************************
   1800  * IDXGIFactory interface
   1801  */
   1802 #ifndef __IDXGIFactory_INTERFACE_DEFINED__
   1803 #define __IDXGIFactory_INTERFACE_DEFINED__
   1804 
   1805 DEFINE_GUID(IID_IDXGIFactory, 0x7b7166ec, 0x21c7, 0x44ae, 0xb2,0x1a, 0xc9,0xae,0x32,0x1a,0xe3,0x69);
   1806 #if defined(__cplusplus) && !defined(CINTERFACE)
   1807 MIDL_INTERFACE("7b7166ec-21c7-44ae-b21a-c9ae321ae369")
   1808 IDXGIFactory : public IDXGIObject
   1809 {
   1810     virtual HRESULT STDMETHODCALLTYPE EnumAdapters(
   1811         UINT adapter_idx,
   1812         IDXGIAdapter **adapter) = 0;
   1813 
   1814     virtual HRESULT STDMETHODCALLTYPE MakeWindowAssociation(
   1815         HWND window,
   1816         UINT flags) = 0;
   1817 
   1818     virtual HRESULT STDMETHODCALLTYPE GetWindowAssociation(
   1819         HWND *window) = 0;
   1820 
   1821     virtual HRESULT STDMETHODCALLTYPE CreateSwapChain(
   1822         IUnknown *device,
   1823         DXGI_SWAP_CHAIN_DESC *desc,
   1824         IDXGISwapChain **swapchain) = 0;
   1825 
   1826     virtual HRESULT STDMETHODCALLTYPE CreateSoftwareAdapter(
   1827         HMODULE swrast,
   1828         IDXGIAdapter **adapter) = 0;
   1829 
   1830 };
   1831 #ifdef __CRT_UUID_DECL
   1832 __CRT_UUID_DECL(IDXGIFactory, 0x7b7166ec, 0x21c7, 0x44ae, 0xb2,0x1a, 0xc9,0xae,0x32,0x1a,0xe3,0x69)
   1833 #endif
   1834 #else
   1835 typedef struct IDXGIFactoryVtbl {
   1836     BEGIN_INTERFACE
   1837 
   1838     /*** IUnknown methods ***/
   1839     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1840         IDXGIFactory *This,
   1841         REFIID riid,
   1842         void **ppvObject);
   1843 
   1844     ULONG (STDMETHODCALLTYPE *AddRef)(
   1845         IDXGIFactory *This);
   1846 
   1847     ULONG (STDMETHODCALLTYPE *Release)(
   1848         IDXGIFactory *This);
   1849 
   1850     /*** IDXGIObject methods ***/
   1851     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   1852         IDXGIFactory *This,
   1853         REFGUID guid,
   1854         UINT data_size,
   1855         const void *data);
   1856 
   1857     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   1858         IDXGIFactory *This,
   1859         REFGUID guid,
   1860         const IUnknown *object);
   1861 
   1862     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   1863         IDXGIFactory *This,
   1864         REFGUID guid,
   1865         UINT *data_size,
   1866         void *data);
   1867 
   1868     HRESULT (STDMETHODCALLTYPE *GetParent)(
   1869         IDXGIFactory *This,
   1870         REFIID riid,
   1871         void **parent);
   1872 
   1873     /*** IDXGIFactory methods ***/
   1874     HRESULT (STDMETHODCALLTYPE *EnumAdapters)(
   1875         IDXGIFactory *This,
   1876         UINT adapter_idx,
   1877         IDXGIAdapter **adapter);
   1878 
   1879     HRESULT (STDMETHODCALLTYPE *MakeWindowAssociation)(
   1880         IDXGIFactory *This,
   1881         HWND window,
   1882         UINT flags);
   1883 
   1884     HRESULT (STDMETHODCALLTYPE *GetWindowAssociation)(
   1885         IDXGIFactory *This,
   1886         HWND *window);
   1887 
   1888     HRESULT (STDMETHODCALLTYPE *CreateSwapChain)(
   1889         IDXGIFactory *This,
   1890         IUnknown *device,
   1891         DXGI_SWAP_CHAIN_DESC *desc,
   1892         IDXGISwapChain **swapchain);
   1893 
   1894     HRESULT (STDMETHODCALLTYPE *CreateSoftwareAdapter)(
   1895         IDXGIFactory *This,
   1896         HMODULE swrast,
   1897         IDXGIAdapter **adapter);
   1898 
   1899     END_INTERFACE
   1900 } IDXGIFactoryVtbl;
   1901 
   1902 interface IDXGIFactory {
   1903     CONST_VTBL IDXGIFactoryVtbl* lpVtbl;
   1904 };
   1905 
   1906 #ifdef COBJMACROS
   1907 #ifndef WIDL_C_INLINE_WRAPPERS
   1908 /*** IUnknown methods ***/
   1909 #define IDXGIFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1910 #define IDXGIFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
   1911 #define IDXGIFactory_Release(This) (This)->lpVtbl->Release(This)
   1912 /*** IDXGIObject methods ***/
   1913 #define IDXGIFactory_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
   1914 #define IDXGIFactory_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
   1915 #define IDXGIFactory_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
   1916 #define IDXGIFactory_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
   1917 /*** IDXGIFactory methods ***/
   1918 #define IDXGIFactory_EnumAdapters(This,adapter_idx,adapter) (This)->lpVtbl->EnumAdapters(This,adapter_idx,adapter)
   1919 #define IDXGIFactory_MakeWindowAssociation(This,window,flags) (This)->lpVtbl->MakeWindowAssociation(This,window,flags)
   1920 #define IDXGIFactory_GetWindowAssociation(This,window) (This)->lpVtbl->GetWindowAssociation(This,window)
   1921 #define IDXGIFactory_CreateSwapChain(This,device,desc,swapchain) (This)->lpVtbl->CreateSwapChain(This,device,desc,swapchain)
   1922 #define IDXGIFactory_CreateSoftwareAdapter(This,swrast,adapter) (This)->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter)
   1923 #else
   1924 /*** IUnknown methods ***/
   1925 static inline HRESULT IDXGIFactory_QueryInterface(IDXGIFactory* This,REFIID riid,void **ppvObject) {
   1926     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1927 }
   1928 static inline ULONG IDXGIFactory_AddRef(IDXGIFactory* This) {
   1929     return This->lpVtbl->AddRef(This);
   1930 }
   1931 static inline ULONG IDXGIFactory_Release(IDXGIFactory* This) {
   1932     return This->lpVtbl->Release(This);
   1933 }
   1934 /*** IDXGIObject methods ***/
   1935 static inline HRESULT IDXGIFactory_SetPrivateData(IDXGIFactory* This,REFGUID guid,UINT data_size,const void *data) {
   1936     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   1937 }
   1938 static inline HRESULT IDXGIFactory_SetPrivateDataInterface(IDXGIFactory* This,REFGUID guid,const IUnknown *object) {
   1939     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
   1940 }
   1941 static inline HRESULT IDXGIFactory_GetPrivateData(IDXGIFactory* This,REFGUID guid,UINT *data_size,void *data) {
   1942     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   1943 }
   1944 static inline HRESULT IDXGIFactory_GetParent(IDXGIFactory* This,REFIID riid,void **parent) {
   1945     return This->lpVtbl->GetParent(This,riid,parent);
   1946 }
   1947 /*** IDXGIFactory methods ***/
   1948 static inline HRESULT IDXGIFactory_EnumAdapters(IDXGIFactory* This,UINT adapter_idx,IDXGIAdapter **adapter) {
   1949     return This->lpVtbl->EnumAdapters(This,adapter_idx,adapter);
   1950 }
   1951 static inline HRESULT IDXGIFactory_MakeWindowAssociation(IDXGIFactory* This,HWND window,UINT flags) {
   1952     return This->lpVtbl->MakeWindowAssociation(This,window,flags);
   1953 }
   1954 static inline HRESULT IDXGIFactory_GetWindowAssociation(IDXGIFactory* This,HWND *window) {
   1955     return This->lpVtbl->GetWindowAssociation(This,window);
   1956 }
   1957 static inline HRESULT IDXGIFactory_CreateSwapChain(IDXGIFactory* This,IUnknown *device,DXGI_SWAP_CHAIN_DESC *desc,IDXGISwapChain **swapchain) {
   1958     return This->lpVtbl->CreateSwapChain(This,device,desc,swapchain);
   1959 }
   1960 static inline HRESULT IDXGIFactory_CreateSoftwareAdapter(IDXGIFactory* This,HMODULE swrast,IDXGIAdapter **adapter) {
   1961     return This->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter);
   1962 }
   1963 #endif
   1964 #endif
   1965 
   1966 #endif
   1967 
   1968 
   1969 #endif  /* __IDXGIFactory_INTERFACE_DEFINED__ */
   1970 
   1971 HRESULT __stdcall  CreateDXGIFactory(REFIID riid,void **factory);
   1972 
   1973 HRESULT __stdcall  CreateDXGIFactory1(REFIID riid,void **factory);
   1974 
   1975 /*****************************************************************************
   1976  * IDXGIDevice interface
   1977  */
   1978 #ifndef __IDXGIDevice_INTERFACE_DEFINED__
   1979 #define __IDXGIDevice_INTERFACE_DEFINED__
   1980 
   1981 DEFINE_GUID(IID_IDXGIDevice, 0x54ec77fa, 0x1377, 0x44e6, 0x8c,0x32, 0x88,0xfd,0x5f,0x44,0xc8,0x4c);
   1982 #if defined(__cplusplus) && !defined(CINTERFACE)
   1983 MIDL_INTERFACE("54ec77fa-1377-44e6-8c32-88fd5f44c84c")
   1984 IDXGIDevice : public IDXGIObject
   1985 {
   1986     virtual HRESULT STDMETHODCALLTYPE GetAdapter(
   1987         IDXGIAdapter **adapter) = 0;
   1988 
   1989     virtual HRESULT STDMETHODCALLTYPE CreateSurface(
   1990         const DXGI_SURFACE_DESC *desc,
   1991         UINT surface_count,
   1992         DXGI_USAGE usage,
   1993         const DXGI_SHARED_RESOURCE *shared_resource,
   1994         IDXGISurface **surface) = 0;
   1995 
   1996     virtual HRESULT STDMETHODCALLTYPE QueryResourceResidency(
   1997         IUnknown *const *resources,
   1998         DXGI_RESIDENCY *residency,
   1999         UINT resource_count) = 0;
   2000 
   2001     virtual HRESULT STDMETHODCALLTYPE SetGPUThreadPriority(
   2002         INT priority) = 0;
   2003 
   2004     virtual HRESULT STDMETHODCALLTYPE GetGPUThreadPriority(
   2005         INT *priority) = 0;
   2006 
   2007 };
   2008 #ifdef __CRT_UUID_DECL
   2009 __CRT_UUID_DECL(IDXGIDevice, 0x54ec77fa, 0x1377, 0x44e6, 0x8c,0x32, 0x88,0xfd,0x5f,0x44,0xc8,0x4c)
   2010 #endif
   2011 #else
   2012 typedef struct IDXGIDeviceVtbl {
   2013     BEGIN_INTERFACE
   2014 
   2015     /*** IUnknown methods ***/
   2016     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2017         IDXGIDevice *This,
   2018         REFIID riid,
   2019         void **ppvObject);
   2020 
   2021     ULONG (STDMETHODCALLTYPE *AddRef)(
   2022         IDXGIDevice *This);
   2023 
   2024     ULONG (STDMETHODCALLTYPE *Release)(
   2025         IDXGIDevice *This);
   2026 
   2027     /*** IDXGIObject methods ***/
   2028     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   2029         IDXGIDevice *This,
   2030         REFGUID guid,
   2031         UINT data_size,
   2032         const void *data);
   2033 
   2034     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   2035         IDXGIDevice *This,
   2036         REFGUID guid,
   2037         const IUnknown *object);
   2038 
   2039     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   2040         IDXGIDevice *This,
   2041         REFGUID guid,
   2042         UINT *data_size,
   2043         void *data);
   2044 
   2045     HRESULT (STDMETHODCALLTYPE *GetParent)(
   2046         IDXGIDevice *This,
   2047         REFIID riid,
   2048         void **parent);
   2049 
   2050     /*** IDXGIDevice methods ***/
   2051     HRESULT (STDMETHODCALLTYPE *GetAdapter)(
   2052         IDXGIDevice *This,
   2053         IDXGIAdapter **adapter);
   2054 
   2055     HRESULT (STDMETHODCALLTYPE *CreateSurface)(
   2056         IDXGIDevice *This,
   2057         const DXGI_SURFACE_DESC *desc,
   2058         UINT surface_count,
   2059         DXGI_USAGE usage,
   2060         const DXGI_SHARED_RESOURCE *shared_resource,
   2061         IDXGISurface **surface);
   2062 
   2063     HRESULT (STDMETHODCALLTYPE *QueryResourceResidency)(
   2064         IDXGIDevice *This,
   2065         IUnknown *const *resources,
   2066         DXGI_RESIDENCY *residency,
   2067         UINT resource_count);
   2068 
   2069     HRESULT (STDMETHODCALLTYPE *SetGPUThreadPriority)(
   2070         IDXGIDevice *This,
   2071         INT priority);
   2072 
   2073     HRESULT (STDMETHODCALLTYPE *GetGPUThreadPriority)(
   2074         IDXGIDevice *This,
   2075         INT *priority);
   2076 
   2077     END_INTERFACE
   2078 } IDXGIDeviceVtbl;
   2079 
   2080 interface IDXGIDevice {
   2081     CONST_VTBL IDXGIDeviceVtbl* lpVtbl;
   2082 };
   2083 
   2084 #ifdef COBJMACROS
   2085 #ifndef WIDL_C_INLINE_WRAPPERS
   2086 /*** IUnknown methods ***/
   2087 #define IDXGIDevice_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2088 #define IDXGIDevice_AddRef(This) (This)->lpVtbl->AddRef(This)
   2089 #define IDXGIDevice_Release(This) (This)->lpVtbl->Release(This)
   2090 /*** IDXGIObject methods ***/
   2091 #define IDXGIDevice_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
   2092 #define IDXGIDevice_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
   2093 #define IDXGIDevice_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
   2094 #define IDXGIDevice_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
   2095 /*** IDXGIDevice methods ***/
   2096 #define IDXGIDevice_GetAdapter(This,adapter) (This)->lpVtbl->GetAdapter(This,adapter)
   2097 #define IDXGIDevice_CreateSurface(This,desc,surface_count,usage,shared_resource,surface) (This)->lpVtbl->CreateSurface(This,desc,surface_count,usage,shared_resource,surface)
   2098 #define IDXGIDevice_QueryResourceResidency(This,resources,residency,resource_count) (This)->lpVtbl->QueryResourceResidency(This,resources,residency,resource_count)
   2099 #define IDXGIDevice_SetGPUThreadPriority(This,priority) (This)->lpVtbl->SetGPUThreadPriority(This,priority)
   2100 #define IDXGIDevice_GetGPUThreadPriority(This,priority) (This)->lpVtbl->GetGPUThreadPriority(This,priority)
   2101 #else
   2102 /*** IUnknown methods ***/
   2103 static inline HRESULT IDXGIDevice_QueryInterface(IDXGIDevice* This,REFIID riid,void **ppvObject) {
   2104     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2105 }
   2106 static inline ULONG IDXGIDevice_AddRef(IDXGIDevice* This) {
   2107     return This->lpVtbl->AddRef(This);
   2108 }
   2109 static inline ULONG IDXGIDevice_Release(IDXGIDevice* This) {
   2110     return This->lpVtbl->Release(This);
   2111 }
   2112 /*** IDXGIObject methods ***/
   2113 static inline HRESULT IDXGIDevice_SetPrivateData(IDXGIDevice* This,REFGUID guid,UINT data_size,const void *data) {
   2114     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   2115 }
   2116 static inline HRESULT IDXGIDevice_SetPrivateDataInterface(IDXGIDevice* This,REFGUID guid,const IUnknown *object) {
   2117     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
   2118 }
   2119 static inline HRESULT IDXGIDevice_GetPrivateData(IDXGIDevice* This,REFGUID guid,UINT *data_size,void *data) {
   2120     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   2121 }
   2122 static inline HRESULT IDXGIDevice_GetParent(IDXGIDevice* This,REFIID riid,void **parent) {
   2123     return This->lpVtbl->GetParent(This,riid,parent);
   2124 }
   2125 /*** IDXGIDevice methods ***/
   2126 static inline HRESULT IDXGIDevice_GetAdapter(IDXGIDevice* This,IDXGIAdapter **adapter) {
   2127     return This->lpVtbl->GetAdapter(This,adapter);
   2128 }
   2129 static inline HRESULT IDXGIDevice_CreateSurface(IDXGIDevice* This,const DXGI_SURFACE_DESC *desc,UINT surface_count,DXGI_USAGE usage,const DXGI_SHARED_RESOURCE *shared_resource,IDXGISurface **surface) {
   2130     return This->lpVtbl->CreateSurface(This,desc,surface_count,usage,shared_resource,surface);
   2131 }
   2132 static inline HRESULT IDXGIDevice_QueryResourceResidency(IDXGIDevice* This,IUnknown *const *resources,DXGI_RESIDENCY *residency,UINT resource_count) {
   2133     return This->lpVtbl->QueryResourceResidency(This,resources,residency,resource_count);
   2134 }
   2135 static inline HRESULT IDXGIDevice_SetGPUThreadPriority(IDXGIDevice* This,INT priority) {
   2136     return This->lpVtbl->SetGPUThreadPriority(This,priority);
   2137 }
   2138 static inline HRESULT IDXGIDevice_GetGPUThreadPriority(IDXGIDevice* This,INT *priority) {
   2139     return This->lpVtbl->GetGPUThreadPriority(This,priority);
   2140 }
   2141 #endif
   2142 #endif
   2143 
   2144 #endif
   2145 
   2146 
   2147 #endif  /* __IDXGIDevice_INTERFACE_DEFINED__ */
   2148 
   2149 typedef enum DXGI_ADAPTER_FLAG {
   2150     DXGI_ADAPTER_FLAG_NONE = 0,
   2151     DXGI_ADAPTER_FLAG_REMOTE = 1,
   2152     DXGI_ADAPTER_FLAG_SOFTWARE = 2,
   2153     DXGI_ADAPTER_FLAG_FORCE_DWORD = 0xffffffff
   2154 } DXGI_ADAPTER_FLAG;
   2155 typedef struct DXGI_ADAPTER_DESC1 {
   2156     WCHAR Description[128];
   2157     UINT VendorId;
   2158     UINT DeviceId;
   2159     UINT SubSysId;
   2160     UINT Revision;
   2161     SIZE_T DedicatedVideoMemory;
   2162     SIZE_T DedicatedSystemMemory;
   2163     SIZE_T SharedSystemMemory;
   2164     LUID AdapterLuid;
   2165     UINT Flags;
   2166 } DXGI_ADAPTER_DESC1;
   2167 typedef struct DXGI_DISPLAY_COLOR_SPACE {
   2168     FLOAT PrimaryCoordinates[8][2];
   2169     FLOAT WhitePoints[16][2];
   2170 } DXGI_DISPLAY_COLOR_SPACE;
   2171 /*****************************************************************************
   2172  * IDXGIAdapter1 interface
   2173  */
   2174 #ifndef __IDXGIAdapter1_INTERFACE_DEFINED__
   2175 #define __IDXGIAdapter1_INTERFACE_DEFINED__
   2176 
   2177 DEFINE_GUID(IID_IDXGIAdapter1, 0x29038f61, 0x3839, 0x4626, 0x91,0xfd, 0x08,0x68,0x79,0x01,0x1a,0x05);
   2178 #if defined(__cplusplus) && !defined(CINTERFACE)
   2179 MIDL_INTERFACE("29038f61-3839-4626-91fd-086879011a05")
   2180 IDXGIAdapter1 : public IDXGIAdapter
   2181 {
   2182     virtual HRESULT STDMETHODCALLTYPE GetDesc1(
   2183         DXGI_ADAPTER_DESC1 *pDesc) = 0;
   2184 
   2185 };
   2186 #ifdef __CRT_UUID_DECL
   2187 __CRT_UUID_DECL(IDXGIAdapter1, 0x29038f61, 0x3839, 0x4626, 0x91,0xfd, 0x08,0x68,0x79,0x01,0x1a,0x05)
   2188 #endif
   2189 #else
   2190 typedef struct IDXGIAdapter1Vtbl {
   2191     BEGIN_INTERFACE
   2192 
   2193     /*** IUnknown methods ***/
   2194     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2195         IDXGIAdapter1 *This,
   2196         REFIID riid,
   2197         void **ppvObject);
   2198 
   2199     ULONG (STDMETHODCALLTYPE *AddRef)(
   2200         IDXGIAdapter1 *This);
   2201 
   2202     ULONG (STDMETHODCALLTYPE *Release)(
   2203         IDXGIAdapter1 *This);
   2204 
   2205     /*** IDXGIObject methods ***/
   2206     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   2207         IDXGIAdapter1 *This,
   2208         REFGUID guid,
   2209         UINT data_size,
   2210         const void *data);
   2211 
   2212     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   2213         IDXGIAdapter1 *This,
   2214         REFGUID guid,
   2215         const IUnknown *object);
   2216 
   2217     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   2218         IDXGIAdapter1 *This,
   2219         REFGUID guid,
   2220         UINT *data_size,
   2221         void *data);
   2222 
   2223     HRESULT (STDMETHODCALLTYPE *GetParent)(
   2224         IDXGIAdapter1 *This,
   2225         REFIID riid,
   2226         void **parent);
   2227 
   2228     /*** IDXGIAdapter methods ***/
   2229     HRESULT (STDMETHODCALLTYPE *EnumOutputs)(
   2230         IDXGIAdapter1 *This,
   2231         UINT output_idx,
   2232         IDXGIOutput **output);
   2233 
   2234     HRESULT (STDMETHODCALLTYPE *GetDesc)(
   2235         IDXGIAdapter1 *This,
   2236         DXGI_ADAPTER_DESC *desc);
   2237 
   2238     HRESULT (STDMETHODCALLTYPE *CheckInterfaceSupport)(
   2239         IDXGIAdapter1 *This,
   2240         REFGUID guid,
   2241         LARGE_INTEGER *umd_version);
   2242 
   2243     /*** IDXGIAdapter1 methods ***/
   2244     HRESULT (STDMETHODCALLTYPE *GetDesc1)(
   2245         IDXGIAdapter1 *This,
   2246         DXGI_ADAPTER_DESC1 *pDesc);
   2247 
   2248     END_INTERFACE
   2249 } IDXGIAdapter1Vtbl;
   2250 
   2251 interface IDXGIAdapter1 {
   2252     CONST_VTBL IDXGIAdapter1Vtbl* lpVtbl;
   2253 };
   2254 
   2255 #ifdef COBJMACROS
   2256 #ifndef WIDL_C_INLINE_WRAPPERS
   2257 /*** IUnknown methods ***/
   2258 #define IDXGIAdapter1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2259 #define IDXGIAdapter1_AddRef(This) (This)->lpVtbl->AddRef(This)
   2260 #define IDXGIAdapter1_Release(This) (This)->lpVtbl->Release(This)
   2261 /*** IDXGIObject methods ***/
   2262 #define IDXGIAdapter1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
   2263 #define IDXGIAdapter1_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
   2264 #define IDXGIAdapter1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
   2265 #define IDXGIAdapter1_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
   2266 /*** IDXGIAdapter methods ***/
   2267 #define IDXGIAdapter1_EnumOutputs(This,output_idx,output) (This)->lpVtbl->EnumOutputs(This,output_idx,output)
   2268 #define IDXGIAdapter1_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
   2269 #define IDXGIAdapter1_CheckInterfaceSupport(This,guid,umd_version) (This)->lpVtbl->CheckInterfaceSupport(This,guid,umd_version)
   2270 /*** IDXGIAdapter1 methods ***/
   2271 #define IDXGIAdapter1_GetDesc1(This,pDesc) (This)->lpVtbl->GetDesc1(This,pDesc)
   2272 #else
   2273 /*** IUnknown methods ***/
   2274 static inline HRESULT IDXGIAdapter1_QueryInterface(IDXGIAdapter1* This,REFIID riid,void **ppvObject) {
   2275     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2276 }
   2277 static inline ULONG IDXGIAdapter1_AddRef(IDXGIAdapter1* This) {
   2278     return This->lpVtbl->AddRef(This);
   2279 }
   2280 static inline ULONG IDXGIAdapter1_Release(IDXGIAdapter1* This) {
   2281     return This->lpVtbl->Release(This);
   2282 }
   2283 /*** IDXGIObject methods ***/
   2284 static inline HRESULT IDXGIAdapter1_SetPrivateData(IDXGIAdapter1* This,REFGUID guid,UINT data_size,const void *data) {
   2285     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   2286 }
   2287 static inline HRESULT IDXGIAdapter1_SetPrivateDataInterface(IDXGIAdapter1* This,REFGUID guid,const IUnknown *object) {
   2288     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
   2289 }
   2290 static inline HRESULT IDXGIAdapter1_GetPrivateData(IDXGIAdapter1* This,REFGUID guid,UINT *data_size,void *data) {
   2291     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   2292 }
   2293 static inline HRESULT IDXGIAdapter1_GetParent(IDXGIAdapter1* This,REFIID riid,void **parent) {
   2294     return This->lpVtbl->GetParent(This,riid,parent);
   2295 }
   2296 /*** IDXGIAdapter methods ***/
   2297 static inline HRESULT IDXGIAdapter1_EnumOutputs(IDXGIAdapter1* This,UINT output_idx,IDXGIOutput **output) {
   2298     return This->lpVtbl->EnumOutputs(This,output_idx,output);
   2299 }
   2300 static inline HRESULT IDXGIAdapter1_GetDesc(IDXGIAdapter1* This,DXGI_ADAPTER_DESC *desc) {
   2301     return This->lpVtbl->GetDesc(This,desc);
   2302 }
   2303 static inline HRESULT IDXGIAdapter1_CheckInterfaceSupport(IDXGIAdapter1* This,REFGUID guid,LARGE_INTEGER *umd_version) {
   2304     return This->lpVtbl->CheckInterfaceSupport(This,guid,umd_version);
   2305 }
   2306 /*** IDXGIAdapter1 methods ***/
   2307 static inline HRESULT IDXGIAdapter1_GetDesc1(IDXGIAdapter1* This,DXGI_ADAPTER_DESC1 *pDesc) {
   2308     return This->lpVtbl->GetDesc1(This,pDesc);
   2309 }
   2310 #endif
   2311 #endif
   2312 
   2313 #endif
   2314 
   2315 
   2316 #endif  /* __IDXGIAdapter1_INTERFACE_DEFINED__ */
   2317 
   2318 /*****************************************************************************
   2319  * IDXGIDevice1 interface
   2320  */
   2321 #ifndef __IDXGIDevice1_INTERFACE_DEFINED__
   2322 #define __IDXGIDevice1_INTERFACE_DEFINED__
   2323 
   2324 DEFINE_GUID(IID_IDXGIDevice1, 0x77db970f, 0x6276, 0x48ba, 0xba,0x28, 0x07,0x01,0x43,0xb4,0x39,0x2c);
   2325 #if defined(__cplusplus) && !defined(CINTERFACE)
   2326 MIDL_INTERFACE("77db970f-6276-48ba-ba28-070143b4392c")
   2327 IDXGIDevice1 : public IDXGIDevice
   2328 {
   2329     virtual HRESULT STDMETHODCALLTYPE SetMaximumFrameLatency(
   2330         UINT MaxLatency) = 0;
   2331 
   2332     virtual HRESULT STDMETHODCALLTYPE GetMaximumFrameLatency(
   2333         UINT *pMaxLatency) = 0;
   2334 
   2335 };
   2336 #ifdef __CRT_UUID_DECL
   2337 __CRT_UUID_DECL(IDXGIDevice1, 0x77db970f, 0x6276, 0x48ba, 0xba,0x28, 0x07,0x01,0x43,0xb4,0x39,0x2c)
   2338 #endif
   2339 #else
   2340 typedef struct IDXGIDevice1Vtbl {
   2341     BEGIN_INTERFACE
   2342 
   2343     /*** IUnknown methods ***/
   2344     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2345         IDXGIDevice1 *This,
   2346         REFIID riid,
   2347         void **ppvObject);
   2348 
   2349     ULONG (STDMETHODCALLTYPE *AddRef)(
   2350         IDXGIDevice1 *This);
   2351 
   2352     ULONG (STDMETHODCALLTYPE *Release)(
   2353         IDXGIDevice1 *This);
   2354 
   2355     /*** IDXGIObject methods ***/
   2356     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   2357         IDXGIDevice1 *This,
   2358         REFGUID guid,
   2359         UINT data_size,
   2360         const void *data);
   2361 
   2362     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   2363         IDXGIDevice1 *This,
   2364         REFGUID guid,
   2365         const IUnknown *object);
   2366 
   2367     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   2368         IDXGIDevice1 *This,
   2369         REFGUID guid,
   2370         UINT *data_size,
   2371         void *data);
   2372 
   2373     HRESULT (STDMETHODCALLTYPE *GetParent)(
   2374         IDXGIDevice1 *This,
   2375         REFIID riid,
   2376         void **parent);
   2377 
   2378     /*** IDXGIDevice methods ***/
   2379     HRESULT (STDMETHODCALLTYPE *GetAdapter)(
   2380         IDXGIDevice1 *This,
   2381         IDXGIAdapter **adapter);
   2382 
   2383     HRESULT (STDMETHODCALLTYPE *CreateSurface)(
   2384         IDXGIDevice1 *This,
   2385         const DXGI_SURFACE_DESC *desc,
   2386         UINT surface_count,
   2387         DXGI_USAGE usage,
   2388         const DXGI_SHARED_RESOURCE *shared_resource,
   2389         IDXGISurface **surface);
   2390 
   2391     HRESULT (STDMETHODCALLTYPE *QueryResourceResidency)(
   2392         IDXGIDevice1 *This,
   2393         IUnknown *const *resources,
   2394         DXGI_RESIDENCY *residency,
   2395         UINT resource_count);
   2396 
   2397     HRESULT (STDMETHODCALLTYPE *SetGPUThreadPriority)(
   2398         IDXGIDevice1 *This,
   2399         INT priority);
   2400 
   2401     HRESULT (STDMETHODCALLTYPE *GetGPUThreadPriority)(
   2402         IDXGIDevice1 *This,
   2403         INT *priority);
   2404 
   2405     /*** IDXGIDevice1 methods ***/
   2406     HRESULT (STDMETHODCALLTYPE *SetMaximumFrameLatency)(
   2407         IDXGIDevice1 *This,
   2408         UINT MaxLatency);
   2409 
   2410     HRESULT (STDMETHODCALLTYPE *GetMaximumFrameLatency)(
   2411         IDXGIDevice1 *This,
   2412         UINT *pMaxLatency);
   2413 
   2414     END_INTERFACE
   2415 } IDXGIDevice1Vtbl;
   2416 
   2417 interface IDXGIDevice1 {
   2418     CONST_VTBL IDXGIDevice1Vtbl* lpVtbl;
   2419 };
   2420 
   2421 #ifdef COBJMACROS
   2422 #ifndef WIDL_C_INLINE_WRAPPERS
   2423 /*** IUnknown methods ***/
   2424 #define IDXGIDevice1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2425 #define IDXGIDevice1_AddRef(This) (This)->lpVtbl->AddRef(This)
   2426 #define IDXGIDevice1_Release(This) (This)->lpVtbl->Release(This)
   2427 /*** IDXGIObject methods ***/
   2428 #define IDXGIDevice1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
   2429 #define IDXGIDevice1_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
   2430 #define IDXGIDevice1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
   2431 #define IDXGIDevice1_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
   2432 /*** IDXGIDevice methods ***/
   2433 #define IDXGIDevice1_GetAdapter(This,adapter) (This)->lpVtbl->GetAdapter(This,adapter)
   2434 #define IDXGIDevice1_CreateSurface(This,desc,surface_count,usage,shared_resource,surface) (This)->lpVtbl->CreateSurface(This,desc,surface_count,usage,shared_resource,surface)
   2435 #define IDXGIDevice1_QueryResourceResidency(This,resources,residency,resource_count) (This)->lpVtbl->QueryResourceResidency(This,resources,residency,resource_count)
   2436 #define IDXGIDevice1_SetGPUThreadPriority(This,priority) (This)->lpVtbl->SetGPUThreadPriority(This,priority)
   2437 #define IDXGIDevice1_GetGPUThreadPriority(This,priority) (This)->lpVtbl->GetGPUThreadPriority(This,priority)
   2438 /*** IDXGIDevice1 methods ***/
   2439 #define IDXGIDevice1_SetMaximumFrameLatency(This,MaxLatency) (This)->lpVtbl->SetMaximumFrameLatency(This,MaxLatency)
   2440 #define IDXGIDevice1_GetMaximumFrameLatency(This,pMaxLatency) (This)->lpVtbl->GetMaximumFrameLatency(This,pMaxLatency)
   2441 #else
   2442 /*** IUnknown methods ***/
   2443 static inline HRESULT IDXGIDevice1_QueryInterface(IDXGIDevice1* This,REFIID riid,void **ppvObject) {
   2444     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2445 }
   2446 static inline ULONG IDXGIDevice1_AddRef(IDXGIDevice1* This) {
   2447     return This->lpVtbl->AddRef(This);
   2448 }
   2449 static inline ULONG IDXGIDevice1_Release(IDXGIDevice1* This) {
   2450     return This->lpVtbl->Release(This);
   2451 }
   2452 /*** IDXGIObject methods ***/
   2453 static inline HRESULT IDXGIDevice1_SetPrivateData(IDXGIDevice1* This,REFGUID guid,UINT data_size,const void *data) {
   2454     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   2455 }
   2456 static inline HRESULT IDXGIDevice1_SetPrivateDataInterface(IDXGIDevice1* This,REFGUID guid,const IUnknown *object) {
   2457     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
   2458 }
   2459 static inline HRESULT IDXGIDevice1_GetPrivateData(IDXGIDevice1* This,REFGUID guid,UINT *data_size,void *data) {
   2460     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   2461 }
   2462 static inline HRESULT IDXGIDevice1_GetParent(IDXGIDevice1* This,REFIID riid,void **parent) {
   2463     return This->lpVtbl->GetParent(This,riid,parent);
   2464 }
   2465 /*** IDXGIDevice methods ***/
   2466 static inline HRESULT IDXGIDevice1_GetAdapter(IDXGIDevice1* This,IDXGIAdapter **adapter) {
   2467     return This->lpVtbl->GetAdapter(This,adapter);
   2468 }
   2469 static inline HRESULT IDXGIDevice1_CreateSurface(IDXGIDevice1* This,const DXGI_SURFACE_DESC *desc,UINT surface_count,DXGI_USAGE usage,const DXGI_SHARED_RESOURCE *shared_resource,IDXGISurface **surface) {
   2470     return This->lpVtbl->CreateSurface(This,desc,surface_count,usage,shared_resource,surface);
   2471 }
   2472 static inline HRESULT IDXGIDevice1_QueryResourceResidency(IDXGIDevice1* This,IUnknown *const *resources,DXGI_RESIDENCY *residency,UINT resource_count) {
   2473     return This->lpVtbl->QueryResourceResidency(This,resources,residency,resource_count);
   2474 }
   2475 static inline HRESULT IDXGIDevice1_SetGPUThreadPriority(IDXGIDevice1* This,INT priority) {
   2476     return This->lpVtbl->SetGPUThreadPriority(This,priority);
   2477 }
   2478 static inline HRESULT IDXGIDevice1_GetGPUThreadPriority(IDXGIDevice1* This,INT *priority) {
   2479     return This->lpVtbl->GetGPUThreadPriority(This,priority);
   2480 }
   2481 /*** IDXGIDevice1 methods ***/
   2482 static inline HRESULT IDXGIDevice1_SetMaximumFrameLatency(IDXGIDevice1* This,UINT MaxLatency) {
   2483     return This->lpVtbl->SetMaximumFrameLatency(This,MaxLatency);
   2484 }
   2485 static inline HRESULT IDXGIDevice1_GetMaximumFrameLatency(IDXGIDevice1* This,UINT *pMaxLatency) {
   2486     return This->lpVtbl->GetMaximumFrameLatency(This,pMaxLatency);
   2487 }
   2488 #endif
   2489 #endif
   2490 
   2491 #endif
   2492 
   2493 
   2494 #endif  /* __IDXGIDevice1_INTERFACE_DEFINED__ */
   2495 
   2496 /*****************************************************************************
   2497  * IDXGIFactory1 interface
   2498  */
   2499 #ifndef __IDXGIFactory1_INTERFACE_DEFINED__
   2500 #define __IDXGIFactory1_INTERFACE_DEFINED__
   2501 
   2502 DEFINE_GUID(IID_IDXGIFactory1, 0x770aae78, 0xf26f, 0x4dba, 0xa8,0x29, 0x25,0x3c,0x83,0xd1,0xb3,0x87);
   2503 #if defined(__cplusplus) && !defined(CINTERFACE)
   2504 MIDL_INTERFACE("770aae78-f26f-4dba-a829-253c83d1b387")
   2505 IDXGIFactory1 : public IDXGIFactory
   2506 {
   2507     virtual HRESULT STDMETHODCALLTYPE EnumAdapters1(
   2508         UINT Adapter,
   2509         IDXGIAdapter1 **ppAdapter) = 0;
   2510 
   2511     virtual WINBOOL STDMETHODCALLTYPE IsCurrent(
   2512         ) = 0;
   2513 
   2514 };
   2515 #ifdef __CRT_UUID_DECL
   2516 __CRT_UUID_DECL(IDXGIFactory1, 0x770aae78, 0xf26f, 0x4dba, 0xa8,0x29, 0x25,0x3c,0x83,0xd1,0xb3,0x87)
   2517 #endif
   2518 #else
   2519 typedef struct IDXGIFactory1Vtbl {
   2520     BEGIN_INTERFACE
   2521 
   2522     /*** IUnknown methods ***/
   2523     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2524         IDXGIFactory1 *This,
   2525         REFIID riid,
   2526         void **ppvObject);
   2527 
   2528     ULONG (STDMETHODCALLTYPE *AddRef)(
   2529         IDXGIFactory1 *This);
   2530 
   2531     ULONG (STDMETHODCALLTYPE *Release)(
   2532         IDXGIFactory1 *This);
   2533 
   2534     /*** IDXGIObject methods ***/
   2535     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   2536         IDXGIFactory1 *This,
   2537         REFGUID guid,
   2538         UINT data_size,
   2539         const void *data);
   2540 
   2541     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   2542         IDXGIFactory1 *This,
   2543         REFGUID guid,
   2544         const IUnknown *object);
   2545 
   2546     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   2547         IDXGIFactory1 *This,
   2548         REFGUID guid,
   2549         UINT *data_size,
   2550         void *data);
   2551 
   2552     HRESULT (STDMETHODCALLTYPE *GetParent)(
   2553         IDXGIFactory1 *This,
   2554         REFIID riid,
   2555         void **parent);
   2556 
   2557     /*** IDXGIFactory methods ***/
   2558     HRESULT (STDMETHODCALLTYPE *EnumAdapters)(
   2559         IDXGIFactory1 *This,
   2560         UINT adapter_idx,
   2561         IDXGIAdapter **adapter);
   2562 
   2563     HRESULT (STDMETHODCALLTYPE *MakeWindowAssociation)(
   2564         IDXGIFactory1 *This,
   2565         HWND window,
   2566         UINT flags);
   2567 
   2568     HRESULT (STDMETHODCALLTYPE *GetWindowAssociation)(
   2569         IDXGIFactory1 *This,
   2570         HWND *window);
   2571 
   2572     HRESULT (STDMETHODCALLTYPE *CreateSwapChain)(
   2573         IDXGIFactory1 *This,
   2574         IUnknown *device,
   2575         DXGI_SWAP_CHAIN_DESC *desc,
   2576         IDXGISwapChain **swapchain);
   2577 
   2578     HRESULT (STDMETHODCALLTYPE *CreateSoftwareAdapter)(
   2579         IDXGIFactory1 *This,
   2580         HMODULE swrast,
   2581         IDXGIAdapter **adapter);
   2582 
   2583     /*** IDXGIFactory1 methods ***/
   2584     HRESULT (STDMETHODCALLTYPE *EnumAdapters1)(
   2585         IDXGIFactory1 *This,
   2586         UINT Adapter,
   2587         IDXGIAdapter1 **ppAdapter);
   2588 
   2589     WINBOOL (STDMETHODCALLTYPE *IsCurrent)(
   2590         IDXGIFactory1 *This);
   2591 
   2592     END_INTERFACE
   2593 } IDXGIFactory1Vtbl;
   2594 
   2595 interface IDXGIFactory1 {
   2596     CONST_VTBL IDXGIFactory1Vtbl* lpVtbl;
   2597 };
   2598 
   2599 #ifdef COBJMACROS
   2600 #ifndef WIDL_C_INLINE_WRAPPERS
   2601 /*** IUnknown methods ***/
   2602 #define IDXGIFactory1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2603 #define IDXGIFactory1_AddRef(This) (This)->lpVtbl->AddRef(This)
   2604 #define IDXGIFactory1_Release(This) (This)->lpVtbl->Release(This)
   2605 /*** IDXGIObject methods ***/
   2606 #define IDXGIFactory1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
   2607 #define IDXGIFactory1_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
   2608 #define IDXGIFactory1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
   2609 #define IDXGIFactory1_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
   2610 /*** IDXGIFactory methods ***/
   2611 #define IDXGIFactory1_EnumAdapters(This,adapter_idx,adapter) (This)->lpVtbl->EnumAdapters(This,adapter_idx,adapter)
   2612 #define IDXGIFactory1_MakeWindowAssociation(This,window,flags) (This)->lpVtbl->MakeWindowAssociation(This,window,flags)
   2613 #define IDXGIFactory1_GetWindowAssociation(This,window) (This)->lpVtbl->GetWindowAssociation(This,window)
   2614 #define IDXGIFactory1_CreateSwapChain(This,device,desc,swapchain) (This)->lpVtbl->CreateSwapChain(This,device,desc,swapchain)
   2615 #define IDXGIFactory1_CreateSoftwareAdapter(This,swrast,adapter) (This)->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter)
   2616 /*** IDXGIFactory1 methods ***/
   2617 #define IDXGIFactory1_EnumAdapters1(This,Adapter,ppAdapter) (This)->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter)
   2618 #define IDXGIFactory1_IsCurrent(This) (This)->lpVtbl->IsCurrent(This)
   2619 #else
   2620 /*** IUnknown methods ***/
   2621 static inline HRESULT IDXGIFactory1_QueryInterface(IDXGIFactory1* This,REFIID riid,void **ppvObject) {
   2622     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2623 }
   2624 static inline ULONG IDXGIFactory1_AddRef(IDXGIFactory1* This) {
   2625     return This->lpVtbl->AddRef(This);
   2626 }
   2627 static inline ULONG IDXGIFactory1_Release(IDXGIFactory1* This) {
   2628     return This->lpVtbl->Release(This);
   2629 }
   2630 /*** IDXGIObject methods ***/
   2631 static inline HRESULT IDXGIFactory1_SetPrivateData(IDXGIFactory1* This,REFGUID guid,UINT data_size,const void *data) {
   2632     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   2633 }
   2634 static inline HRESULT IDXGIFactory1_SetPrivateDataInterface(IDXGIFactory1* This,REFGUID guid,const IUnknown *object) {
   2635     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
   2636 }
   2637 static inline HRESULT IDXGIFactory1_GetPrivateData(IDXGIFactory1* This,REFGUID guid,UINT *data_size,void *data) {
   2638     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   2639 }
   2640 static inline HRESULT IDXGIFactory1_GetParent(IDXGIFactory1* This,REFIID riid,void **parent) {
   2641     return This->lpVtbl->GetParent(This,riid,parent);
   2642 }
   2643 /*** IDXGIFactory methods ***/
   2644 static inline HRESULT IDXGIFactory1_EnumAdapters(IDXGIFactory1* This,UINT adapter_idx,IDXGIAdapter **adapter) {
   2645     return This->lpVtbl->EnumAdapters(This,adapter_idx,adapter);
   2646 }
   2647 static inline HRESULT IDXGIFactory1_MakeWindowAssociation(IDXGIFactory1* This,HWND window,UINT flags) {
   2648     return This->lpVtbl->MakeWindowAssociation(This,window,flags);
   2649 }
   2650 static inline HRESULT IDXGIFactory1_GetWindowAssociation(IDXGIFactory1* This,HWND *window) {
   2651     return This->lpVtbl->GetWindowAssociation(This,window);
   2652 }
   2653 static inline HRESULT IDXGIFactory1_CreateSwapChain(IDXGIFactory1* This,IUnknown *device,DXGI_SWAP_CHAIN_DESC *desc,IDXGISwapChain **swapchain) {
   2654     return This->lpVtbl->CreateSwapChain(This,device,desc,swapchain);
   2655 }
   2656 static inline HRESULT IDXGIFactory1_CreateSoftwareAdapter(IDXGIFactory1* This,HMODULE swrast,IDXGIAdapter **adapter) {
   2657     return This->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter);
   2658 }
   2659 /*** IDXGIFactory1 methods ***/
   2660 static inline HRESULT IDXGIFactory1_EnumAdapters1(IDXGIFactory1* This,UINT Adapter,IDXGIAdapter1 **ppAdapter) {
   2661     return This->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter);
   2662 }
   2663 static inline WINBOOL IDXGIFactory1_IsCurrent(IDXGIFactory1* This) {
   2664     return This->lpVtbl->IsCurrent(This);
   2665 }
   2666 #endif
   2667 #endif
   2668 
   2669 #endif
   2670 
   2671 
   2672 #endif  /* __IDXGIFactory1_INTERFACE_DEFINED__ */
   2673 
   2674 /* Begin additional prototypes for all interfaces */
   2675 
   2676 
   2677 /* End additional prototypes */
   2678 
   2679 #ifdef __cplusplus
   2680 }
   2681 #endif
   2682 
   2683 #endif /* __dxgi_h__ */