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