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