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