Home | History | Annotate | Download | only in include
      1 /*** Autogenerated by WIDL 1.6 from direct-x/include/dxgi1_2.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 __dxgi1_2_h__
     16 #define __dxgi1_2_h__
     17 
     18 /* Forward declarations */
     19 
     20 #ifndef __IDXGIDevice2_FWD_DEFINED__
     21 #define __IDXGIDevice2_FWD_DEFINED__
     22 typedef interface IDXGIDevice2 IDXGIDevice2;
     23 #endif
     24 
     25 #ifndef __IDXGISwapChain1_FWD_DEFINED__
     26 #define __IDXGISwapChain1_FWD_DEFINED__
     27 typedef interface IDXGISwapChain1 IDXGISwapChain1;
     28 #endif
     29 
     30 #ifndef __IDXGIFactory2_FWD_DEFINED__
     31 #define __IDXGIFactory2_FWD_DEFINED__
     32 typedef interface IDXGIFactory2 IDXGIFactory2;
     33 #endif
     34 
     35 #ifndef __IDXGIAdapter2_FWD_DEFINED__
     36 #define __IDXGIAdapter2_FWD_DEFINED__
     37 typedef interface IDXGIAdapter2 IDXGIAdapter2;
     38 #endif
     39 
     40 /* Headers for imported files */
     41 
     42 #include <dxgi.h>
     43 
     44 #ifdef __cplusplus
     45 extern "C" {
     46 #endif
     47 
     48 typedef enum _DXGI_OFFER_RESOURCE_PRIORITY {
     49     DXGI_OFFER_RESOURCE_PRIORITY_LOW = 1,
     50     DXGI_OFFER_RESOURCE_PRIORITY_NORMAL = 2,
     51     DXGI_OFFER_RESOURCE_PRIORITY_HIGH = 3
     52 } DXGI_OFFER_RESOURCE_PRIORITY;
     53 typedef enum DXGI_ALPHA_MODE {
     54     DXGI_ALPHA_MODE_UNSPECIFIED = 0,
     55     DXGI_ALPHA_MODE_PREMULTIPLIED = 1,
     56     DXGI_ALPHA_MODE_STRAIGHT = 2,
     57     DXGI_ALPHA_MODE_IGNORE = 3,
     58     DXGI_ALPHA_MODE_FORCE_DWORD = 0xffffffff
     59 } DXGI_ALPHA_MODE;
     60 /*****************************************************************************
     61  * IDXGIDevice2 interface
     62  */
     63 #ifndef __IDXGIDevice2_INTERFACE_DEFINED__
     64 #define __IDXGIDevice2_INTERFACE_DEFINED__
     65 
     66 DEFINE_GUID(IID_IDXGIDevice2, 0x05008617, 0xfbfd, 0x4051, 0xa7,0x90, 0x14,0x48,0x84,0xb4,0xf6,0xa9);
     67 #if defined(__cplusplus) && !defined(CINTERFACE)
     68 MIDL_INTERFACE("05008617-fbfd-4051-a790-144884b4f6a9")
     69 IDXGIDevice2 : public IDXGIDevice1
     70 {
     71     virtual HRESULT STDMETHODCALLTYPE OfferResources(
     72         UINT NumResources,
     73         IDXGIResource *const *ppResources,
     74         DXGI_OFFER_RESOURCE_PRIORITY Priority) = 0;
     75 
     76     virtual HRESULT STDMETHODCALLTYPE ReclaimResources(
     77         UINT NumResources,
     78         IDXGIResource *const *ppResources,
     79         WINBOOL *pDiscarded) = 0;
     80 
     81     virtual HRESULT STDMETHODCALLTYPE EnqueueSetEvent(
     82         HANDLE hEvent) = 0;
     83 
     84 };
     85 #ifdef __CRT_UUID_DECL
     86 __CRT_UUID_DECL(IDXGIDevice2, 0x05008617, 0xfbfd, 0x4051, 0xa7,0x90, 0x14,0x48,0x84,0xb4,0xf6,0xa9)
     87 #endif
     88 #else
     89 typedef struct IDXGIDevice2Vtbl {
     90     BEGIN_INTERFACE
     91 
     92     /*** IUnknown methods ***/
     93     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
     94         IDXGIDevice2* This,
     95         REFIID riid,
     96         void **ppvObject);
     97 
     98     ULONG (STDMETHODCALLTYPE *AddRef)(
     99         IDXGIDevice2* This);
    100 
    101     ULONG (STDMETHODCALLTYPE *Release)(
    102         IDXGIDevice2* This);
    103 
    104     /*** IDXGIObject methods ***/
    105     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
    106         IDXGIDevice2* This,
    107         REFGUID guid,
    108         UINT data_size,
    109         const void *data);
    110 
    111     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
    112         IDXGIDevice2* This,
    113         REFGUID guid,
    114         const IUnknown *object);
    115 
    116     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
    117         IDXGIDevice2* This,
    118         REFGUID guid,
    119         UINT *data_size,
    120         void *data);
    121 
    122     HRESULT (STDMETHODCALLTYPE *GetParent)(
    123         IDXGIDevice2* This,
    124         REFIID riid,
    125         void **parent);
    126 
    127     /*** IDXGIDevice methods ***/
    128     HRESULT (STDMETHODCALLTYPE *GetAdapter)(
    129         IDXGIDevice2* This,
    130         IDXGIAdapter **adapter);
    131 
    132     HRESULT (STDMETHODCALLTYPE *CreateSurface)(
    133         IDXGIDevice2* This,
    134         const DXGI_SURFACE_DESC *desc,
    135         UINT surface_count,
    136         DXGI_USAGE usage,
    137         const DXGI_SHARED_RESOURCE *shared_resource,
    138         IDXGISurface **surface);
    139 
    140     HRESULT (STDMETHODCALLTYPE *QueryResourceResidency)(
    141         IDXGIDevice2* This,
    142         IUnknown *const *resources,
    143         DXGI_RESIDENCY *residency,
    144         UINT resource_count);
    145 
    146     HRESULT (STDMETHODCALLTYPE *SetGPUThreadPriority)(
    147         IDXGIDevice2* This,
    148         INT priority);
    149 
    150     HRESULT (STDMETHODCALLTYPE *GetGPUThreadPriority)(
    151         IDXGIDevice2* This,
    152         INT *priority);
    153 
    154     /*** IDXGIDevice1 methods ***/
    155     HRESULT (STDMETHODCALLTYPE *SetMaximumFrameLatency)(
    156         IDXGIDevice2* This,
    157         UINT MaxLatency);
    158 
    159     HRESULT (STDMETHODCALLTYPE *GetMaximumFrameLatency)(
    160         IDXGIDevice2* This,
    161         UINT *pMaxLatency);
    162 
    163     /*** IDXGIDevice2 methods ***/
    164     HRESULT (STDMETHODCALLTYPE *OfferResources)(
    165         IDXGIDevice2* This,
    166         UINT NumResources,
    167         IDXGIResource *const *ppResources,
    168         DXGI_OFFER_RESOURCE_PRIORITY Priority);
    169 
    170     HRESULT (STDMETHODCALLTYPE *ReclaimResources)(
    171         IDXGIDevice2* This,
    172         UINT NumResources,
    173         IDXGIResource *const *ppResources,
    174         WINBOOL *pDiscarded);
    175 
    176     HRESULT (STDMETHODCALLTYPE *EnqueueSetEvent)(
    177         IDXGIDevice2* This,
    178         HANDLE hEvent);
    179 
    180     END_INTERFACE
    181 } IDXGIDevice2Vtbl;
    182 interface IDXGIDevice2 {
    183     CONST_VTBL IDXGIDevice2Vtbl* lpVtbl;
    184 };
    185 
    186 #ifdef COBJMACROS
    187 #ifndef WIDL_C_INLINE_WRAPPERS
    188 /*** IUnknown methods ***/
    189 #define IDXGIDevice2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    190 #define IDXGIDevice2_AddRef(This) (This)->lpVtbl->AddRef(This)
    191 #define IDXGIDevice2_Release(This) (This)->lpVtbl->Release(This)
    192 /*** IDXGIObject methods ***/
    193 #define IDXGIDevice2_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
    194 #define IDXGIDevice2_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
    195 #define IDXGIDevice2_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
    196 #define IDXGIDevice2_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
    197 /*** IDXGIDevice methods ***/
    198 #define IDXGIDevice2_GetAdapter(This,adapter) (This)->lpVtbl->GetAdapter(This,adapter)
    199 #define IDXGIDevice2_CreateSurface(This,desc,surface_count,usage,shared_resource,surface) (This)->lpVtbl->CreateSurface(This,desc,surface_count,usage,shared_resource,surface)
    200 #define IDXGIDevice2_QueryResourceResidency(This,resources,residency,resource_count) (This)->lpVtbl->QueryResourceResidency(This,resources,residency,resource_count)
    201 #define IDXGIDevice2_SetGPUThreadPriority(This,priority) (This)->lpVtbl->SetGPUThreadPriority(This,priority)
    202 #define IDXGIDevice2_GetGPUThreadPriority(This,priority) (This)->lpVtbl->GetGPUThreadPriority(This,priority)
    203 /*** IDXGIDevice1 methods ***/
    204 #define IDXGIDevice2_SetMaximumFrameLatency(This,MaxLatency) (This)->lpVtbl->SetMaximumFrameLatency(This,MaxLatency)
    205 #define IDXGIDevice2_GetMaximumFrameLatency(This,pMaxLatency) (This)->lpVtbl->GetMaximumFrameLatency(This,pMaxLatency)
    206 /*** IDXGIDevice2 methods ***/
    207 #define IDXGIDevice2_OfferResources(This,NumResources,ppResources,Priority) (This)->lpVtbl->OfferResources(This,NumResources,ppResources,Priority)
    208 #define IDXGIDevice2_ReclaimResources(This,NumResources,ppResources,pDiscarded) (This)->lpVtbl->ReclaimResources(This,NumResources,ppResources,pDiscarded)
    209 #define IDXGIDevice2_EnqueueSetEvent(This,hEvent) (This)->lpVtbl->EnqueueSetEvent(This,hEvent)
    210 #else
    211 /*** IUnknown methods ***/
    212 static FORCEINLINE HRESULT IDXGIDevice2_QueryInterface(IDXGIDevice2* This,REFIID riid,void **ppvObject) {
    213     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    214 }
    215 static FORCEINLINE ULONG IDXGIDevice2_AddRef(IDXGIDevice2* This) {
    216     return This->lpVtbl->AddRef(This);
    217 }
    218 static FORCEINLINE ULONG IDXGIDevice2_Release(IDXGIDevice2* This) {
    219     return This->lpVtbl->Release(This);
    220 }
    221 /*** IDXGIObject methods ***/
    222 static FORCEINLINE HRESULT IDXGIDevice2_SetPrivateData(IDXGIDevice2* This,REFGUID guid,UINT data_size,const void *data) {
    223     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
    224 }
    225 static FORCEINLINE HRESULT IDXGIDevice2_SetPrivateDataInterface(IDXGIDevice2* This,REFGUID guid,const IUnknown *object) {
    226     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
    227 }
    228 static FORCEINLINE HRESULT IDXGIDevice2_GetPrivateData(IDXGIDevice2* This,REFGUID guid,UINT *data_size,void *data) {
    229     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
    230 }
    231 static FORCEINLINE HRESULT IDXGIDevice2_GetParent(IDXGIDevice2* This,REFIID riid,void **parent) {
    232     return This->lpVtbl->GetParent(This,riid,parent);
    233 }
    234 /*** IDXGIDevice methods ***/
    235 static FORCEINLINE HRESULT IDXGIDevice2_GetAdapter(IDXGIDevice2* This,IDXGIAdapter **adapter) {
    236     return This->lpVtbl->GetAdapter(This,adapter);
    237 }
    238 static FORCEINLINE HRESULT IDXGIDevice2_CreateSurface(IDXGIDevice2* This,const DXGI_SURFACE_DESC *desc,UINT surface_count,DXGI_USAGE usage,const DXGI_SHARED_RESOURCE *shared_resource,IDXGISurface **surface) {
    239     return This->lpVtbl->CreateSurface(This,desc,surface_count,usage,shared_resource,surface);
    240 }
    241 static FORCEINLINE HRESULT IDXGIDevice2_QueryResourceResidency(IDXGIDevice2* This,IUnknown *const *resources,DXGI_RESIDENCY *residency,UINT resource_count) {
    242     return This->lpVtbl->QueryResourceResidency(This,resources,residency,resource_count);
    243 }
    244 static FORCEINLINE HRESULT IDXGIDevice2_SetGPUThreadPriority(IDXGIDevice2* This,INT priority) {
    245     return This->lpVtbl->SetGPUThreadPriority(This,priority);
    246 }
    247 static FORCEINLINE HRESULT IDXGIDevice2_GetGPUThreadPriority(IDXGIDevice2* This,INT *priority) {
    248     return This->lpVtbl->GetGPUThreadPriority(This,priority);
    249 }
    250 /*** IDXGIDevice1 methods ***/
    251 static FORCEINLINE HRESULT IDXGIDevice2_SetMaximumFrameLatency(IDXGIDevice2* This,UINT MaxLatency) {
    252     return This->lpVtbl->SetMaximumFrameLatency(This,MaxLatency);
    253 }
    254 static FORCEINLINE HRESULT IDXGIDevice2_GetMaximumFrameLatency(IDXGIDevice2* This,UINT *pMaxLatency) {
    255     return This->lpVtbl->GetMaximumFrameLatency(This,pMaxLatency);
    256 }
    257 /*** IDXGIDevice2 methods ***/
    258 static FORCEINLINE HRESULT IDXGIDevice2_OfferResources(IDXGIDevice2* This,UINT NumResources,IDXGIResource *const *ppResources,DXGI_OFFER_RESOURCE_PRIORITY Priority) {
    259     return This->lpVtbl->OfferResources(This,NumResources,ppResources,Priority);
    260 }
    261 static FORCEINLINE HRESULT IDXGIDevice2_ReclaimResources(IDXGIDevice2* This,UINT NumResources,IDXGIResource *const *ppResources,WINBOOL *pDiscarded) {
    262     return This->lpVtbl->ReclaimResources(This,NumResources,ppResources,pDiscarded);
    263 }
    264 static FORCEINLINE HRESULT IDXGIDevice2_EnqueueSetEvent(IDXGIDevice2* This,HANDLE hEvent) {
    265     return This->lpVtbl->EnqueueSetEvent(This,hEvent);
    266 }
    267 #endif
    268 #endif
    269 
    270 #endif
    271 
    272 HRESULT STDMETHODCALLTYPE IDXGIDevice2_OfferResources_Proxy(
    273     IDXGIDevice2* This,
    274     UINT NumResources,
    275     IDXGIResource *const *ppResources,
    276     DXGI_OFFER_RESOURCE_PRIORITY Priority);
    277 void __RPC_STUB IDXGIDevice2_OfferResources_Stub(
    278     IRpcStubBuffer* This,
    279     IRpcChannelBuffer* pRpcChannelBuffer,
    280     PRPC_MESSAGE pRpcMessage,
    281     DWORD* pdwStubPhase);
    282 HRESULT STDMETHODCALLTYPE IDXGIDevice2_ReclaimResources_Proxy(
    283     IDXGIDevice2* This,
    284     UINT NumResources,
    285     IDXGIResource *const *ppResources,
    286     WINBOOL *pDiscarded);
    287 void __RPC_STUB IDXGIDevice2_ReclaimResources_Stub(
    288     IRpcStubBuffer* This,
    289     IRpcChannelBuffer* pRpcChannelBuffer,
    290     PRPC_MESSAGE pRpcMessage,
    291     DWORD* pdwStubPhase);
    292 HRESULT STDMETHODCALLTYPE IDXGIDevice2_EnqueueSetEvent_Proxy(
    293     IDXGIDevice2* This,
    294     HANDLE hEvent);
    295 void __RPC_STUB IDXGIDevice2_EnqueueSetEvent_Stub(
    296     IRpcStubBuffer* This,
    297     IRpcChannelBuffer* pRpcChannelBuffer,
    298     PRPC_MESSAGE pRpcMessage,
    299     DWORD* pdwStubPhase);
    300 
    301 #endif  /* __IDXGIDevice2_INTERFACE_DEFINED__ */
    302 
    303 typedef enum DXGI_SCALING {
    304     DXGI_SCALING_STRETCH = 0,
    305     DXGI_SCALING_NONE = 1
    306 } DXGI_SCALING;
    307 typedef struct DXGI_SWAP_CHAIN_DESC1 {
    308     UINT Width;
    309     UINT Height;
    310     DXGI_FORMAT Format;
    311     WINBOOL Stereo;
    312     DXGI_SAMPLE_DESC SampleDesc;
    313     DXGI_USAGE BufferUsage;
    314     UINT BufferCount;
    315     DXGI_SCALING Scaling;
    316     DXGI_SWAP_EFFECT SwapEffect;
    317     DXGI_ALPHA_MODE AlphaMode;
    318     UINT Flags;
    319 } DXGI_SWAP_CHAIN_DESC1;
    320 typedef struct DXGI_SWAP_CHAIN_FULLSCREEN_DESC {
    321     DXGI_RATIONAL RefreshRate;
    322     DXGI_MODE_SCANLINE_ORDER ScanlineOrdering;
    323     DXGI_MODE_SCALING Scaling;
    324     WINBOOL Windowed;
    325 } DXGI_SWAP_CHAIN_FULLSCREEN_DESC;
    326 typedef struct DXGI_PRESENT_PARAMETERS {
    327     UINT DirtyRectsCount;
    328     RECT *pDirtyRects;
    329     RECT *pScrollRect;
    330     POINT *pScrollOffset;
    331 } DXGI_PRESENT_PARAMETERS;
    332 /*****************************************************************************
    333  * IDXGISwapChain1 interface
    334  */
    335 #ifndef __IDXGISwapChain1_INTERFACE_DEFINED__
    336 #define __IDXGISwapChain1_INTERFACE_DEFINED__
    337 
    338 DEFINE_GUID(IID_IDXGISwapChain1, 0x790a45f7, 0x0d42, 0x4876, 0x98,0x3a, 0x0a,0x55,0xcf,0xe6,0xf4,0xaa);
    339 #if defined(__cplusplus) && !defined(CINTERFACE)
    340 MIDL_INTERFACE("790a45f7-0d42-4876-983a-0a55cfe6f4aa")
    341 IDXGISwapChain1 : public IDXGISwapChain
    342 {
    343     virtual HRESULT STDMETHODCALLTYPE GetDesc1(
    344         DXGI_SWAP_CHAIN_DESC1 *pDesc) = 0;
    345 
    346     virtual HRESULT STDMETHODCALLTYPE GetFullscreenDesc(
    347         DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc) = 0;
    348 
    349     virtual HRESULT STDMETHODCALLTYPE GetHwnd(
    350         HWND *pHwnd) = 0;
    351 
    352     virtual HRESULT STDMETHODCALLTYPE GetCoreWindow(
    353         REFIID refiid,
    354         void **ppUnk) = 0;
    355 
    356     virtual HRESULT STDMETHODCALLTYPE Present1(
    357         UINT SyncInterval,
    358         UINT PresentFlags,
    359         const DXGI_PRESENT_PARAMETERS *pPresentParameters) = 0;
    360 
    361     virtual WINBOOL STDMETHODCALLTYPE IsTemporaryMonoSupported(
    362         ) = 0;
    363 
    364     virtual HRESULT STDMETHODCALLTYPE GetRestrictToOutput(
    365         IDXGIOutput **ppRestrictToOutput) = 0;
    366 
    367     virtual HRESULT STDMETHODCALLTYPE SetBackgroundColor(
    368         const DXGI_RGBA *pColor) = 0;
    369 
    370     virtual HRESULT STDMETHODCALLTYPE GetBackgroundColor(
    371         DXGI_RGBA *pColor) = 0;
    372 
    373     virtual HRESULT STDMETHODCALLTYPE SetRotation(
    374         DXGI_MODE_ROTATION Rotation) = 0;
    375 
    376     virtual HRESULT STDMETHODCALLTYPE GetRotation(
    377         DXGI_MODE_ROTATION *pRotation) = 0;
    378 
    379 };
    380 #ifdef __CRT_UUID_DECL
    381 __CRT_UUID_DECL(IDXGISwapChain1, 0x790a45f7, 0x0d42, 0x4876, 0x98,0x3a, 0x0a,0x55,0xcf,0xe6,0xf4,0xaa)
    382 #endif
    383 #else
    384 typedef struct IDXGISwapChain1Vtbl {
    385     BEGIN_INTERFACE
    386 
    387     /*** IUnknown methods ***/
    388     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    389         IDXGISwapChain1* This,
    390         REFIID riid,
    391         void **ppvObject);
    392 
    393     ULONG (STDMETHODCALLTYPE *AddRef)(
    394         IDXGISwapChain1* This);
    395 
    396     ULONG (STDMETHODCALLTYPE *Release)(
    397         IDXGISwapChain1* This);
    398 
    399     /*** IDXGIObject methods ***/
    400     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
    401         IDXGISwapChain1* This,
    402         REFGUID guid,
    403         UINT data_size,
    404         const void *data);
    405 
    406     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
    407         IDXGISwapChain1* This,
    408         REFGUID guid,
    409         const IUnknown *object);
    410 
    411     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
    412         IDXGISwapChain1* This,
    413         REFGUID guid,
    414         UINT *data_size,
    415         void *data);
    416 
    417     HRESULT (STDMETHODCALLTYPE *GetParent)(
    418         IDXGISwapChain1* This,
    419         REFIID riid,
    420         void **parent);
    421 
    422     /*** IDXGIDeviceSubObject methods ***/
    423     HRESULT (STDMETHODCALLTYPE *GetDevice)(
    424         IDXGISwapChain1* This,
    425         REFIID riid,
    426         void **device);
    427 
    428     /*** IDXGISwapChain methods ***/
    429     HRESULT (STDMETHODCALLTYPE *Present)(
    430         IDXGISwapChain1* This,
    431         UINT sync_interval,
    432         UINT flags);
    433 
    434     HRESULT (STDMETHODCALLTYPE *GetBuffer)(
    435         IDXGISwapChain1* This,
    436         UINT buffer_idx,
    437         REFIID riid,
    438         void **surface);
    439 
    440     HRESULT (STDMETHODCALLTYPE *SetFullscreenState)(
    441         IDXGISwapChain1* This,
    442         WINBOOL fullscreen,
    443         IDXGIOutput *target);
    444 
    445     HRESULT (STDMETHODCALLTYPE *GetFullscreenState)(
    446         IDXGISwapChain1* This,
    447         WINBOOL *fullscreen,
    448         IDXGIOutput **target);
    449 
    450     HRESULT (STDMETHODCALLTYPE *GetDesc)(
    451         IDXGISwapChain1* This,
    452         DXGI_SWAP_CHAIN_DESC *desc);
    453 
    454     HRESULT (STDMETHODCALLTYPE *ResizeBuffers)(
    455         IDXGISwapChain1* This,
    456         UINT buffer_count,
    457         UINT width,
    458         UINT height,
    459         DXGI_FORMAT format,
    460         UINT flags);
    461 
    462     HRESULT (STDMETHODCALLTYPE *ResizeTarget)(
    463         IDXGISwapChain1* This,
    464         const DXGI_MODE_DESC *target_mode_desc);
    465 
    466     HRESULT (STDMETHODCALLTYPE *GetContainingOutput)(
    467         IDXGISwapChain1* This,
    468         IDXGIOutput **output);
    469 
    470     HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)(
    471         IDXGISwapChain1* This,
    472         DXGI_FRAME_STATISTICS *stats);
    473 
    474     HRESULT (STDMETHODCALLTYPE *GetLastPresentCount)(
    475         IDXGISwapChain1* This,
    476         UINT *last_present_count);
    477 
    478     /*** IDXGISwapChain1 methods ***/
    479     HRESULT (STDMETHODCALLTYPE *GetDesc1)(
    480         IDXGISwapChain1* This,
    481         DXGI_SWAP_CHAIN_DESC1 *pDesc);
    482 
    483     HRESULT (STDMETHODCALLTYPE *GetFullscreenDesc)(
    484         IDXGISwapChain1* This,
    485         DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc);
    486 
    487     HRESULT (STDMETHODCALLTYPE *GetHwnd)(
    488         IDXGISwapChain1* This,
    489         HWND *pHwnd);
    490 
    491     HRESULT (STDMETHODCALLTYPE *GetCoreWindow)(
    492         IDXGISwapChain1* This,
    493         REFIID refiid,
    494         void **ppUnk);
    495 
    496     HRESULT (STDMETHODCALLTYPE *Present1)(
    497         IDXGISwapChain1* This,
    498         UINT SyncInterval,
    499         UINT PresentFlags,
    500         const DXGI_PRESENT_PARAMETERS *pPresentParameters);
    501 
    502     WINBOOL (STDMETHODCALLTYPE *IsTemporaryMonoSupported)(
    503         IDXGISwapChain1* This);
    504 
    505     HRESULT (STDMETHODCALLTYPE *GetRestrictToOutput)(
    506         IDXGISwapChain1* This,
    507         IDXGIOutput **ppRestrictToOutput);
    508 
    509     HRESULT (STDMETHODCALLTYPE *SetBackgroundColor)(
    510         IDXGISwapChain1* This,
    511         const DXGI_RGBA *pColor);
    512 
    513     HRESULT (STDMETHODCALLTYPE *GetBackgroundColor)(
    514         IDXGISwapChain1* This,
    515         DXGI_RGBA *pColor);
    516 
    517     HRESULT (STDMETHODCALLTYPE *SetRotation)(
    518         IDXGISwapChain1* This,
    519         DXGI_MODE_ROTATION Rotation);
    520 
    521     HRESULT (STDMETHODCALLTYPE *GetRotation)(
    522         IDXGISwapChain1* This,
    523         DXGI_MODE_ROTATION *pRotation);
    524 
    525     END_INTERFACE
    526 } IDXGISwapChain1Vtbl;
    527 interface IDXGISwapChain1 {
    528     CONST_VTBL IDXGISwapChain1Vtbl* lpVtbl;
    529 };
    530 
    531 #ifdef COBJMACROS
    532 #ifndef WIDL_C_INLINE_WRAPPERS
    533 /*** IUnknown methods ***/
    534 #define IDXGISwapChain1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    535 #define IDXGISwapChain1_AddRef(This) (This)->lpVtbl->AddRef(This)
    536 #define IDXGISwapChain1_Release(This) (This)->lpVtbl->Release(This)
    537 /*** IDXGIObject methods ***/
    538 #define IDXGISwapChain1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
    539 #define IDXGISwapChain1_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
    540 #define IDXGISwapChain1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
    541 #define IDXGISwapChain1_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
    542 /*** IDXGIDeviceSubObject methods ***/
    543 #define IDXGISwapChain1_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
    544 /*** IDXGISwapChain methods ***/
    545 #define IDXGISwapChain1_Present(This,sync_interval,flags) (This)->lpVtbl->Present(This,sync_interval,flags)
    546 #define IDXGISwapChain1_GetBuffer(This,buffer_idx,riid,surface) (This)->lpVtbl->GetBuffer(This,buffer_idx,riid,surface)
    547 #define IDXGISwapChain1_SetFullscreenState(This,fullscreen,target) (This)->lpVtbl->SetFullscreenState(This,fullscreen,target)
    548 #define IDXGISwapChain1_GetFullscreenState(This,fullscreen,target) (This)->lpVtbl->GetFullscreenState(This,fullscreen,target)
    549 #define IDXGISwapChain1_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
    550 #define IDXGISwapChain1_ResizeBuffers(This,buffer_count,width,height,format,flags) (This)->lpVtbl->ResizeBuffers(This,buffer_count,width,height,format,flags)
    551 #define IDXGISwapChain1_ResizeTarget(This,target_mode_desc) (This)->lpVtbl->ResizeTarget(This,target_mode_desc)
    552 #define IDXGISwapChain1_GetContainingOutput(This,output) (This)->lpVtbl->GetContainingOutput(This,output)
    553 #define IDXGISwapChain1_GetFrameStatistics(This,stats) (This)->lpVtbl->GetFrameStatistics(This,stats)
    554 #define IDXGISwapChain1_GetLastPresentCount(This,last_present_count) (This)->lpVtbl->GetLastPresentCount(This,last_present_count)
    555 /*** IDXGISwapChain1 methods ***/
    556 #define IDXGISwapChain1_GetDesc1(This,pDesc) (This)->lpVtbl->GetDesc1(This,pDesc)
    557 #define IDXGISwapChain1_GetFullscreenDesc(This,pDesc) (This)->lpVtbl->GetFullscreenDesc(This,pDesc)
    558 #define IDXGISwapChain1_GetHwnd(This,pHwnd) (This)->lpVtbl->GetHwnd(This,pHwnd)
    559 #define IDXGISwapChain1_GetCoreWindow(This,refiid,ppUnk) (This)->lpVtbl->GetCoreWindow(This,refiid,ppUnk)
    560 #define IDXGISwapChain1_Present1(This,SyncInterval,PresentFlags,pPresentParameters) (This)->lpVtbl->Present1(This,SyncInterval,PresentFlags,pPresentParameters)
    561 #define IDXGISwapChain1_IsTemporaryMonoSupported(This) (This)->lpVtbl->IsTemporaryMonoSupported(This)
    562 #define IDXGISwapChain1_GetRestrictToOutput(This,ppRestrictToOutput) (This)->lpVtbl->GetRestrictToOutput(This,ppRestrictToOutput)
    563 #define IDXGISwapChain1_SetBackgroundColor(This,pColor) (This)->lpVtbl->SetBackgroundColor(This,pColor)
    564 #define IDXGISwapChain1_GetBackgroundColor(This,pColor) (This)->lpVtbl->GetBackgroundColor(This,pColor)
    565 #define IDXGISwapChain1_SetRotation(This,Rotation) (This)->lpVtbl->SetRotation(This,Rotation)
    566 #define IDXGISwapChain1_GetRotation(This,pRotation) (This)->lpVtbl->GetRotation(This,pRotation)
    567 #else
    568 /*** IUnknown methods ***/
    569 static FORCEINLINE HRESULT IDXGISwapChain1_QueryInterface(IDXGISwapChain1* This,REFIID riid,void **ppvObject) {
    570     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    571 }
    572 static FORCEINLINE ULONG IDXGISwapChain1_AddRef(IDXGISwapChain1* This) {
    573     return This->lpVtbl->AddRef(This);
    574 }
    575 static FORCEINLINE ULONG IDXGISwapChain1_Release(IDXGISwapChain1* This) {
    576     return This->lpVtbl->Release(This);
    577 }
    578 /*** IDXGIObject methods ***/
    579 static FORCEINLINE HRESULT IDXGISwapChain1_SetPrivateData(IDXGISwapChain1* This,REFGUID guid,UINT data_size,const void *data) {
    580     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
    581 }
    582 static FORCEINLINE HRESULT IDXGISwapChain1_SetPrivateDataInterface(IDXGISwapChain1* This,REFGUID guid,const IUnknown *object) {
    583     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
    584 }
    585 static FORCEINLINE HRESULT IDXGISwapChain1_GetPrivateData(IDXGISwapChain1* This,REFGUID guid,UINT *data_size,void *data) {
    586     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
    587 }
    588 static FORCEINLINE HRESULT IDXGISwapChain1_GetParent(IDXGISwapChain1* This,REFIID riid,void **parent) {
    589     return This->lpVtbl->GetParent(This,riid,parent);
    590 }
    591 /*** IDXGIDeviceSubObject methods ***/
    592 static FORCEINLINE HRESULT IDXGISwapChain1_GetDevice(IDXGISwapChain1* This,REFIID riid,void **device) {
    593     return This->lpVtbl->GetDevice(This,riid,device);
    594 }
    595 /*** IDXGISwapChain methods ***/
    596 static FORCEINLINE HRESULT IDXGISwapChain1_Present(IDXGISwapChain1* This,UINT sync_interval,UINT flags) {
    597     return This->lpVtbl->Present(This,sync_interval,flags);
    598 }
    599 static FORCEINLINE HRESULT IDXGISwapChain1_GetBuffer(IDXGISwapChain1* This,UINT buffer_idx,REFIID riid,void **surface) {
    600     return This->lpVtbl->GetBuffer(This,buffer_idx,riid,surface);
    601 }
    602 static FORCEINLINE HRESULT IDXGISwapChain1_SetFullscreenState(IDXGISwapChain1* This,WINBOOL fullscreen,IDXGIOutput *target) {
    603     return This->lpVtbl->SetFullscreenState(This,fullscreen,target);
    604 }
    605 static FORCEINLINE HRESULT IDXGISwapChain1_GetFullscreenState(IDXGISwapChain1* This,WINBOOL *fullscreen,IDXGIOutput **target) {
    606     return This->lpVtbl->GetFullscreenState(This,fullscreen,target);
    607 }
    608 static FORCEINLINE HRESULT IDXGISwapChain1_GetDesc(IDXGISwapChain1* This,DXGI_SWAP_CHAIN_DESC *desc) {
    609     return This->lpVtbl->GetDesc(This,desc);
    610 }
    611 static FORCEINLINE HRESULT IDXGISwapChain1_ResizeBuffers(IDXGISwapChain1* This,UINT buffer_count,UINT width,UINT height,DXGI_FORMAT format,UINT flags) {
    612     return This->lpVtbl->ResizeBuffers(This,buffer_count,width,height,format,flags);
    613 }
    614 static FORCEINLINE HRESULT IDXGISwapChain1_ResizeTarget(IDXGISwapChain1* This,const DXGI_MODE_DESC *target_mode_desc) {
    615     return This->lpVtbl->ResizeTarget(This,target_mode_desc);
    616 }
    617 static FORCEINLINE HRESULT IDXGISwapChain1_GetContainingOutput(IDXGISwapChain1* This,IDXGIOutput **output) {
    618     return This->lpVtbl->GetContainingOutput(This,output);
    619 }
    620 static FORCEINLINE HRESULT IDXGISwapChain1_GetFrameStatistics(IDXGISwapChain1* This,DXGI_FRAME_STATISTICS *stats) {
    621     return This->lpVtbl->GetFrameStatistics(This,stats);
    622 }
    623 static FORCEINLINE HRESULT IDXGISwapChain1_GetLastPresentCount(IDXGISwapChain1* This,UINT *last_present_count) {
    624     return This->lpVtbl->GetLastPresentCount(This,last_present_count);
    625 }
    626 /*** IDXGISwapChain1 methods ***/
    627 static FORCEINLINE HRESULT IDXGISwapChain1_GetDesc1(IDXGISwapChain1* This,DXGI_SWAP_CHAIN_DESC1 *pDesc) {
    628     return This->lpVtbl->GetDesc1(This,pDesc);
    629 }
    630 static FORCEINLINE HRESULT IDXGISwapChain1_GetFullscreenDesc(IDXGISwapChain1* This,DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc) {
    631     return This->lpVtbl->GetFullscreenDesc(This,pDesc);
    632 }
    633 static FORCEINLINE HRESULT IDXGISwapChain1_GetHwnd(IDXGISwapChain1* This,HWND *pHwnd) {
    634     return This->lpVtbl->GetHwnd(This,pHwnd);
    635 }
    636 static FORCEINLINE HRESULT IDXGISwapChain1_GetCoreWindow(IDXGISwapChain1* This,REFIID refiid,void **ppUnk) {
    637     return This->lpVtbl->GetCoreWindow(This,refiid,ppUnk);
    638 }
    639 static FORCEINLINE HRESULT IDXGISwapChain1_Present1(IDXGISwapChain1* This,UINT SyncInterval,UINT PresentFlags,const DXGI_PRESENT_PARAMETERS *pPresentParameters) {
    640     return This->lpVtbl->Present1(This,SyncInterval,PresentFlags,pPresentParameters);
    641 }
    642 static FORCEINLINE WINBOOL IDXGISwapChain1_IsTemporaryMonoSupported(IDXGISwapChain1* This) {
    643     return This->lpVtbl->IsTemporaryMonoSupported(This);
    644 }
    645 static FORCEINLINE HRESULT IDXGISwapChain1_GetRestrictToOutput(IDXGISwapChain1* This,IDXGIOutput **ppRestrictToOutput) {
    646     return This->lpVtbl->GetRestrictToOutput(This,ppRestrictToOutput);
    647 }
    648 static FORCEINLINE HRESULT IDXGISwapChain1_SetBackgroundColor(IDXGISwapChain1* This,const DXGI_RGBA *pColor) {
    649     return This->lpVtbl->SetBackgroundColor(This,pColor);
    650 }
    651 static FORCEINLINE HRESULT IDXGISwapChain1_GetBackgroundColor(IDXGISwapChain1* This,DXGI_RGBA *pColor) {
    652     return This->lpVtbl->GetBackgroundColor(This,pColor);
    653 }
    654 static FORCEINLINE HRESULT IDXGISwapChain1_SetRotation(IDXGISwapChain1* This,DXGI_MODE_ROTATION Rotation) {
    655     return This->lpVtbl->SetRotation(This,Rotation);
    656 }
    657 static FORCEINLINE HRESULT IDXGISwapChain1_GetRotation(IDXGISwapChain1* This,DXGI_MODE_ROTATION *pRotation) {
    658     return This->lpVtbl->GetRotation(This,pRotation);
    659 }
    660 #endif
    661 #endif
    662 
    663 #endif
    664 
    665 HRESULT STDMETHODCALLTYPE IDXGISwapChain1_GetDesc1_Proxy(
    666     IDXGISwapChain1* This,
    667     DXGI_SWAP_CHAIN_DESC1 *pDesc);
    668 void __RPC_STUB IDXGISwapChain1_GetDesc1_Stub(
    669     IRpcStubBuffer* This,
    670     IRpcChannelBuffer* pRpcChannelBuffer,
    671     PRPC_MESSAGE pRpcMessage,
    672     DWORD* pdwStubPhase);
    673 HRESULT STDMETHODCALLTYPE IDXGISwapChain1_GetFullscreenDesc_Proxy(
    674     IDXGISwapChain1* This,
    675     DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc);
    676 void __RPC_STUB IDXGISwapChain1_GetFullscreenDesc_Stub(
    677     IRpcStubBuffer* This,
    678     IRpcChannelBuffer* pRpcChannelBuffer,
    679     PRPC_MESSAGE pRpcMessage,
    680     DWORD* pdwStubPhase);
    681 HRESULT STDMETHODCALLTYPE IDXGISwapChain1_GetHwnd_Proxy(
    682     IDXGISwapChain1* This,
    683     HWND *pHwnd);
    684 void __RPC_STUB IDXGISwapChain1_GetHwnd_Stub(
    685     IRpcStubBuffer* This,
    686     IRpcChannelBuffer* pRpcChannelBuffer,
    687     PRPC_MESSAGE pRpcMessage,
    688     DWORD* pdwStubPhase);
    689 HRESULT STDMETHODCALLTYPE IDXGISwapChain1_GetCoreWindow_Proxy(
    690     IDXGISwapChain1* This,
    691     REFIID refiid,
    692     void **ppUnk);
    693 void __RPC_STUB IDXGISwapChain1_GetCoreWindow_Stub(
    694     IRpcStubBuffer* This,
    695     IRpcChannelBuffer* pRpcChannelBuffer,
    696     PRPC_MESSAGE pRpcMessage,
    697     DWORD* pdwStubPhase);
    698 HRESULT STDMETHODCALLTYPE IDXGISwapChain1_Present1_Proxy(
    699     IDXGISwapChain1* This,
    700     UINT SyncInterval,
    701     UINT PresentFlags,
    702     const DXGI_PRESENT_PARAMETERS *pPresentParameters);
    703 void __RPC_STUB IDXGISwapChain1_Present1_Stub(
    704     IRpcStubBuffer* This,
    705     IRpcChannelBuffer* pRpcChannelBuffer,
    706     PRPC_MESSAGE pRpcMessage,
    707     DWORD* pdwStubPhase);
    708 WINBOOL STDMETHODCALLTYPE IDXGISwapChain1_IsTemporaryMonoSupported_Proxy(
    709     IDXGISwapChain1* This);
    710 void __RPC_STUB IDXGISwapChain1_IsTemporaryMonoSupported_Stub(
    711     IRpcStubBuffer* This,
    712     IRpcChannelBuffer* pRpcChannelBuffer,
    713     PRPC_MESSAGE pRpcMessage,
    714     DWORD* pdwStubPhase);
    715 HRESULT STDMETHODCALLTYPE IDXGISwapChain1_GetRestrictToOutput_Proxy(
    716     IDXGISwapChain1* This,
    717     IDXGIOutput **ppRestrictToOutput);
    718 void __RPC_STUB IDXGISwapChain1_GetRestrictToOutput_Stub(
    719     IRpcStubBuffer* This,
    720     IRpcChannelBuffer* pRpcChannelBuffer,
    721     PRPC_MESSAGE pRpcMessage,
    722     DWORD* pdwStubPhase);
    723 HRESULT STDMETHODCALLTYPE IDXGISwapChain1_SetBackgroundColor_Proxy(
    724     IDXGISwapChain1* This,
    725     const DXGI_RGBA *pColor);
    726 void __RPC_STUB IDXGISwapChain1_SetBackgroundColor_Stub(
    727     IRpcStubBuffer* This,
    728     IRpcChannelBuffer* pRpcChannelBuffer,
    729     PRPC_MESSAGE pRpcMessage,
    730     DWORD* pdwStubPhase);
    731 HRESULT STDMETHODCALLTYPE IDXGISwapChain1_GetBackgroundColor_Proxy(
    732     IDXGISwapChain1* This,
    733     DXGI_RGBA *pColor);
    734 void __RPC_STUB IDXGISwapChain1_GetBackgroundColor_Stub(
    735     IRpcStubBuffer* This,
    736     IRpcChannelBuffer* pRpcChannelBuffer,
    737     PRPC_MESSAGE pRpcMessage,
    738     DWORD* pdwStubPhase);
    739 HRESULT STDMETHODCALLTYPE IDXGISwapChain1_SetRotation_Proxy(
    740     IDXGISwapChain1* This,
    741     DXGI_MODE_ROTATION Rotation);
    742 void __RPC_STUB IDXGISwapChain1_SetRotation_Stub(
    743     IRpcStubBuffer* This,
    744     IRpcChannelBuffer* pRpcChannelBuffer,
    745     PRPC_MESSAGE pRpcMessage,
    746     DWORD* pdwStubPhase);
    747 HRESULT STDMETHODCALLTYPE IDXGISwapChain1_GetRotation_Proxy(
    748     IDXGISwapChain1* This,
    749     DXGI_MODE_ROTATION *pRotation);
    750 void __RPC_STUB IDXGISwapChain1_GetRotation_Stub(
    751     IRpcStubBuffer* This,
    752     IRpcChannelBuffer* pRpcChannelBuffer,
    753     PRPC_MESSAGE pRpcMessage,
    754     DWORD* pdwStubPhase);
    755 
    756 #endif  /* __IDXGISwapChain1_INTERFACE_DEFINED__ */
    757 
    758 /*****************************************************************************
    759  * IDXGIFactory2 interface
    760  */
    761 #ifndef __IDXGIFactory2_INTERFACE_DEFINED__
    762 #define __IDXGIFactory2_INTERFACE_DEFINED__
    763 
    764 DEFINE_GUID(IID_IDXGIFactory2, 0x50c83a1c, 0xe072, 0x4c48, 0x87,0xb0, 0x36,0x30,0xfa,0x36,0xa6,0xd0);
    765 #if defined(__cplusplus) && !defined(CINTERFACE)
    766 MIDL_INTERFACE("50c83a1c-e072-4c48-87b0-3630fa36a6d0")
    767 IDXGIFactory2 : public IDXGIFactory1
    768 {
    769     virtual WINBOOL STDMETHODCALLTYPE IsWindowedStereoEnabled(
    770         ) = 0;
    771 
    772     virtual HRESULT STDMETHODCALLTYPE CreateSwapChainForHwnd(
    773         IUnknown *pDevice,
    774         HWND hWnd,
    775         const DXGI_SWAP_CHAIN_DESC1 *pDesc,
    776         const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,
    777         IDXGIOutput *pRestrictToOutput,
    778         IDXGISwapChain1 **ppSwapChain) = 0;
    779 
    780     virtual HRESULT STDMETHODCALLTYPE CreateSwapChainForCoreWindow(
    781         IUnknown *pDevice,
    782         IUnknown *pWindow,
    783         const DXGI_SWAP_CHAIN_DESC1 *pDesc,
    784         IDXGIOutput *pRestrictToOutput,
    785         IDXGISwapChain1 **ppSwapChain) = 0;
    786 
    787     virtual HRESULT STDMETHODCALLTYPE GetSharedResourceAdapterLuid(
    788         HANDLE hResource,
    789         LUID *pLuid) = 0;
    790 
    791     virtual HRESULT STDMETHODCALLTYPE RegisterOcclusionStatusWindow(
    792         HWND WindowHandle,
    793         UINT wMsg,
    794         DWORD *pdwCookie) = 0;
    795 
    796     virtual HRESULT STDMETHODCALLTYPE RegisterStereoStatusEvent(
    797         HANDLE hEvent,
    798         DWORD *pdwCookie) = 0;
    799 
    800     virtual void STDMETHODCALLTYPE UnregisterStereoStatus(
    801         DWORD dwCookie) = 0;
    802 
    803     virtual HRESULT STDMETHODCALLTYPE RegisterStereoStatusWindow(
    804         HWND WindowHandle,
    805         UINT wMsg,
    806         DWORD *pdwCookie) = 0;
    807 
    808     virtual HRESULT STDMETHODCALLTYPE RegisterOcclusionStatusEvent(
    809         HANDLE hEvent,
    810         DWORD *pdwCookie) = 0;
    811 
    812     virtual void STDMETHODCALLTYPE UnregisterOcclusionStatus(
    813         DWORD dwCookie) = 0;
    814 
    815     virtual HRESULT STDMETHODCALLTYPE CreateSwapChainForComposition(
    816         IUnknown *pDevice,
    817         const DXGI_SWAP_CHAIN_DESC1 *pDesc,
    818         IDXGIOutput *pRestrictToOutput,
    819         IDXGISwapChain1 **ppSwapChain) = 0;
    820 
    821 };
    822 #ifdef __CRT_UUID_DECL
    823 __CRT_UUID_DECL(IDXGIFactory2, 0x50c83a1c, 0xe072, 0x4c48, 0x87,0xb0, 0x36,0x30,0xfa,0x36,0xa6,0xd0)
    824 #endif
    825 #else
    826 typedef struct IDXGIFactory2Vtbl {
    827     BEGIN_INTERFACE
    828 
    829     /*** IUnknown methods ***/
    830     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    831         IDXGIFactory2* This,
    832         REFIID riid,
    833         void **ppvObject);
    834 
    835     ULONG (STDMETHODCALLTYPE *AddRef)(
    836         IDXGIFactory2* This);
    837 
    838     ULONG (STDMETHODCALLTYPE *Release)(
    839         IDXGIFactory2* This);
    840 
    841     /*** IDXGIObject methods ***/
    842     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
    843         IDXGIFactory2* This,
    844         REFGUID guid,
    845         UINT data_size,
    846         const void *data);
    847 
    848     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
    849         IDXGIFactory2* This,
    850         REFGUID guid,
    851         const IUnknown *object);
    852 
    853     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
    854         IDXGIFactory2* This,
    855         REFGUID guid,
    856         UINT *data_size,
    857         void *data);
    858 
    859     HRESULT (STDMETHODCALLTYPE *GetParent)(
    860         IDXGIFactory2* This,
    861         REFIID riid,
    862         void **parent);
    863 
    864     /*** IDXGIFactory methods ***/
    865     HRESULT (STDMETHODCALLTYPE *EnumAdapters)(
    866         IDXGIFactory2* This,
    867         UINT adapter_idx,
    868         IDXGIAdapter **adapter);
    869 
    870     HRESULT (STDMETHODCALLTYPE *MakeWindowAssociation)(
    871         IDXGIFactory2* This,
    872         HWND window,
    873         UINT flags);
    874 
    875     HRESULT (STDMETHODCALLTYPE *GetWindowAssociation)(
    876         IDXGIFactory2* This,
    877         HWND *window);
    878 
    879     HRESULT (STDMETHODCALLTYPE *CreateSwapChain)(
    880         IDXGIFactory2* This,
    881         IUnknown *device,
    882         DXGI_SWAP_CHAIN_DESC *desc,
    883         IDXGISwapChain **swapchain);
    884 
    885     HRESULT (STDMETHODCALLTYPE *CreateSoftwareAdapter)(
    886         IDXGIFactory2* This,
    887         HMODULE swrast,
    888         IDXGIAdapter **adapter);
    889 
    890     /*** IDXGIFactory1 methods ***/
    891     HRESULT (STDMETHODCALLTYPE *EnumAdapters1)(
    892         IDXGIFactory2* This,
    893         UINT Adapter,
    894         IDXGIAdapter1 **ppAdapter);
    895 
    896     WINBOOL (STDMETHODCALLTYPE *IsCurrent)(
    897         IDXGIFactory2* This);
    898 
    899     /*** IDXGIFactory2 methods ***/
    900     WINBOOL (STDMETHODCALLTYPE *IsWindowedStereoEnabled)(
    901         IDXGIFactory2* This);
    902 
    903     HRESULT (STDMETHODCALLTYPE *CreateSwapChainForHwnd)(
    904         IDXGIFactory2* This,
    905         IUnknown *pDevice,
    906         HWND hWnd,
    907         const DXGI_SWAP_CHAIN_DESC1 *pDesc,
    908         const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,
    909         IDXGIOutput *pRestrictToOutput,
    910         IDXGISwapChain1 **ppSwapChain);
    911 
    912     HRESULT (STDMETHODCALLTYPE *CreateSwapChainForCoreWindow)(
    913         IDXGIFactory2* This,
    914         IUnknown *pDevice,
    915         IUnknown *pWindow,
    916         const DXGI_SWAP_CHAIN_DESC1 *pDesc,
    917         IDXGIOutput *pRestrictToOutput,
    918         IDXGISwapChain1 **ppSwapChain);
    919 
    920     HRESULT (STDMETHODCALLTYPE *GetSharedResourceAdapterLuid)(
    921         IDXGIFactory2* This,
    922         HANDLE hResource,
    923         LUID *pLuid);
    924 
    925     HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusWindow)(
    926         IDXGIFactory2* This,
    927         HWND WindowHandle,
    928         UINT wMsg,
    929         DWORD *pdwCookie);
    930 
    931     HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusEvent)(
    932         IDXGIFactory2* This,
    933         HANDLE hEvent,
    934         DWORD *pdwCookie);
    935 
    936     void (STDMETHODCALLTYPE *UnregisterStereoStatus)(
    937         IDXGIFactory2* This,
    938         DWORD dwCookie);
    939 
    940     HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusWindow)(
    941         IDXGIFactory2* This,
    942         HWND WindowHandle,
    943         UINT wMsg,
    944         DWORD *pdwCookie);
    945 
    946     HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusEvent)(
    947         IDXGIFactory2* This,
    948         HANDLE hEvent,
    949         DWORD *pdwCookie);
    950 
    951     void (STDMETHODCALLTYPE *UnregisterOcclusionStatus)(
    952         IDXGIFactory2* This,
    953         DWORD dwCookie);
    954 
    955     HRESULT (STDMETHODCALLTYPE *CreateSwapChainForComposition)(
    956         IDXGIFactory2* This,
    957         IUnknown *pDevice,
    958         const DXGI_SWAP_CHAIN_DESC1 *pDesc,
    959         IDXGIOutput *pRestrictToOutput,
    960         IDXGISwapChain1 **ppSwapChain);
    961 
    962     END_INTERFACE
    963 } IDXGIFactory2Vtbl;
    964 interface IDXGIFactory2 {
    965     CONST_VTBL IDXGIFactory2Vtbl* lpVtbl;
    966 };
    967 
    968 #ifdef COBJMACROS
    969 #ifndef WIDL_C_INLINE_WRAPPERS
    970 /*** IUnknown methods ***/
    971 #define IDXGIFactory2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    972 #define IDXGIFactory2_AddRef(This) (This)->lpVtbl->AddRef(This)
    973 #define IDXGIFactory2_Release(This) (This)->lpVtbl->Release(This)
    974 /*** IDXGIObject methods ***/
    975 #define IDXGIFactory2_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
    976 #define IDXGIFactory2_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
    977 #define IDXGIFactory2_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
    978 #define IDXGIFactory2_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
    979 /*** IDXGIFactory methods ***/
    980 #define IDXGIFactory2_EnumAdapters(This,adapter_idx,adapter) (This)->lpVtbl->EnumAdapters(This,adapter_idx,adapter)
    981 #define IDXGIFactory2_MakeWindowAssociation(This,window,flags) (This)->lpVtbl->MakeWindowAssociation(This,window,flags)
    982 #define IDXGIFactory2_GetWindowAssociation(This,window) (This)->lpVtbl->GetWindowAssociation(This,window)
    983 #define IDXGIFactory2_CreateSwapChain(This,device,desc,swapchain) (This)->lpVtbl->CreateSwapChain(This,device,desc,swapchain)
    984 #define IDXGIFactory2_CreateSoftwareAdapter(This,swrast,adapter) (This)->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter)
    985 /*** IDXGIFactory1 methods ***/
    986 #define IDXGIFactory2_EnumAdapters1(This,Adapter,ppAdapter) (This)->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter)
    987 #define IDXGIFactory2_IsCurrent(This) (This)->lpVtbl->IsCurrent(This)
    988 /*** IDXGIFactory2 methods ***/
    989 #define IDXGIFactory2_IsWindowedStereoEnabled(This) (This)->lpVtbl->IsWindowedStereoEnabled(This)
    990 #define IDXGIFactory2_CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain)
    991 #define IDXGIFactory2_CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain)
    992 #define IDXGIFactory2_GetSharedResourceAdapterLuid(This,hResource,pLuid) (This)->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid)
    993 #define IDXGIFactory2_RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie)
    994 #define IDXGIFactory2_RegisterStereoStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie)
    995 #define IDXGIFactory2_UnregisterStereoStatus(This,dwCookie) (This)->lpVtbl->UnregisterStereoStatus(This,dwCookie)
    996 #define IDXGIFactory2_RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie)
    997 #define IDXGIFactory2_RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie)
    998 #define IDXGIFactory2_UnregisterOcclusionStatus(This,dwCookie) (This)->lpVtbl->UnregisterOcclusionStatus(This,dwCookie)
    999 #define IDXGIFactory2_CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain)
   1000 #else
   1001 /*** IUnknown methods ***/
   1002 static FORCEINLINE HRESULT IDXGIFactory2_QueryInterface(IDXGIFactory2* This,REFIID riid,void **ppvObject) {
   1003     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1004 }
   1005 static FORCEINLINE ULONG IDXGIFactory2_AddRef(IDXGIFactory2* This) {
   1006     return This->lpVtbl->AddRef(This);
   1007 }
   1008 static FORCEINLINE ULONG IDXGIFactory2_Release(IDXGIFactory2* This) {
   1009     return This->lpVtbl->Release(This);
   1010 }
   1011 /*** IDXGIObject methods ***/
   1012 static FORCEINLINE HRESULT IDXGIFactory2_SetPrivateData(IDXGIFactory2* This,REFGUID guid,UINT data_size,const void *data) {
   1013     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   1014 }
   1015 static FORCEINLINE HRESULT IDXGIFactory2_SetPrivateDataInterface(IDXGIFactory2* This,REFGUID guid,const IUnknown *object) {
   1016     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
   1017 }
   1018 static FORCEINLINE HRESULT IDXGIFactory2_GetPrivateData(IDXGIFactory2* This,REFGUID guid,UINT *data_size,void *data) {
   1019     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   1020 }
   1021 static FORCEINLINE HRESULT IDXGIFactory2_GetParent(IDXGIFactory2* This,REFIID riid,void **parent) {
   1022     return This->lpVtbl->GetParent(This,riid,parent);
   1023 }
   1024 /*** IDXGIFactory methods ***/
   1025 static FORCEINLINE HRESULT IDXGIFactory2_EnumAdapters(IDXGIFactory2* This,UINT adapter_idx,IDXGIAdapter **adapter) {
   1026     return This->lpVtbl->EnumAdapters(This,adapter_idx,adapter);
   1027 }
   1028 static FORCEINLINE HRESULT IDXGIFactory2_MakeWindowAssociation(IDXGIFactory2* This,HWND window,UINT flags) {
   1029     return This->lpVtbl->MakeWindowAssociation(This,window,flags);
   1030 }
   1031 static FORCEINLINE HRESULT IDXGIFactory2_GetWindowAssociation(IDXGIFactory2* This,HWND *window) {
   1032     return This->lpVtbl->GetWindowAssociation(This,window);
   1033 }
   1034 static FORCEINLINE HRESULT IDXGIFactory2_CreateSwapChain(IDXGIFactory2* This,IUnknown *device,DXGI_SWAP_CHAIN_DESC *desc,IDXGISwapChain **swapchain) {
   1035     return This->lpVtbl->CreateSwapChain(This,device,desc,swapchain);
   1036 }
   1037 static FORCEINLINE HRESULT IDXGIFactory2_CreateSoftwareAdapter(IDXGIFactory2* This,HMODULE swrast,IDXGIAdapter **adapter) {
   1038     return This->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter);
   1039 }
   1040 /*** IDXGIFactory1 methods ***/
   1041 static FORCEINLINE HRESULT IDXGIFactory2_EnumAdapters1(IDXGIFactory2* This,UINT Adapter,IDXGIAdapter1 **ppAdapter) {
   1042     return This->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter);
   1043 }
   1044 static FORCEINLINE WINBOOL IDXGIFactory2_IsCurrent(IDXGIFactory2* This) {
   1045     return This->lpVtbl->IsCurrent(This);
   1046 }
   1047 /*** IDXGIFactory2 methods ***/
   1048 static FORCEINLINE WINBOOL IDXGIFactory2_IsWindowedStereoEnabled(IDXGIFactory2* This) {
   1049     return This->lpVtbl->IsWindowedStereoEnabled(This);
   1050 }
   1051 static FORCEINLINE HRESULT IDXGIFactory2_CreateSwapChainForHwnd(IDXGIFactory2* This,IUnknown *pDevice,HWND hWnd,const DXGI_SWAP_CHAIN_DESC1 *pDesc,const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
   1052     return This->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain);
   1053 }
   1054 static FORCEINLINE HRESULT IDXGIFactory2_CreateSwapChainForCoreWindow(IDXGIFactory2* This,IUnknown *pDevice,IUnknown *pWindow,const DXGI_SWAP_CHAIN_DESC1 *pDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
   1055     return This->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain);
   1056 }
   1057 static FORCEINLINE HRESULT IDXGIFactory2_GetSharedResourceAdapterLuid(IDXGIFactory2* This,HANDLE hResource,LUID *pLuid) {
   1058     return This->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid);
   1059 }
   1060 static FORCEINLINE HRESULT IDXGIFactory2_RegisterOcclusionStatusWindow(IDXGIFactory2* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
   1061     return This->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie);
   1062 }
   1063 static FORCEINLINE HRESULT IDXGIFactory2_RegisterStereoStatusEvent(IDXGIFactory2* This,HANDLE hEvent,DWORD *pdwCookie) {
   1064     return This->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie);
   1065 }
   1066 static FORCEINLINE void IDXGIFactory2_UnregisterStereoStatus(IDXGIFactory2* This,DWORD dwCookie) {
   1067     This->lpVtbl->UnregisterStereoStatus(This,dwCookie);
   1068 }
   1069 static FORCEINLINE HRESULT IDXGIFactory2_RegisterStereoStatusWindow(IDXGIFactory2* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
   1070     return This->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie);
   1071 }
   1072 static FORCEINLINE HRESULT IDXGIFactory2_RegisterOcclusionStatusEvent(IDXGIFactory2* This,HANDLE hEvent,DWORD *pdwCookie) {
   1073     return This->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie);
   1074 }
   1075 static FORCEINLINE void IDXGIFactory2_UnregisterOcclusionStatus(IDXGIFactory2* This,DWORD dwCookie) {
   1076     This->lpVtbl->UnregisterOcclusionStatus(This,dwCookie);
   1077 }
   1078 static FORCEINLINE HRESULT IDXGIFactory2_CreateSwapChainForComposition(IDXGIFactory2* This,IUnknown *pDevice,const DXGI_SWAP_CHAIN_DESC1 *pDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
   1079     return This->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain);
   1080 }
   1081 #endif
   1082 #endif
   1083 
   1084 #endif
   1085 
   1086 WINBOOL STDMETHODCALLTYPE IDXGIFactory2_IsWindowedStereoEnabled_Proxy(
   1087     IDXGIFactory2* This);
   1088 void __RPC_STUB IDXGIFactory2_IsWindowedStereoEnabled_Stub(
   1089     IRpcStubBuffer* This,
   1090     IRpcChannelBuffer* pRpcChannelBuffer,
   1091     PRPC_MESSAGE pRpcMessage,
   1092     DWORD* pdwStubPhase);
   1093 HRESULT STDMETHODCALLTYPE IDXGIFactory2_CreateSwapChainForHwnd_Proxy(
   1094     IDXGIFactory2* This,
   1095     IUnknown *pDevice,
   1096     HWND hWnd,
   1097     const DXGI_SWAP_CHAIN_DESC1 *pDesc,
   1098     const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,
   1099     IDXGIOutput *pRestrictToOutput,
   1100     IDXGISwapChain1 **ppSwapChain);
   1101 void __RPC_STUB IDXGIFactory2_CreateSwapChainForHwnd_Stub(
   1102     IRpcStubBuffer* This,
   1103     IRpcChannelBuffer* pRpcChannelBuffer,
   1104     PRPC_MESSAGE pRpcMessage,
   1105     DWORD* pdwStubPhase);
   1106 HRESULT STDMETHODCALLTYPE IDXGIFactory2_CreateSwapChainForCoreWindow_Proxy(
   1107     IDXGIFactory2* This,
   1108     IUnknown *pDevice,
   1109     IUnknown *pWindow,
   1110     const DXGI_SWAP_CHAIN_DESC1 *pDesc,
   1111     IDXGIOutput *pRestrictToOutput,
   1112     IDXGISwapChain1 **ppSwapChain);
   1113 void __RPC_STUB IDXGIFactory2_CreateSwapChainForCoreWindow_Stub(
   1114     IRpcStubBuffer* This,
   1115     IRpcChannelBuffer* pRpcChannelBuffer,
   1116     PRPC_MESSAGE pRpcMessage,
   1117     DWORD* pdwStubPhase);
   1118 HRESULT STDMETHODCALLTYPE IDXGIFactory2_GetSharedResourceAdapterLuid_Proxy(
   1119     IDXGIFactory2* This,
   1120     HANDLE hResource,
   1121     LUID *pLuid);
   1122 void __RPC_STUB IDXGIFactory2_GetSharedResourceAdapterLuid_Stub(
   1123     IRpcStubBuffer* This,
   1124     IRpcChannelBuffer* pRpcChannelBuffer,
   1125     PRPC_MESSAGE pRpcMessage,
   1126     DWORD* pdwStubPhase);
   1127 HRESULT STDMETHODCALLTYPE IDXGIFactory2_RegisterOcclusionStatusWindow_Proxy(
   1128     IDXGIFactory2* This,
   1129     HWND WindowHandle,
   1130     UINT wMsg,
   1131     DWORD *pdwCookie);
   1132 void __RPC_STUB IDXGIFactory2_RegisterOcclusionStatusWindow_Stub(
   1133     IRpcStubBuffer* This,
   1134     IRpcChannelBuffer* pRpcChannelBuffer,
   1135     PRPC_MESSAGE pRpcMessage,
   1136     DWORD* pdwStubPhase);
   1137 HRESULT STDMETHODCALLTYPE IDXGIFactory2_RegisterStereoStatusEvent_Proxy(
   1138     IDXGIFactory2* This,
   1139     HANDLE hEvent,
   1140     DWORD *pdwCookie);
   1141 void __RPC_STUB IDXGIFactory2_RegisterStereoStatusEvent_Stub(
   1142     IRpcStubBuffer* This,
   1143     IRpcChannelBuffer* pRpcChannelBuffer,
   1144     PRPC_MESSAGE pRpcMessage,
   1145     DWORD* pdwStubPhase);
   1146 void STDMETHODCALLTYPE IDXGIFactory2_UnregisterStereoStatus_Proxy(
   1147     IDXGIFactory2* This,
   1148     DWORD dwCookie);
   1149 void __RPC_STUB IDXGIFactory2_UnregisterStereoStatus_Stub(
   1150     IRpcStubBuffer* This,
   1151     IRpcChannelBuffer* pRpcChannelBuffer,
   1152     PRPC_MESSAGE pRpcMessage,
   1153     DWORD* pdwStubPhase);
   1154 HRESULT STDMETHODCALLTYPE IDXGIFactory2_RegisterStereoStatusWindow_Proxy(
   1155     IDXGIFactory2* This,
   1156     HWND WindowHandle,
   1157     UINT wMsg,
   1158     DWORD *pdwCookie);
   1159 void __RPC_STUB IDXGIFactory2_RegisterStereoStatusWindow_Stub(
   1160     IRpcStubBuffer* This,
   1161     IRpcChannelBuffer* pRpcChannelBuffer,
   1162     PRPC_MESSAGE pRpcMessage,
   1163     DWORD* pdwStubPhase);
   1164 HRESULT STDMETHODCALLTYPE IDXGIFactory2_RegisterOcclusionStatusEvent_Proxy(
   1165     IDXGIFactory2* This,
   1166     HANDLE hEvent,
   1167     DWORD *pdwCookie);
   1168 void __RPC_STUB IDXGIFactory2_RegisterOcclusionStatusEvent_Stub(
   1169     IRpcStubBuffer* This,
   1170     IRpcChannelBuffer* pRpcChannelBuffer,
   1171     PRPC_MESSAGE pRpcMessage,
   1172     DWORD* pdwStubPhase);
   1173 void STDMETHODCALLTYPE IDXGIFactory2_UnregisterOcclusionStatus_Proxy(
   1174     IDXGIFactory2* This,
   1175     DWORD dwCookie);
   1176 void __RPC_STUB IDXGIFactory2_UnregisterOcclusionStatus_Stub(
   1177     IRpcStubBuffer* This,
   1178     IRpcChannelBuffer* pRpcChannelBuffer,
   1179     PRPC_MESSAGE pRpcMessage,
   1180     DWORD* pdwStubPhase);
   1181 HRESULT STDMETHODCALLTYPE IDXGIFactory2_CreateSwapChainForComposition_Proxy(
   1182     IDXGIFactory2* This,
   1183     IUnknown *pDevice,
   1184     const DXGI_SWAP_CHAIN_DESC1 *pDesc,
   1185     IDXGIOutput *pRestrictToOutput,
   1186     IDXGISwapChain1 **ppSwapChain);
   1187 void __RPC_STUB IDXGIFactory2_CreateSwapChainForComposition_Stub(
   1188     IRpcStubBuffer* This,
   1189     IRpcChannelBuffer* pRpcChannelBuffer,
   1190     PRPC_MESSAGE pRpcMessage,
   1191     DWORD* pdwStubPhase);
   1192 
   1193 #endif  /* __IDXGIFactory2_INTERFACE_DEFINED__ */
   1194 
   1195 typedef enum DXGI_GRAPHICS_PREEMPTION_GRANULARITY {
   1196     DXGI_GRAPHICS_PREEMPTION_DMA_BUFFER_BOUNDARY = 0,
   1197     DXGI_GRAPHICS_PREEMPTION_PRIMITIVE_BOUNDARY = 1,
   1198     DXGI_GRAPHICS_PREEMPTION_TRIANGLE_BOUNDARY = 2,
   1199     DXGI_GRAPHICS_PREEMPTION_PIXEL_BOUNDARY = 3,
   1200     DXGI_GRAPHICS_PREEMPTION_INSTRUCTION_BOUNDARY = 4
   1201 } DXGI_GRAPHICS_PREEMPTION_GRANULARITY;
   1202 typedef enum DXGI_COMPUTE_PREEMPTION_GRANULARITY {
   1203     DXGI_COMPUTE_PREEMPTION_DMA_BUFFER_BOUNDARY = 0,
   1204     DXGI_COMPUTE_PREEMPTION_DISPATCH_BOUNDARY = 1,
   1205     DXGI_COMPUTE_PREEMPTION_THREAD_GROUP_BOUNDARY = 2,
   1206     DXGI_COMPUTE_PREEMPTION_THREAD_BOUNDARY = 3,
   1207     DXGI_COMPUTE_PREEMPTION_INSTRUCTION_BOUNDARY = 4
   1208 } DXGI_COMPUTE_PREEMPTION_GRANULARITY;
   1209 typedef struct DXGI_ADAPTER_DESC2 {
   1210     WCHAR Description[128];
   1211     UINT VendorId;
   1212     UINT DeviceId;
   1213     UINT SubSysId;
   1214     UINT Revision;
   1215     SIZE_T DedicatedVideoMemory;
   1216     SIZE_T DedicatedSystemMemory;
   1217     SIZE_T SharedSystemMemory;
   1218     LUID AdapterLuid;
   1219     UINT Flags;
   1220     DXGI_GRAPHICS_PREEMPTION_GRANULARITY GraphicsPreemptionGranularity;
   1221     DXGI_COMPUTE_PREEMPTION_GRANULARITY ComputePreemptionGranularity;
   1222 } DXGI_ADAPTER_DESC2;
   1223 /*****************************************************************************
   1224  * IDXGIAdapter2 interface
   1225  */
   1226 #ifndef __IDXGIAdapter2_INTERFACE_DEFINED__
   1227 #define __IDXGIAdapter2_INTERFACE_DEFINED__
   1228 
   1229 DEFINE_GUID(IID_IDXGIAdapter2, 0x0aa1ae0a, 0xfa0e, 0x4b84, 0x86,0x44, 0xe0,0x5f,0xf8,0xe5,0xac,0xb5);
   1230 #if defined(__cplusplus) && !defined(CINTERFACE)
   1231 MIDL_INTERFACE("0aa1ae0a-fa0e-4b84-8644-e05ff8e5acb5")
   1232 IDXGIAdapter2 : public IDXGIAdapter1
   1233 {
   1234     virtual HRESULT STDMETHODCALLTYPE GetDesc2(
   1235         DXGI_ADAPTER_DESC2 *pDesc) = 0;
   1236 
   1237 };
   1238 #ifdef __CRT_UUID_DECL
   1239 __CRT_UUID_DECL(IDXGIAdapter2, 0x0aa1ae0a, 0xfa0e, 0x4b84, 0x86,0x44, 0xe0,0x5f,0xf8,0xe5,0xac,0xb5)
   1240 #endif
   1241 #else
   1242 typedef struct IDXGIAdapter2Vtbl {
   1243     BEGIN_INTERFACE
   1244 
   1245     /*** IUnknown methods ***/
   1246     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1247         IDXGIAdapter2* This,
   1248         REFIID riid,
   1249         void **ppvObject);
   1250 
   1251     ULONG (STDMETHODCALLTYPE *AddRef)(
   1252         IDXGIAdapter2* This);
   1253 
   1254     ULONG (STDMETHODCALLTYPE *Release)(
   1255         IDXGIAdapter2* This);
   1256 
   1257     /*** IDXGIObject methods ***/
   1258     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
   1259         IDXGIAdapter2* This,
   1260         REFGUID guid,
   1261         UINT data_size,
   1262         const void *data);
   1263 
   1264     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
   1265         IDXGIAdapter2* This,
   1266         REFGUID guid,
   1267         const IUnknown *object);
   1268 
   1269     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
   1270         IDXGIAdapter2* This,
   1271         REFGUID guid,
   1272         UINT *data_size,
   1273         void *data);
   1274 
   1275     HRESULT (STDMETHODCALLTYPE *GetParent)(
   1276         IDXGIAdapter2* This,
   1277         REFIID riid,
   1278         void **parent);
   1279 
   1280     /*** IDXGIAdapter methods ***/
   1281     HRESULT (STDMETHODCALLTYPE *EnumOutputs)(
   1282         IDXGIAdapter2* This,
   1283         UINT output_idx,
   1284         IDXGIOutput **output);
   1285 
   1286     HRESULT (STDMETHODCALLTYPE *GetDesc)(
   1287         IDXGIAdapter2* This,
   1288         DXGI_ADAPTER_DESC *desc);
   1289 
   1290     HRESULT (STDMETHODCALLTYPE *CheckInterfaceSupport)(
   1291         IDXGIAdapter2* This,
   1292         REFGUID guid,
   1293         LARGE_INTEGER *umd_version);
   1294 
   1295     /*** IDXGIAdapter1 methods ***/
   1296     HRESULT (STDMETHODCALLTYPE *GetDesc1)(
   1297         IDXGIAdapter2* This,
   1298         DXGI_ADAPTER_DESC1 *pDesc);
   1299 
   1300     /*** IDXGIAdapter2 methods ***/
   1301     HRESULT (STDMETHODCALLTYPE *GetDesc2)(
   1302         IDXGIAdapter2* This,
   1303         DXGI_ADAPTER_DESC2 *pDesc);
   1304 
   1305     END_INTERFACE
   1306 } IDXGIAdapter2Vtbl;
   1307 interface IDXGIAdapter2 {
   1308     CONST_VTBL IDXGIAdapter2Vtbl* lpVtbl;
   1309 };
   1310 
   1311 #ifdef COBJMACROS
   1312 #ifndef WIDL_C_INLINE_WRAPPERS
   1313 /*** IUnknown methods ***/
   1314 #define IDXGIAdapter2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1315 #define IDXGIAdapter2_AddRef(This) (This)->lpVtbl->AddRef(This)
   1316 #define IDXGIAdapter2_Release(This) (This)->lpVtbl->Release(This)
   1317 /*** IDXGIObject methods ***/
   1318 #define IDXGIAdapter2_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
   1319 #define IDXGIAdapter2_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
   1320 #define IDXGIAdapter2_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
   1321 #define IDXGIAdapter2_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
   1322 /*** IDXGIAdapter methods ***/
   1323 #define IDXGIAdapter2_EnumOutputs(This,output_idx,output) (This)->lpVtbl->EnumOutputs(This,output_idx,output)
   1324 #define IDXGIAdapter2_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
   1325 #define IDXGIAdapter2_CheckInterfaceSupport(This,guid,umd_version) (This)->lpVtbl->CheckInterfaceSupport(This,guid,umd_version)
   1326 /*** IDXGIAdapter1 methods ***/
   1327 #define IDXGIAdapter2_GetDesc1(This,pDesc) (This)->lpVtbl->GetDesc1(This,pDesc)
   1328 /*** IDXGIAdapter2 methods ***/
   1329 #define IDXGIAdapter2_GetDesc2(This,pDesc) (This)->lpVtbl->GetDesc2(This,pDesc)
   1330 #else
   1331 /*** IUnknown methods ***/
   1332 static FORCEINLINE HRESULT IDXGIAdapter2_QueryInterface(IDXGIAdapter2* This,REFIID riid,void **ppvObject) {
   1333     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1334 }
   1335 static FORCEINLINE ULONG IDXGIAdapter2_AddRef(IDXGIAdapter2* This) {
   1336     return This->lpVtbl->AddRef(This);
   1337 }
   1338 static FORCEINLINE ULONG IDXGIAdapter2_Release(IDXGIAdapter2* This) {
   1339     return This->lpVtbl->Release(This);
   1340 }
   1341 /*** IDXGIObject methods ***/
   1342 static FORCEINLINE HRESULT IDXGIAdapter2_SetPrivateData(IDXGIAdapter2* This,REFGUID guid,UINT data_size,const void *data) {
   1343     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
   1344 }
   1345 static FORCEINLINE HRESULT IDXGIAdapter2_SetPrivateDataInterface(IDXGIAdapter2* This,REFGUID guid,const IUnknown *object) {
   1346     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
   1347 }
   1348 static FORCEINLINE HRESULT IDXGIAdapter2_GetPrivateData(IDXGIAdapter2* This,REFGUID guid,UINT *data_size,void *data) {
   1349     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
   1350 }
   1351 static FORCEINLINE HRESULT IDXGIAdapter2_GetParent(IDXGIAdapter2* This,REFIID riid,void **parent) {
   1352     return This->lpVtbl->GetParent(This,riid,parent);
   1353 }
   1354 /*** IDXGIAdapter methods ***/
   1355 static FORCEINLINE HRESULT IDXGIAdapter2_EnumOutputs(IDXGIAdapter2* This,UINT output_idx,IDXGIOutput **output) {
   1356     return This->lpVtbl->EnumOutputs(This,output_idx,output);
   1357 }
   1358 static FORCEINLINE HRESULT IDXGIAdapter2_GetDesc(IDXGIAdapter2* This,DXGI_ADAPTER_DESC *desc) {
   1359     return This->lpVtbl->GetDesc(This,desc);
   1360 }
   1361 static FORCEINLINE HRESULT IDXGIAdapter2_CheckInterfaceSupport(IDXGIAdapter2* This,REFGUID guid,LARGE_INTEGER *umd_version) {
   1362     return This->lpVtbl->CheckInterfaceSupport(This,guid,umd_version);
   1363 }
   1364 /*** IDXGIAdapter1 methods ***/
   1365 static FORCEINLINE HRESULT IDXGIAdapter2_GetDesc1(IDXGIAdapter2* This,DXGI_ADAPTER_DESC1 *pDesc) {
   1366     return This->lpVtbl->GetDesc1(This,pDesc);
   1367 }
   1368 /*** IDXGIAdapter2 methods ***/
   1369 static FORCEINLINE HRESULT IDXGIAdapter2_GetDesc2(IDXGIAdapter2* This,DXGI_ADAPTER_DESC2 *pDesc) {
   1370     return This->lpVtbl->GetDesc2(This,pDesc);
   1371 }
   1372 #endif
   1373 #endif
   1374 
   1375 #endif
   1376 
   1377 HRESULT STDMETHODCALLTYPE IDXGIAdapter2_GetDesc2_Proxy(
   1378     IDXGIAdapter2* This,
   1379     DXGI_ADAPTER_DESC2 *pDesc);
   1380 void __RPC_STUB IDXGIAdapter2_GetDesc2_Stub(
   1381     IRpcStubBuffer* This,
   1382     IRpcChannelBuffer* pRpcChannelBuffer,
   1383     PRPC_MESSAGE pRpcMessage,
   1384     DWORD* pdwStubPhase);
   1385 
   1386 #endif  /* __IDXGIAdapter2_INTERFACE_DEFINED__ */
   1387 
   1388 /* Begin additional prototypes for all interfaces */
   1389 
   1390 
   1391 /* End additional prototypes */
   1392 
   1393 #ifdef __cplusplus
   1394 }
   1395 #endif
   1396 
   1397 #endif /* __dxgi1_2_h__ */
   1398