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