1 /*** Autogenerated by WIDL 3.19 from direct-x/include/dxgi1_2.idl - Do not edit ***/
2 
3 #ifndef __REQUIRED_RPCNDR_H_VERSION__
4 #define __REQUIRED_RPCNDR_H_VERSION__ 475
5 #endif
6 
7 #include <rpc.h>
8 #include <rpcndr.h>
9 
10 #ifndef COM_NO_WINDOWS_H
11 #include <windows.h>
12 #include <ole2.h>
13 #endif
14 
15 #ifndef __dxgi1_2_h__
16 #define __dxgi1_2_h__
17 
18 /* Forward declarations */
19 
20 #ifndef __IDXGIOutputDuplication_FWD_DEFINED__
21 #define __IDXGIOutputDuplication_FWD_DEFINED__
22 typedef interface IDXGIOutputDuplication IDXGIOutputDuplication;
23 #ifdef __cplusplus
24 interface IDXGIOutputDuplication;
25 #endif /* __cplusplus */
26 #endif
27 
28 #ifndef __IDXGISurface2_FWD_DEFINED__
29 #define __IDXGISurface2_FWD_DEFINED__
30 typedef interface IDXGISurface2 IDXGISurface2;
31 #ifdef __cplusplus
32 interface IDXGISurface2;
33 #endif /* __cplusplus */
34 #endif
35 
36 #ifndef __IDXGIResource1_FWD_DEFINED__
37 #define __IDXGIResource1_FWD_DEFINED__
38 typedef interface IDXGIResource1 IDXGIResource1;
39 #ifdef __cplusplus
40 interface IDXGIResource1;
41 #endif /* __cplusplus */
42 #endif
43 
44 #ifndef __IDXGIDisplayControl_FWD_DEFINED__
45 #define __IDXGIDisplayControl_FWD_DEFINED__
46 typedef interface IDXGIDisplayControl IDXGIDisplayControl;
47 #ifdef __cplusplus
48 interface IDXGIDisplayControl;
49 #endif /* __cplusplus */
50 #endif
51 
52 #ifndef __IDXGIDevice2_FWD_DEFINED__
53 #define __IDXGIDevice2_FWD_DEFINED__
54 typedef interface IDXGIDevice2 IDXGIDevice2;
55 #ifdef __cplusplus
56 interface IDXGIDevice2;
57 #endif /* __cplusplus */
58 #endif
59 
60 #ifndef __IDXGISwapChain1_FWD_DEFINED__
61 #define __IDXGISwapChain1_FWD_DEFINED__
62 typedef interface IDXGISwapChain1 IDXGISwapChain1;
63 #ifdef __cplusplus
64 interface IDXGISwapChain1;
65 #endif /* __cplusplus */
66 #endif
67 
68 #ifndef __IDXGIFactory2_FWD_DEFINED__
69 #define __IDXGIFactory2_FWD_DEFINED__
70 typedef interface IDXGIFactory2 IDXGIFactory2;
71 #ifdef __cplusplus
72 interface IDXGIFactory2;
73 #endif /* __cplusplus */
74 #endif
75 
76 #ifndef __IDXGIAdapter2_FWD_DEFINED__
77 #define __IDXGIAdapter2_FWD_DEFINED__
78 typedef interface IDXGIAdapter2 IDXGIAdapter2;
79 #ifdef __cplusplus
80 interface IDXGIAdapter2;
81 #endif /* __cplusplus */
82 #endif
83 
84 #ifndef __IDXGIOutput1_FWD_DEFINED__
85 #define __IDXGIOutput1_FWD_DEFINED__
86 typedef interface IDXGIOutput1 IDXGIOutput1;
87 #ifdef __cplusplus
88 interface IDXGIOutput1;
89 #endif /* __cplusplus */
90 #endif
91 
92 /* Headers for imported files */
93 
94 #include <dxgi.h>
95 
96 #ifdef __cplusplus
97 extern "C" {
98 #endif
99 
100 #define DXGI_ENUM_MODES_STEREO (0x4)
101 
102 #define DXGI_ENUM_MODES_DISABLED_STEREO (0x8)
103 
104 #define DXGI_SHARED_RESOURCE_READ (0x80000000)
105 
106 #define DXGI_SHARED_RESOURCE_WRITE (0x1)
107 
108 typedef enum _DXGI_OFFER_RESOURCE_PRIORITY {
109     DXGI_OFFER_RESOURCE_PRIORITY_LOW = 1,
110     DXGI_OFFER_RESOURCE_PRIORITY_NORMAL = 2,
111     DXGI_OFFER_RESOURCE_PRIORITY_HIGH = 3
112 } DXGI_OFFER_RESOURCE_PRIORITY;
113 typedef enum DXGI_ALPHA_MODE {
114     DXGI_ALPHA_MODE_UNSPECIFIED = 0,
115     DXGI_ALPHA_MODE_PREMULTIPLIED = 1,
116     DXGI_ALPHA_MODE_STRAIGHT = 2,
117     DXGI_ALPHA_MODE_IGNORE = 3,
118     DXGI_ALPHA_MODE_FORCE_DWORD = 0xffffffff
119 } DXGI_ALPHA_MODE;
120 typedef struct DXGI_OUTDUPL_MOVE_RECT {
121     POINT SourcePoint;
122     RECT DestinationRect;
123 } DXGI_OUTDUPL_MOVE_RECT;
124 typedef struct DXGI_OUTDUPL_DESC {
125     DXGI_MODE_DESC ModeDesc;
126     DXGI_MODE_ROTATION Rotation;
127     WINBOOL DesktopImageInSystemMemory;
128 } DXGI_OUTDUPL_DESC;
129 typedef struct DXGI_OUTDUPL_POINTER_POSITION {
130     POINT Position;
131     WINBOOL Visible;
132 } DXGI_OUTDUPL_POINTER_POSITION;
133 typedef enum DXGI_OUTDUPL_POINTER_SHAPE_TYPE {
134     DXGI_OUTDUPL_POINTER_SHAPE_TYPE_MONOCHROME = 0x1,
135     DXGI_OUTDUPL_POINTER_SHAPE_TYPE_COLOR = 0x2,
136     DXGI_OUTDUPL_POINTER_SHAPE_TYPE_MASKED_COLOR = 0x4
137 } DXGI_OUTDUPL_POINTER_SHAPE_TYPE;
138 typedef struct DXGI_OUTDUPL_POINTER_SHAPE_INFO {
139     UINT Type;
140     UINT Width;
141     UINT Height;
142     UINT Pitch;
143     POINT HotSpot;
144 } DXGI_OUTDUPL_POINTER_SHAPE_INFO;
145 typedef struct DXGI_OUTDUPL_FRAME_INFO {
146     LARGE_INTEGER LastPresentTime;
147     LARGE_INTEGER LastMouseUpdateTime;
148     UINT AccumulatedFrames;
149     WINBOOL RectsCoalesced;
150     WINBOOL ProtectedContentMaskedOut;
151     DXGI_OUTDUPL_POINTER_POSITION PointerPosition;
152     UINT TotalMetadataBufferSize;
153     UINT PointerShapeBufferSize;
154 } DXGI_OUTDUPL_FRAME_INFO;
155 typedef struct DXGI_MODE_DESC1 {
156     UINT Width;
157     UINT Height;
158     DXGI_RATIONAL RefreshRate;
159     DXGI_FORMAT Format;
160     DXGI_MODE_SCANLINE_ORDER ScanlineOrdering;
161     DXGI_MODE_SCALING Scaling;
162     WINBOOL Stereo;
163 } DXGI_MODE_DESC1;
164 /*****************************************************************************
165  * IDXGIOutputDuplication interface
166  */
167 #ifndef __IDXGIOutputDuplication_INTERFACE_DEFINED__
168 #define __IDXGIOutputDuplication_INTERFACE_DEFINED__
169 
170 DEFINE_GUID(IID_IDXGIOutputDuplication, 0x191cfac3, 0xa341, 0x470d, 0xb2,0x6e, 0xa8,0x64,0xf4,0x28,0x31,0x9c);
171 #if defined(__cplusplus) && !defined(CINTERFACE)
172 MIDL_INTERFACE("191cfac3-a341-470d-b26e-a864f428319c")
173 IDXGIOutputDuplication : public IDXGIObject
174 {
175     virtual void STDMETHODCALLTYPE GetDesc(
176         DXGI_OUTDUPL_DESC *desc) = 0;
177 
178     virtual HRESULT STDMETHODCALLTYPE AcquireNextFrame(
179         UINT timeout_in_milliseconds,
180         DXGI_OUTDUPL_FRAME_INFO *frame_info,
181         IDXGIResource **desktop_resource) = 0;
182 
183     virtual HRESULT STDMETHODCALLTYPE GetFrameDirtyRects(
184         UINT dirty_rects_buffer_size,
185         RECT *dirty_rects_buffer,
186         UINT *dirty_rects_buffer_size_required) = 0;
187 
188     virtual HRESULT STDMETHODCALLTYPE GetFrameMoveRects(
189         UINT move_rects_buffer_size,
190         DXGI_OUTDUPL_MOVE_RECT *move_rect_buffer,
191         UINT *move_rects_buffer_size_required) = 0;
192 
193     virtual HRESULT STDMETHODCALLTYPE GetFramePointerShape(
194         UINT pointer_shape_buffer_size,
195         void *pointer_shape_buffer,
196         UINT *pointer_shape_buffer_size_required,
197         DXGI_OUTDUPL_POINTER_SHAPE_INFO *pointer_shape_info) = 0;
198 
199     virtual HRESULT STDMETHODCALLTYPE MapDesktopSurface(
200         DXGI_MAPPED_RECT *locked_rect) = 0;
201 
202     virtual HRESULT STDMETHODCALLTYPE UnMapDesktopSurface(
203         ) = 0;
204 
205     virtual HRESULT STDMETHODCALLTYPE ReleaseFrame(
206         ) = 0;
207 
208 };
209 #ifdef __CRT_UUID_DECL
210 __CRT_UUID_DECL(IDXGIOutputDuplication, 0x191cfac3, 0xa341, 0x470d, 0xb2,0x6e, 0xa8,0x64,0xf4,0x28,0x31,0x9c)
211 #endif
212 #else
213 typedef struct IDXGIOutputDuplicationVtbl {
214     BEGIN_INTERFACE
215 
216     /*** IUnknown methods ***/
217     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
218         IDXGIOutputDuplication *This,
219         REFIID riid,
220         void **ppvObject);
221 
222     ULONG (STDMETHODCALLTYPE *AddRef)(
223         IDXGIOutputDuplication *This);
224 
225     ULONG (STDMETHODCALLTYPE *Release)(
226         IDXGIOutputDuplication *This);
227 
228     /*** IDXGIObject methods ***/
229     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
230         IDXGIOutputDuplication *This,
231         REFGUID guid,
232         UINT data_size,
233         const void *data);
234 
235     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
236         IDXGIOutputDuplication *This,
237         REFGUID guid,
238         const IUnknown *object);
239 
240     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
241         IDXGIOutputDuplication *This,
242         REFGUID guid,
243         UINT *data_size,
244         void *data);
245 
246     HRESULT (STDMETHODCALLTYPE *GetParent)(
247         IDXGIOutputDuplication *This,
248         REFIID riid,
249         void **parent);
250 
251     /*** IDXGIOutputDuplication methods ***/
252     void (STDMETHODCALLTYPE *GetDesc)(
253         IDXGIOutputDuplication *This,
254         DXGI_OUTDUPL_DESC *desc);
255 
256     HRESULT (STDMETHODCALLTYPE *AcquireNextFrame)(
257         IDXGIOutputDuplication *This,
258         UINT timeout_in_milliseconds,
259         DXGI_OUTDUPL_FRAME_INFO *frame_info,
260         IDXGIResource **desktop_resource);
261 
262     HRESULT (STDMETHODCALLTYPE *GetFrameDirtyRects)(
263         IDXGIOutputDuplication *This,
264         UINT dirty_rects_buffer_size,
265         RECT *dirty_rects_buffer,
266         UINT *dirty_rects_buffer_size_required);
267 
268     HRESULT (STDMETHODCALLTYPE *GetFrameMoveRects)(
269         IDXGIOutputDuplication *This,
270         UINT move_rects_buffer_size,
271         DXGI_OUTDUPL_MOVE_RECT *move_rect_buffer,
272         UINT *move_rects_buffer_size_required);
273 
274     HRESULT (STDMETHODCALLTYPE *GetFramePointerShape)(
275         IDXGIOutputDuplication *This,
276         UINT pointer_shape_buffer_size,
277         void *pointer_shape_buffer,
278         UINT *pointer_shape_buffer_size_required,
279         DXGI_OUTDUPL_POINTER_SHAPE_INFO *pointer_shape_info);
280 
281     HRESULT (STDMETHODCALLTYPE *MapDesktopSurface)(
282         IDXGIOutputDuplication *This,
283         DXGI_MAPPED_RECT *locked_rect);
284 
285     HRESULT (STDMETHODCALLTYPE *UnMapDesktopSurface)(
286         IDXGIOutputDuplication *This);
287 
288     HRESULT (STDMETHODCALLTYPE *ReleaseFrame)(
289         IDXGIOutputDuplication *This);
290 
291     END_INTERFACE
292 } IDXGIOutputDuplicationVtbl;
293 
294 interface IDXGIOutputDuplication {
295     CONST_VTBL IDXGIOutputDuplicationVtbl* lpVtbl;
296 };
297 
298 #ifdef COBJMACROS
299 #ifndef WIDL_C_INLINE_WRAPPERS
300 /*** IUnknown methods ***/
301 #define IDXGIOutputDuplication_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
302 #define IDXGIOutputDuplication_AddRef(This) (This)->lpVtbl->AddRef(This)
303 #define IDXGIOutputDuplication_Release(This) (This)->lpVtbl->Release(This)
304 /*** IDXGIObject methods ***/
305 #define IDXGIOutputDuplication_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
306 #define IDXGIOutputDuplication_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
307 #define IDXGIOutputDuplication_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
308 #define IDXGIOutputDuplication_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
309 /*** IDXGIOutputDuplication methods ***/
310 #define IDXGIOutputDuplication_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
311 #define IDXGIOutputDuplication_AcquireNextFrame(This,timeout_in_milliseconds,frame_info,desktop_resource) (This)->lpVtbl->AcquireNextFrame(This,timeout_in_milliseconds,frame_info,desktop_resource)
312 #define IDXGIOutputDuplication_GetFrameDirtyRects(This,dirty_rects_buffer_size,dirty_rects_buffer,dirty_rects_buffer_size_required) (This)->lpVtbl->GetFrameDirtyRects(This,dirty_rects_buffer_size,dirty_rects_buffer,dirty_rects_buffer_size_required)
313 #define IDXGIOutputDuplication_GetFrameMoveRects(This,move_rects_buffer_size,move_rect_buffer,move_rects_buffer_size_required) (This)->lpVtbl->GetFrameMoveRects(This,move_rects_buffer_size,move_rect_buffer,move_rects_buffer_size_required)
314 #define IDXGIOutputDuplication_GetFramePointerShape(This,pointer_shape_buffer_size,pointer_shape_buffer,pointer_shape_buffer_size_required,pointer_shape_info) (This)->lpVtbl->GetFramePointerShape(This,pointer_shape_buffer_size,pointer_shape_buffer,pointer_shape_buffer_size_required,pointer_shape_info)
315 #define IDXGIOutputDuplication_MapDesktopSurface(This,locked_rect) (This)->lpVtbl->MapDesktopSurface(This,locked_rect)
316 #define IDXGIOutputDuplication_UnMapDesktopSurface(This) (This)->lpVtbl->UnMapDesktopSurface(This)
317 #define IDXGIOutputDuplication_ReleaseFrame(This) (This)->lpVtbl->ReleaseFrame(This)
318 #else
319 /*** IUnknown methods ***/
320 static FORCEINLINE HRESULT IDXGIOutputDuplication_QueryInterface(IDXGIOutputDuplication* This,REFIID riid,void **ppvObject) {
321     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
322 }
323 static FORCEINLINE ULONG IDXGIOutputDuplication_AddRef(IDXGIOutputDuplication* This) {
324     return This->lpVtbl->AddRef(This);
325 }
326 static FORCEINLINE ULONG IDXGIOutputDuplication_Release(IDXGIOutputDuplication* This) {
327     return This->lpVtbl->Release(This);
328 }
329 /*** IDXGIObject methods ***/
330 static FORCEINLINE HRESULT IDXGIOutputDuplication_SetPrivateData(IDXGIOutputDuplication* This,REFGUID guid,UINT data_size,const void *data) {
331     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
332 }
333 static FORCEINLINE HRESULT IDXGIOutputDuplication_SetPrivateDataInterface(IDXGIOutputDuplication* This,REFGUID guid,const IUnknown *object) {
334     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
335 }
336 static FORCEINLINE HRESULT IDXGIOutputDuplication_GetPrivateData(IDXGIOutputDuplication* This,REFGUID guid,UINT *data_size,void *data) {
337     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
338 }
339 static FORCEINLINE HRESULT IDXGIOutputDuplication_GetParent(IDXGIOutputDuplication* This,REFIID riid,void **parent) {
340     return This->lpVtbl->GetParent(This,riid,parent);
341 }
342 /*** IDXGIOutputDuplication methods ***/
343 static FORCEINLINE void IDXGIOutputDuplication_GetDesc(IDXGIOutputDuplication* This,DXGI_OUTDUPL_DESC *desc) {
344     This->lpVtbl->GetDesc(This,desc);
345 }
346 static FORCEINLINE HRESULT IDXGIOutputDuplication_AcquireNextFrame(IDXGIOutputDuplication* This,UINT timeout_in_milliseconds,DXGI_OUTDUPL_FRAME_INFO *frame_info,IDXGIResource **desktop_resource) {
347     return This->lpVtbl->AcquireNextFrame(This,timeout_in_milliseconds,frame_info,desktop_resource);
348 }
349 static FORCEINLINE HRESULT IDXGIOutputDuplication_GetFrameDirtyRects(IDXGIOutputDuplication* This,UINT dirty_rects_buffer_size,RECT *dirty_rects_buffer,UINT *dirty_rects_buffer_size_required) {
350     return This->lpVtbl->GetFrameDirtyRects(This,dirty_rects_buffer_size,dirty_rects_buffer,dirty_rects_buffer_size_required);
351 }
352 static FORCEINLINE HRESULT IDXGIOutputDuplication_GetFrameMoveRects(IDXGIOutputDuplication* This,UINT move_rects_buffer_size,DXGI_OUTDUPL_MOVE_RECT *move_rect_buffer,UINT *move_rects_buffer_size_required) {
353     return This->lpVtbl->GetFrameMoveRects(This,move_rects_buffer_size,move_rect_buffer,move_rects_buffer_size_required);
354 }
355 static FORCEINLINE HRESULT IDXGIOutputDuplication_GetFramePointerShape(IDXGIOutputDuplication* This,UINT pointer_shape_buffer_size,void *pointer_shape_buffer,UINT *pointer_shape_buffer_size_required,DXGI_OUTDUPL_POINTER_SHAPE_INFO *pointer_shape_info) {
356     return This->lpVtbl->GetFramePointerShape(This,pointer_shape_buffer_size,pointer_shape_buffer,pointer_shape_buffer_size_required,pointer_shape_info);
357 }
358 static FORCEINLINE HRESULT IDXGIOutputDuplication_MapDesktopSurface(IDXGIOutputDuplication* This,DXGI_MAPPED_RECT *locked_rect) {
359     return This->lpVtbl->MapDesktopSurface(This,locked_rect);
360 }
361 static FORCEINLINE HRESULT IDXGIOutputDuplication_UnMapDesktopSurface(IDXGIOutputDuplication* This) {
362     return This->lpVtbl->UnMapDesktopSurface(This);
363 }
364 static FORCEINLINE HRESULT IDXGIOutputDuplication_ReleaseFrame(IDXGIOutputDuplication* This) {
365     return This->lpVtbl->ReleaseFrame(This);
366 }
367 #endif
368 #endif
369 
370 #endif
371 
372 
373 #endif  /* __IDXGIOutputDuplication_INTERFACE_DEFINED__ */
374 
375 /*****************************************************************************
376  * IDXGISurface2 interface
377  */
378 #ifndef __IDXGISurface2_INTERFACE_DEFINED__
379 #define __IDXGISurface2_INTERFACE_DEFINED__
380 
381 DEFINE_GUID(IID_IDXGISurface2, 0xaba496dd, 0xb617, 0x4cb8, 0xa8,0x66, 0xbc,0x44,0xd7,0xeb,0x1f,0xa2);
382 #if defined(__cplusplus) && !defined(CINTERFACE)
383 MIDL_INTERFACE("aba496dd-b617-4cb8-a866-bc44d7eb1fa2")
384 IDXGISurface2 : public IDXGISurface1
385 {
386     virtual HRESULT STDMETHODCALLTYPE GetResource(
387         REFIID iid,
388         void **parent_resource,
389         UINT *subresource_idx) = 0;
390 
391 };
392 #ifdef __CRT_UUID_DECL
393 __CRT_UUID_DECL(IDXGISurface2, 0xaba496dd, 0xb617, 0x4cb8, 0xa8,0x66, 0xbc,0x44,0xd7,0xeb,0x1f,0xa2)
394 #endif
395 #else
396 typedef struct IDXGISurface2Vtbl {
397     BEGIN_INTERFACE
398 
399     /*** IUnknown methods ***/
400     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
401         IDXGISurface2 *This,
402         REFIID riid,
403         void **ppvObject);
404 
405     ULONG (STDMETHODCALLTYPE *AddRef)(
406         IDXGISurface2 *This);
407 
408     ULONG (STDMETHODCALLTYPE *Release)(
409         IDXGISurface2 *This);
410 
411     /*** IDXGIObject methods ***/
412     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
413         IDXGISurface2 *This,
414         REFGUID guid,
415         UINT data_size,
416         const void *data);
417 
418     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
419         IDXGISurface2 *This,
420         REFGUID guid,
421         const IUnknown *object);
422 
423     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
424         IDXGISurface2 *This,
425         REFGUID guid,
426         UINT *data_size,
427         void *data);
428 
429     HRESULT (STDMETHODCALLTYPE *GetParent)(
430         IDXGISurface2 *This,
431         REFIID riid,
432         void **parent);
433 
434     /*** IDXGIDeviceSubObject methods ***/
435     HRESULT (STDMETHODCALLTYPE *GetDevice)(
436         IDXGISurface2 *This,
437         REFIID riid,
438         void **device);
439 
440     /*** IDXGISurface methods ***/
441     HRESULT (STDMETHODCALLTYPE *GetDesc)(
442         IDXGISurface2 *This,
443         DXGI_SURFACE_DESC *desc);
444 
445     HRESULT (STDMETHODCALLTYPE *Map)(
446         IDXGISurface2 *This,
447         DXGI_MAPPED_RECT *mapped_rect,
448         UINT flags);
449 
450     HRESULT (STDMETHODCALLTYPE *Unmap)(
451         IDXGISurface2 *This);
452 
453     /*** IDXGISurface1 methods ***/
454     HRESULT (STDMETHODCALLTYPE *GetDC)(
455         IDXGISurface2 *This,
456         WINBOOL discard,
457         HDC *hdc);
458 
459     HRESULT (STDMETHODCALLTYPE *ReleaseDC)(
460         IDXGISurface2 *This,
461         RECT *dirty_rect);
462 
463     /*** IDXGISurface2 methods ***/
464     HRESULT (STDMETHODCALLTYPE *GetResource)(
465         IDXGISurface2 *This,
466         REFIID iid,
467         void **parent_resource,
468         UINT *subresource_idx);
469 
470     END_INTERFACE
471 } IDXGISurface2Vtbl;
472 
473 interface IDXGISurface2 {
474     CONST_VTBL IDXGISurface2Vtbl* lpVtbl;
475 };
476 
477 #ifdef COBJMACROS
478 #ifndef WIDL_C_INLINE_WRAPPERS
479 /*** IUnknown methods ***/
480 #define IDXGISurface2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
481 #define IDXGISurface2_AddRef(This) (This)->lpVtbl->AddRef(This)
482 #define IDXGISurface2_Release(This) (This)->lpVtbl->Release(This)
483 /*** IDXGIObject methods ***/
484 #define IDXGISurface2_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
485 #define IDXGISurface2_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
486 #define IDXGISurface2_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
487 #define IDXGISurface2_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
488 /*** IDXGIDeviceSubObject methods ***/
489 #define IDXGISurface2_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
490 /*** IDXGISurface methods ***/
491 #define IDXGISurface2_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
492 #define IDXGISurface2_Map(This,mapped_rect,flags) (This)->lpVtbl->Map(This,mapped_rect,flags)
493 #define IDXGISurface2_Unmap(This) (This)->lpVtbl->Unmap(This)
494 /*** IDXGISurface1 methods ***/
495 #define IDXGISurface2_GetDC(This,discard,hdc) (This)->lpVtbl->GetDC(This,discard,hdc)
496 #define IDXGISurface2_ReleaseDC(This,dirty_rect) (This)->lpVtbl->ReleaseDC(This,dirty_rect)
497 /*** IDXGISurface2 methods ***/
498 #define IDXGISurface2_GetResource(This,iid,parent_resource,subresource_idx) (This)->lpVtbl->GetResource(This,iid,parent_resource,subresource_idx)
499 #else
500 /*** IUnknown methods ***/
501 static FORCEINLINE HRESULT IDXGISurface2_QueryInterface(IDXGISurface2* This,REFIID riid,void **ppvObject) {
502     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
503 }
504 static FORCEINLINE ULONG IDXGISurface2_AddRef(IDXGISurface2* This) {
505     return This->lpVtbl->AddRef(This);
506 }
507 static FORCEINLINE ULONG IDXGISurface2_Release(IDXGISurface2* This) {
508     return This->lpVtbl->Release(This);
509 }
510 /*** IDXGIObject methods ***/
511 static FORCEINLINE HRESULT IDXGISurface2_SetPrivateData(IDXGISurface2* This,REFGUID guid,UINT data_size,const void *data) {
512     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
513 }
514 static FORCEINLINE HRESULT IDXGISurface2_SetPrivateDataInterface(IDXGISurface2* This,REFGUID guid,const IUnknown *object) {
515     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
516 }
517 static FORCEINLINE HRESULT IDXGISurface2_GetPrivateData(IDXGISurface2* This,REFGUID guid,UINT *data_size,void *data) {
518     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
519 }
520 static FORCEINLINE HRESULT IDXGISurface2_GetParent(IDXGISurface2* This,REFIID riid,void **parent) {
521     return This->lpVtbl->GetParent(This,riid,parent);
522 }
523 /*** IDXGIDeviceSubObject methods ***/
524 static FORCEINLINE HRESULT IDXGISurface2_GetDevice(IDXGISurface2* This,REFIID riid,void **device) {
525     return This->lpVtbl->GetDevice(This,riid,device);
526 }
527 /*** IDXGISurface methods ***/
528 static FORCEINLINE HRESULT IDXGISurface2_GetDesc(IDXGISurface2* This,DXGI_SURFACE_DESC *desc) {
529     return This->lpVtbl->GetDesc(This,desc);
530 }
531 static FORCEINLINE HRESULT IDXGISurface2_Map(IDXGISurface2* This,DXGI_MAPPED_RECT *mapped_rect,UINT flags) {
532     return This->lpVtbl->Map(This,mapped_rect,flags);
533 }
534 static FORCEINLINE HRESULT IDXGISurface2_Unmap(IDXGISurface2* This) {
535     return This->lpVtbl->Unmap(This);
536 }
537 /*** IDXGISurface1 methods ***/
538 static FORCEINLINE HRESULT IDXGISurface2_GetDC(IDXGISurface2* This,WINBOOL discard,HDC *hdc) {
539     return This->lpVtbl->GetDC(This,discard,hdc);
540 }
541 static FORCEINLINE HRESULT IDXGISurface2_ReleaseDC(IDXGISurface2* This,RECT *dirty_rect) {
542     return This->lpVtbl->ReleaseDC(This,dirty_rect);
543 }
544 /*** IDXGISurface2 methods ***/
545 static FORCEINLINE HRESULT IDXGISurface2_GetResource(IDXGISurface2* This,REFIID iid,void **parent_resource,UINT *subresource_idx) {
546     return This->lpVtbl->GetResource(This,iid,parent_resource,subresource_idx);
547 }
548 #endif
549 #endif
550 
551 #endif
552 
553 
554 #endif  /* __IDXGISurface2_INTERFACE_DEFINED__ */
555 
556 /*****************************************************************************
557  * IDXGIResource1 interface
558  */
559 #ifndef __IDXGIResource1_INTERFACE_DEFINED__
560 #define __IDXGIResource1_INTERFACE_DEFINED__
561 
562 DEFINE_GUID(IID_IDXGIResource1, 0x30961379, 0x4609, 0x4a41, 0x99,0x8e, 0x54,0xfe,0x56,0x7e,0xe0,0xc1);
563 #if defined(__cplusplus) && !defined(CINTERFACE)
564 MIDL_INTERFACE("30961379-4609-4a41-998e-54fe567ee0c1")
565 IDXGIResource1 : public IDXGIResource
566 {
567     virtual HRESULT STDMETHODCALLTYPE CreateSubresourceSurface(
568         UINT index,
569         IDXGISurface2 **surface) = 0;
570 
571     virtual HRESULT STDMETHODCALLTYPE CreateSharedHandle(
572         const SECURITY_ATTRIBUTES *attributes,
573         DWORD access,
574         const WCHAR *name,
575         HANDLE *handle) = 0;
576 
577 };
578 #ifdef __CRT_UUID_DECL
579 __CRT_UUID_DECL(IDXGIResource1, 0x30961379, 0x4609, 0x4a41, 0x99,0x8e, 0x54,0xfe,0x56,0x7e,0xe0,0xc1)
580 #endif
581 #else
582 typedef struct IDXGIResource1Vtbl {
583     BEGIN_INTERFACE
584 
585     /*** IUnknown methods ***/
586     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
587         IDXGIResource1 *This,
588         REFIID riid,
589         void **ppvObject);
590 
591     ULONG (STDMETHODCALLTYPE *AddRef)(
592         IDXGIResource1 *This);
593 
594     ULONG (STDMETHODCALLTYPE *Release)(
595         IDXGIResource1 *This);
596 
597     /*** IDXGIObject methods ***/
598     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
599         IDXGIResource1 *This,
600         REFGUID guid,
601         UINT data_size,
602         const void *data);
603 
604     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
605         IDXGIResource1 *This,
606         REFGUID guid,
607         const IUnknown *object);
608 
609     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
610         IDXGIResource1 *This,
611         REFGUID guid,
612         UINT *data_size,
613         void *data);
614 
615     HRESULT (STDMETHODCALLTYPE *GetParent)(
616         IDXGIResource1 *This,
617         REFIID riid,
618         void **parent);
619 
620     /*** IDXGIDeviceSubObject methods ***/
621     HRESULT (STDMETHODCALLTYPE *GetDevice)(
622         IDXGIResource1 *This,
623         REFIID riid,
624         void **device);
625 
626     /*** IDXGIResource methods ***/
627     HRESULT (STDMETHODCALLTYPE *GetSharedHandle)(
628         IDXGIResource1 *This,
629         HANDLE *pSharedHandle);
630 
631     HRESULT (STDMETHODCALLTYPE *GetUsage)(
632         IDXGIResource1 *This,
633         DXGI_USAGE *pUsage);
634 
635     HRESULT (STDMETHODCALLTYPE *SetEvictionPriority)(
636         IDXGIResource1 *This,
637         UINT EvictionPriority);
638 
639     HRESULT (STDMETHODCALLTYPE *GetEvictionPriority)(
640         IDXGIResource1 *This,
641         UINT *pEvictionPriority);
642 
643     /*** IDXGIResource1 methods ***/
644     HRESULT (STDMETHODCALLTYPE *CreateSubresourceSurface)(
645         IDXGIResource1 *This,
646         UINT index,
647         IDXGISurface2 **surface);
648 
649     HRESULT (STDMETHODCALLTYPE *CreateSharedHandle)(
650         IDXGIResource1 *This,
651         const SECURITY_ATTRIBUTES *attributes,
652         DWORD access,
653         const WCHAR *name,
654         HANDLE *handle);
655 
656     END_INTERFACE
657 } IDXGIResource1Vtbl;
658 
659 interface IDXGIResource1 {
660     CONST_VTBL IDXGIResource1Vtbl* lpVtbl;
661 };
662 
663 #ifdef COBJMACROS
664 #ifndef WIDL_C_INLINE_WRAPPERS
665 /*** IUnknown methods ***/
666 #define IDXGIResource1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
667 #define IDXGIResource1_AddRef(This) (This)->lpVtbl->AddRef(This)
668 #define IDXGIResource1_Release(This) (This)->lpVtbl->Release(This)
669 /*** IDXGIObject methods ***/
670 #define IDXGIResource1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
671 #define IDXGIResource1_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
672 #define IDXGIResource1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
673 #define IDXGIResource1_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
674 /*** IDXGIDeviceSubObject methods ***/
675 #define IDXGIResource1_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
676 /*** IDXGIResource methods ***/
677 #define IDXGIResource1_GetSharedHandle(This,pSharedHandle) (This)->lpVtbl->GetSharedHandle(This,pSharedHandle)
678 #define IDXGIResource1_GetUsage(This,pUsage) (This)->lpVtbl->GetUsage(This,pUsage)
679 #define IDXGIResource1_SetEvictionPriority(This,EvictionPriority) (This)->lpVtbl->SetEvictionPriority(This,EvictionPriority)
680 #define IDXGIResource1_GetEvictionPriority(This,pEvictionPriority) (This)->lpVtbl->GetEvictionPriority(This,pEvictionPriority)
681 /*** IDXGIResource1 methods ***/
682 #define IDXGIResource1_CreateSubresourceSurface(This,index,surface) (This)->lpVtbl->CreateSubresourceSurface(This,index,surface)
683 #define IDXGIResource1_CreateSharedHandle(This,attributes,access,name,handle) (This)->lpVtbl->CreateSharedHandle(This,attributes,access,name,handle)
684 #else
685 /*** IUnknown methods ***/
686 static FORCEINLINE HRESULT IDXGIResource1_QueryInterface(IDXGIResource1* This,REFIID riid,void **ppvObject) {
687     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
688 }
689 static FORCEINLINE ULONG IDXGIResource1_AddRef(IDXGIResource1* This) {
690     return This->lpVtbl->AddRef(This);
691 }
692 static FORCEINLINE ULONG IDXGIResource1_Release(IDXGIResource1* This) {
693     return This->lpVtbl->Release(This);
694 }
695 /*** IDXGIObject methods ***/
696 static FORCEINLINE HRESULT IDXGIResource1_SetPrivateData(IDXGIResource1* This,REFGUID guid,UINT data_size,const void *data) {
697     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
698 }
699 static FORCEINLINE HRESULT IDXGIResource1_SetPrivateDataInterface(IDXGIResource1* This,REFGUID guid,const IUnknown *object) {
700     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
701 }
702 static FORCEINLINE HRESULT IDXGIResource1_GetPrivateData(IDXGIResource1* This,REFGUID guid,UINT *data_size,void *data) {
703     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
704 }
705 static FORCEINLINE HRESULT IDXGIResource1_GetParent(IDXGIResource1* This,REFIID riid,void **parent) {
706     return This->lpVtbl->GetParent(This,riid,parent);
707 }
708 /*** IDXGIDeviceSubObject methods ***/
709 static FORCEINLINE HRESULT IDXGIResource1_GetDevice(IDXGIResource1* This,REFIID riid,void **device) {
710     return This->lpVtbl->GetDevice(This,riid,device);
711 }
712 /*** IDXGIResource methods ***/
713 static FORCEINLINE HRESULT IDXGIResource1_GetSharedHandle(IDXGIResource1* This,HANDLE *pSharedHandle) {
714     return This->lpVtbl->GetSharedHandle(This,pSharedHandle);
715 }
716 static FORCEINLINE HRESULT IDXGIResource1_GetUsage(IDXGIResource1* This,DXGI_USAGE *pUsage) {
717     return This->lpVtbl->GetUsage(This,pUsage);
718 }
719 static FORCEINLINE HRESULT IDXGIResource1_SetEvictionPriority(IDXGIResource1* This,UINT EvictionPriority) {
720     return This->lpVtbl->SetEvictionPriority(This,EvictionPriority);
721 }
722 static FORCEINLINE HRESULT IDXGIResource1_GetEvictionPriority(IDXGIResource1* This,UINT *pEvictionPriority) {
723     return This->lpVtbl->GetEvictionPriority(This,pEvictionPriority);
724 }
725 /*** IDXGIResource1 methods ***/
726 static FORCEINLINE HRESULT IDXGIResource1_CreateSubresourceSurface(IDXGIResource1* This,UINT index,IDXGISurface2 **surface) {
727     return This->lpVtbl->CreateSubresourceSurface(This,index,surface);
728 }
729 static FORCEINLINE HRESULT IDXGIResource1_CreateSharedHandle(IDXGIResource1* This,const SECURITY_ATTRIBUTES *attributes,DWORD access,const WCHAR *name,HANDLE *handle) {
730     return This->lpVtbl->CreateSharedHandle(This,attributes,access,name,handle);
731 }
732 #endif
733 #endif
734 
735 #endif
736 
737 
738 #endif  /* __IDXGIResource1_INTERFACE_DEFINED__ */
739 
740 /*****************************************************************************
741  * IDXGIDisplayControl interface
742  */
743 #ifndef __IDXGIDisplayControl_INTERFACE_DEFINED__
744 #define __IDXGIDisplayControl_INTERFACE_DEFINED__
745 
746 DEFINE_GUID(IID_IDXGIDisplayControl, 0xea9dbf1a, 0xc88e, 0x4486, 0x85,0x4a, 0x98,0xaa,0x01,0x38,0xf3,0x0c);
747 #if defined(__cplusplus) && !defined(CINTERFACE)
748 MIDL_INTERFACE("ea9dbf1a-c88e-4486-854a-98aa0138f30c")
749 IDXGIDisplayControl : public IUnknown
750 {
751     virtual WINBOOL STDMETHODCALLTYPE IsStereoEnabled(
752         ) = 0;
753 
754     virtual void STDMETHODCALLTYPE SetStereoEnabled(
755         WINBOOL enabled) = 0;
756 
757 };
758 #ifdef __CRT_UUID_DECL
759 __CRT_UUID_DECL(IDXGIDisplayControl, 0xea9dbf1a, 0xc88e, 0x4486, 0x85,0x4a, 0x98,0xaa,0x01,0x38,0xf3,0x0c)
760 #endif
761 #else
762 typedef struct IDXGIDisplayControlVtbl {
763     BEGIN_INTERFACE
764 
765     /*** IUnknown methods ***/
766     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
767         IDXGIDisplayControl *This,
768         REFIID riid,
769         void **ppvObject);
770 
771     ULONG (STDMETHODCALLTYPE *AddRef)(
772         IDXGIDisplayControl *This);
773 
774     ULONG (STDMETHODCALLTYPE *Release)(
775         IDXGIDisplayControl *This);
776 
777     /*** IDXGIDisplayControl methods ***/
778     WINBOOL (STDMETHODCALLTYPE *IsStereoEnabled)(
779         IDXGIDisplayControl *This);
780 
781     void (STDMETHODCALLTYPE *SetStereoEnabled)(
782         IDXGIDisplayControl *This,
783         WINBOOL enabled);
784 
785     END_INTERFACE
786 } IDXGIDisplayControlVtbl;
787 
788 interface IDXGIDisplayControl {
789     CONST_VTBL IDXGIDisplayControlVtbl* lpVtbl;
790 };
791 
792 #ifdef COBJMACROS
793 #ifndef WIDL_C_INLINE_WRAPPERS
794 /*** IUnknown methods ***/
795 #define IDXGIDisplayControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
796 #define IDXGIDisplayControl_AddRef(This) (This)->lpVtbl->AddRef(This)
797 #define IDXGIDisplayControl_Release(This) (This)->lpVtbl->Release(This)
798 /*** IDXGIDisplayControl methods ***/
799 #define IDXGIDisplayControl_IsStereoEnabled(This) (This)->lpVtbl->IsStereoEnabled(This)
800 #define IDXGIDisplayControl_SetStereoEnabled(This,enabled) (This)->lpVtbl->SetStereoEnabled(This,enabled)
801 #else
802 /*** IUnknown methods ***/
803 static FORCEINLINE HRESULT IDXGIDisplayControl_QueryInterface(IDXGIDisplayControl* This,REFIID riid,void **ppvObject) {
804     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
805 }
806 static FORCEINLINE ULONG IDXGIDisplayControl_AddRef(IDXGIDisplayControl* This) {
807     return This->lpVtbl->AddRef(This);
808 }
809 static FORCEINLINE ULONG IDXGIDisplayControl_Release(IDXGIDisplayControl* This) {
810     return This->lpVtbl->Release(This);
811 }
812 /*** IDXGIDisplayControl methods ***/
813 static FORCEINLINE WINBOOL IDXGIDisplayControl_IsStereoEnabled(IDXGIDisplayControl* This) {
814     return This->lpVtbl->IsStereoEnabled(This);
815 }
816 static FORCEINLINE void IDXGIDisplayControl_SetStereoEnabled(IDXGIDisplayControl* This,WINBOOL enabled) {
817     This->lpVtbl->SetStereoEnabled(This,enabled);
818 }
819 #endif
820 #endif
821 
822 #endif
823 
824 
825 #endif  /* __IDXGIDisplayControl_INTERFACE_DEFINED__ */
826 
827 /*****************************************************************************
828  * IDXGIDevice2 interface
829  */
830 #ifndef __IDXGIDevice2_INTERFACE_DEFINED__
831 #define __IDXGIDevice2_INTERFACE_DEFINED__
832 
833 DEFINE_GUID(IID_IDXGIDevice2, 0x05008617, 0xfbfd, 0x4051, 0xa7,0x90, 0x14,0x48,0x84,0xb4,0xf6,0xa9);
834 #if defined(__cplusplus) && !defined(CINTERFACE)
835 MIDL_INTERFACE("05008617-fbfd-4051-a790-144884b4f6a9")
836 IDXGIDevice2 : public IDXGIDevice1
837 {
838     virtual HRESULT STDMETHODCALLTYPE OfferResources(
839         UINT NumResources,
840         IDXGIResource *const *ppResources,
841         DXGI_OFFER_RESOURCE_PRIORITY Priority) = 0;
842 
843     virtual HRESULT STDMETHODCALLTYPE ReclaimResources(
844         UINT NumResources,
845         IDXGIResource *const *ppResources,
846         WINBOOL *pDiscarded) = 0;
847 
848     virtual HRESULT STDMETHODCALLTYPE EnqueueSetEvent(
849         HANDLE hEvent) = 0;
850 
851 };
852 #ifdef __CRT_UUID_DECL
853 __CRT_UUID_DECL(IDXGIDevice2, 0x05008617, 0xfbfd, 0x4051, 0xa7,0x90, 0x14,0x48,0x84,0xb4,0xf6,0xa9)
854 #endif
855 #else
856 typedef struct IDXGIDevice2Vtbl {
857     BEGIN_INTERFACE
858 
859     /*** IUnknown methods ***/
860     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
861         IDXGIDevice2 *This,
862         REFIID riid,
863         void **ppvObject);
864 
865     ULONG (STDMETHODCALLTYPE *AddRef)(
866         IDXGIDevice2 *This);
867 
868     ULONG (STDMETHODCALLTYPE *Release)(
869         IDXGIDevice2 *This);
870 
871     /*** IDXGIObject methods ***/
872     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
873         IDXGIDevice2 *This,
874         REFGUID guid,
875         UINT data_size,
876         const void *data);
877 
878     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
879         IDXGIDevice2 *This,
880         REFGUID guid,
881         const IUnknown *object);
882 
883     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
884         IDXGIDevice2 *This,
885         REFGUID guid,
886         UINT *data_size,
887         void *data);
888 
889     HRESULT (STDMETHODCALLTYPE *GetParent)(
890         IDXGIDevice2 *This,
891         REFIID riid,
892         void **parent);
893 
894     /*** IDXGIDevice methods ***/
895     HRESULT (STDMETHODCALLTYPE *GetAdapter)(
896         IDXGIDevice2 *This,
897         IDXGIAdapter **adapter);
898 
899     HRESULT (STDMETHODCALLTYPE *CreateSurface)(
900         IDXGIDevice2 *This,
901         const DXGI_SURFACE_DESC *desc,
902         UINT surface_count,
903         DXGI_USAGE usage,
904         const DXGI_SHARED_RESOURCE *shared_resource,
905         IDXGISurface **surface);
906 
907     HRESULT (STDMETHODCALLTYPE *QueryResourceResidency)(
908         IDXGIDevice2 *This,
909         IUnknown *const *resources,
910         DXGI_RESIDENCY *residency,
911         UINT resource_count);
912 
913     HRESULT (STDMETHODCALLTYPE *SetGPUThreadPriority)(
914         IDXGIDevice2 *This,
915         INT priority);
916 
917     HRESULT (STDMETHODCALLTYPE *GetGPUThreadPriority)(
918         IDXGIDevice2 *This,
919         INT *priority);
920 
921     /*** IDXGIDevice1 methods ***/
922     HRESULT (STDMETHODCALLTYPE *SetMaximumFrameLatency)(
923         IDXGIDevice2 *This,
924         UINT MaxLatency);
925 
926     HRESULT (STDMETHODCALLTYPE *GetMaximumFrameLatency)(
927         IDXGIDevice2 *This,
928         UINT *pMaxLatency);
929 
930     /*** IDXGIDevice2 methods ***/
931     HRESULT (STDMETHODCALLTYPE *OfferResources)(
932         IDXGIDevice2 *This,
933         UINT NumResources,
934         IDXGIResource *const *ppResources,
935         DXGI_OFFER_RESOURCE_PRIORITY Priority);
936 
937     HRESULT (STDMETHODCALLTYPE *ReclaimResources)(
938         IDXGIDevice2 *This,
939         UINT NumResources,
940         IDXGIResource *const *ppResources,
941         WINBOOL *pDiscarded);
942 
943     HRESULT (STDMETHODCALLTYPE *EnqueueSetEvent)(
944         IDXGIDevice2 *This,
945         HANDLE hEvent);
946 
947     END_INTERFACE
948 } IDXGIDevice2Vtbl;
949 
950 interface IDXGIDevice2 {
951     CONST_VTBL IDXGIDevice2Vtbl* lpVtbl;
952 };
953 
954 #ifdef COBJMACROS
955 #ifndef WIDL_C_INLINE_WRAPPERS
956 /*** IUnknown methods ***/
957 #define IDXGIDevice2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
958 #define IDXGIDevice2_AddRef(This) (This)->lpVtbl->AddRef(This)
959 #define IDXGIDevice2_Release(This) (This)->lpVtbl->Release(This)
960 /*** IDXGIObject methods ***/
961 #define IDXGIDevice2_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
962 #define IDXGIDevice2_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
963 #define IDXGIDevice2_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
964 #define IDXGIDevice2_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
965 /*** IDXGIDevice methods ***/
966 #define IDXGIDevice2_GetAdapter(This,adapter) (This)->lpVtbl->GetAdapter(This,adapter)
967 #define IDXGIDevice2_CreateSurface(This,desc,surface_count,usage,shared_resource,surface) (This)->lpVtbl->CreateSurface(This,desc,surface_count,usage,shared_resource,surface)
968 #define IDXGIDevice2_QueryResourceResidency(This,resources,residency,resource_count) (This)->lpVtbl->QueryResourceResidency(This,resources,residency,resource_count)
969 #define IDXGIDevice2_SetGPUThreadPriority(This,priority) (This)->lpVtbl->SetGPUThreadPriority(This,priority)
970 #define IDXGIDevice2_GetGPUThreadPriority(This,priority) (This)->lpVtbl->GetGPUThreadPriority(This,priority)
971 /*** IDXGIDevice1 methods ***/
972 #define IDXGIDevice2_SetMaximumFrameLatency(This,MaxLatency) (This)->lpVtbl->SetMaximumFrameLatency(This,MaxLatency)
973 #define IDXGIDevice2_GetMaximumFrameLatency(This,pMaxLatency) (This)->lpVtbl->GetMaximumFrameLatency(This,pMaxLatency)
974 /*** IDXGIDevice2 methods ***/
975 #define IDXGIDevice2_OfferResources(This,NumResources,ppResources,Priority) (This)->lpVtbl->OfferResources(This,NumResources,ppResources,Priority)
976 #define IDXGIDevice2_ReclaimResources(This,NumResources,ppResources,pDiscarded) (This)->lpVtbl->ReclaimResources(This,NumResources,ppResources,pDiscarded)
977 #define IDXGIDevice2_EnqueueSetEvent(This,hEvent) (This)->lpVtbl->EnqueueSetEvent(This,hEvent)
978 #else
979 /*** IUnknown methods ***/
980 static FORCEINLINE HRESULT IDXGIDevice2_QueryInterface(IDXGIDevice2* This,REFIID riid,void **ppvObject) {
981     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
982 }
983 static FORCEINLINE ULONG IDXGIDevice2_AddRef(IDXGIDevice2* This) {
984     return This->lpVtbl->AddRef(This);
985 }
986 static FORCEINLINE ULONG IDXGIDevice2_Release(IDXGIDevice2* This) {
987     return This->lpVtbl->Release(This);
988 }
989 /*** IDXGIObject methods ***/
990 static FORCEINLINE HRESULT IDXGIDevice2_SetPrivateData(IDXGIDevice2* This,REFGUID guid,UINT data_size,const void *data) {
991     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
992 }
993 static FORCEINLINE HRESULT IDXGIDevice2_SetPrivateDataInterface(IDXGIDevice2* This,REFGUID guid,const IUnknown *object) {
994     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
995 }
996 static FORCEINLINE HRESULT IDXGIDevice2_GetPrivateData(IDXGIDevice2* This,REFGUID guid,UINT *data_size,void *data) {
997     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
998 }
999 static FORCEINLINE HRESULT IDXGIDevice2_GetParent(IDXGIDevice2* This,REFIID riid,void **parent) {
1000     return This->lpVtbl->GetParent(This,riid,parent);
1001 }
1002 /*** IDXGIDevice methods ***/
1003 static FORCEINLINE HRESULT IDXGIDevice2_GetAdapter(IDXGIDevice2* This,IDXGIAdapter **adapter) {
1004     return This->lpVtbl->GetAdapter(This,adapter);
1005 }
1006 static FORCEINLINE HRESULT IDXGIDevice2_CreateSurface(IDXGIDevice2* This,const DXGI_SURFACE_DESC *desc,UINT surface_count,DXGI_USAGE usage,const DXGI_SHARED_RESOURCE *shared_resource,IDXGISurface **surface) {
1007     return This->lpVtbl->CreateSurface(This,desc,surface_count,usage,shared_resource,surface);
1008 }
1009 static FORCEINLINE HRESULT IDXGIDevice2_QueryResourceResidency(IDXGIDevice2* This,IUnknown *const *resources,DXGI_RESIDENCY *residency,UINT resource_count) {
1010     return This->lpVtbl->QueryResourceResidency(This,resources,residency,resource_count);
1011 }
1012 static FORCEINLINE HRESULT IDXGIDevice2_SetGPUThreadPriority(IDXGIDevice2* This,INT priority) {
1013     return This->lpVtbl->SetGPUThreadPriority(This,priority);
1014 }
1015 static FORCEINLINE HRESULT IDXGIDevice2_GetGPUThreadPriority(IDXGIDevice2* This,INT *priority) {
1016     return This->lpVtbl->GetGPUThreadPriority(This,priority);
1017 }
1018 /*** IDXGIDevice1 methods ***/
1019 static FORCEINLINE HRESULT IDXGIDevice2_SetMaximumFrameLatency(IDXGIDevice2* This,UINT MaxLatency) {
1020     return This->lpVtbl->SetMaximumFrameLatency(This,MaxLatency);
1021 }
1022 static FORCEINLINE HRESULT IDXGIDevice2_GetMaximumFrameLatency(IDXGIDevice2* This,UINT *pMaxLatency) {
1023     return This->lpVtbl->GetMaximumFrameLatency(This,pMaxLatency);
1024 }
1025 /*** IDXGIDevice2 methods ***/
1026 static FORCEINLINE HRESULT IDXGIDevice2_OfferResources(IDXGIDevice2* This,UINT NumResources,IDXGIResource *const *ppResources,DXGI_OFFER_RESOURCE_PRIORITY Priority) {
1027     return This->lpVtbl->OfferResources(This,NumResources,ppResources,Priority);
1028 }
1029 static FORCEINLINE HRESULT IDXGIDevice2_ReclaimResources(IDXGIDevice2* This,UINT NumResources,IDXGIResource *const *ppResources,WINBOOL *pDiscarded) {
1030     return This->lpVtbl->ReclaimResources(This,NumResources,ppResources,pDiscarded);
1031 }
1032 static FORCEINLINE HRESULT IDXGIDevice2_EnqueueSetEvent(IDXGIDevice2* This,HANDLE hEvent) {
1033     return This->lpVtbl->EnqueueSetEvent(This,hEvent);
1034 }
1035 #endif
1036 #endif
1037 
1038 #endif
1039 
1040 
1041 #endif  /* __IDXGIDevice2_INTERFACE_DEFINED__ */
1042 
1043 typedef enum DXGI_SCALING {
1044     DXGI_SCALING_STRETCH = 0,
1045     DXGI_SCALING_NONE = 1
1046 } DXGI_SCALING;
1047 typedef struct DXGI_SWAP_CHAIN_DESC1 {
1048     UINT Width;
1049     UINT Height;
1050     DXGI_FORMAT Format;
1051     WINBOOL Stereo;
1052     DXGI_SAMPLE_DESC SampleDesc;
1053     DXGI_USAGE BufferUsage;
1054     UINT BufferCount;
1055     DXGI_SCALING Scaling;
1056     DXGI_SWAP_EFFECT SwapEffect;
1057     DXGI_ALPHA_MODE AlphaMode;
1058     UINT Flags;
1059 } DXGI_SWAP_CHAIN_DESC1;
1060 typedef struct DXGI_SWAP_CHAIN_FULLSCREEN_DESC {
1061     DXGI_RATIONAL RefreshRate;
1062     DXGI_MODE_SCANLINE_ORDER ScanlineOrdering;
1063     DXGI_MODE_SCALING Scaling;
1064     WINBOOL Windowed;
1065 } DXGI_SWAP_CHAIN_FULLSCREEN_DESC;
1066 typedef struct DXGI_PRESENT_PARAMETERS {
1067     UINT DirtyRectsCount;
1068     RECT *pDirtyRects;
1069     RECT *pScrollRect;
1070     POINT *pScrollOffset;
1071 } DXGI_PRESENT_PARAMETERS;
1072 /*****************************************************************************
1073  * IDXGISwapChain1 interface
1074  */
1075 #ifndef __IDXGISwapChain1_INTERFACE_DEFINED__
1076 #define __IDXGISwapChain1_INTERFACE_DEFINED__
1077 
1078 DEFINE_GUID(IID_IDXGISwapChain1, 0x790a45f7, 0x0d42, 0x4876, 0x98,0x3a, 0x0a,0x55,0xcf,0xe6,0xf4,0xaa);
1079 #if defined(__cplusplus) && !defined(CINTERFACE)
1080 MIDL_INTERFACE("790a45f7-0d42-4876-983a-0a55cfe6f4aa")
1081 IDXGISwapChain1 : public IDXGISwapChain
1082 {
1083     virtual HRESULT STDMETHODCALLTYPE GetDesc1(
1084         DXGI_SWAP_CHAIN_DESC1 *pDesc) = 0;
1085 
1086     virtual HRESULT STDMETHODCALLTYPE GetFullscreenDesc(
1087         DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc) = 0;
1088 
1089     virtual HRESULT STDMETHODCALLTYPE GetHwnd(
1090         HWND *pHwnd) = 0;
1091 
1092     virtual HRESULT STDMETHODCALLTYPE GetCoreWindow(
1093         REFIID refiid,
1094         void **ppUnk) = 0;
1095 
1096     virtual HRESULT STDMETHODCALLTYPE Present1(
1097         UINT SyncInterval,
1098         UINT PresentFlags,
1099         const DXGI_PRESENT_PARAMETERS *pPresentParameters) = 0;
1100 
1101     virtual WINBOOL STDMETHODCALLTYPE IsTemporaryMonoSupported(
1102         ) = 0;
1103 
1104     virtual HRESULT STDMETHODCALLTYPE GetRestrictToOutput(
1105         IDXGIOutput **ppRestrictToOutput) = 0;
1106 
1107     virtual HRESULT STDMETHODCALLTYPE SetBackgroundColor(
1108         const DXGI_RGBA *pColor) = 0;
1109 
1110     virtual HRESULT STDMETHODCALLTYPE GetBackgroundColor(
1111         DXGI_RGBA *pColor) = 0;
1112 
1113     virtual HRESULT STDMETHODCALLTYPE SetRotation(
1114         DXGI_MODE_ROTATION Rotation) = 0;
1115 
1116     virtual HRESULT STDMETHODCALLTYPE GetRotation(
1117         DXGI_MODE_ROTATION *pRotation) = 0;
1118 
1119 };
1120 #ifdef __CRT_UUID_DECL
1121 __CRT_UUID_DECL(IDXGISwapChain1, 0x790a45f7, 0x0d42, 0x4876, 0x98,0x3a, 0x0a,0x55,0xcf,0xe6,0xf4,0xaa)
1122 #endif
1123 #else
1124 typedef struct IDXGISwapChain1Vtbl {
1125     BEGIN_INTERFACE
1126 
1127     /*** IUnknown methods ***/
1128     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1129         IDXGISwapChain1 *This,
1130         REFIID riid,
1131         void **ppvObject);
1132 
1133     ULONG (STDMETHODCALLTYPE *AddRef)(
1134         IDXGISwapChain1 *This);
1135 
1136     ULONG (STDMETHODCALLTYPE *Release)(
1137         IDXGISwapChain1 *This);
1138 
1139     /*** IDXGIObject methods ***/
1140     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
1141         IDXGISwapChain1 *This,
1142         REFGUID guid,
1143         UINT data_size,
1144         const void *data);
1145 
1146     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
1147         IDXGISwapChain1 *This,
1148         REFGUID guid,
1149         const IUnknown *object);
1150 
1151     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
1152         IDXGISwapChain1 *This,
1153         REFGUID guid,
1154         UINT *data_size,
1155         void *data);
1156 
1157     HRESULT (STDMETHODCALLTYPE *GetParent)(
1158         IDXGISwapChain1 *This,
1159         REFIID riid,
1160         void **parent);
1161 
1162     /*** IDXGIDeviceSubObject methods ***/
1163     HRESULT (STDMETHODCALLTYPE *GetDevice)(
1164         IDXGISwapChain1 *This,
1165         REFIID riid,
1166         void **device);
1167 
1168     /*** IDXGISwapChain methods ***/
1169     HRESULT (STDMETHODCALLTYPE *Present)(
1170         IDXGISwapChain1 *This,
1171         UINT sync_interval,
1172         UINT flags);
1173 
1174     HRESULT (STDMETHODCALLTYPE *GetBuffer)(
1175         IDXGISwapChain1 *This,
1176         UINT buffer_idx,
1177         REFIID riid,
1178         void **surface);
1179 
1180     HRESULT (STDMETHODCALLTYPE *SetFullscreenState)(
1181         IDXGISwapChain1 *This,
1182         WINBOOL fullscreen,
1183         IDXGIOutput *target);
1184 
1185     HRESULT (STDMETHODCALLTYPE *GetFullscreenState)(
1186         IDXGISwapChain1 *This,
1187         WINBOOL *fullscreen,
1188         IDXGIOutput **target);
1189 
1190     HRESULT (STDMETHODCALLTYPE *GetDesc)(
1191         IDXGISwapChain1 *This,
1192         DXGI_SWAP_CHAIN_DESC *desc);
1193 
1194     HRESULT (STDMETHODCALLTYPE *ResizeBuffers)(
1195         IDXGISwapChain1 *This,
1196         UINT buffer_count,
1197         UINT width,
1198         UINT height,
1199         DXGI_FORMAT format,
1200         UINT flags);
1201 
1202     HRESULT (STDMETHODCALLTYPE *ResizeTarget)(
1203         IDXGISwapChain1 *This,
1204         const DXGI_MODE_DESC *target_mode_desc);
1205 
1206     HRESULT (STDMETHODCALLTYPE *GetContainingOutput)(
1207         IDXGISwapChain1 *This,
1208         IDXGIOutput **output);
1209 
1210     HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)(
1211         IDXGISwapChain1 *This,
1212         DXGI_FRAME_STATISTICS *stats);
1213 
1214     HRESULT (STDMETHODCALLTYPE *GetLastPresentCount)(
1215         IDXGISwapChain1 *This,
1216         UINT *last_present_count);
1217 
1218     /*** IDXGISwapChain1 methods ***/
1219     HRESULT (STDMETHODCALLTYPE *GetDesc1)(
1220         IDXGISwapChain1 *This,
1221         DXGI_SWAP_CHAIN_DESC1 *pDesc);
1222 
1223     HRESULT (STDMETHODCALLTYPE *GetFullscreenDesc)(
1224         IDXGISwapChain1 *This,
1225         DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc);
1226 
1227     HRESULT (STDMETHODCALLTYPE *GetHwnd)(
1228         IDXGISwapChain1 *This,
1229         HWND *pHwnd);
1230 
1231     HRESULT (STDMETHODCALLTYPE *GetCoreWindow)(
1232         IDXGISwapChain1 *This,
1233         REFIID refiid,
1234         void **ppUnk);
1235 
1236     HRESULT (STDMETHODCALLTYPE *Present1)(
1237         IDXGISwapChain1 *This,
1238         UINT SyncInterval,
1239         UINT PresentFlags,
1240         const DXGI_PRESENT_PARAMETERS *pPresentParameters);
1241 
1242     WINBOOL (STDMETHODCALLTYPE *IsTemporaryMonoSupported)(
1243         IDXGISwapChain1 *This);
1244 
1245     HRESULT (STDMETHODCALLTYPE *GetRestrictToOutput)(
1246         IDXGISwapChain1 *This,
1247         IDXGIOutput **ppRestrictToOutput);
1248 
1249     HRESULT (STDMETHODCALLTYPE *SetBackgroundColor)(
1250         IDXGISwapChain1 *This,
1251         const DXGI_RGBA *pColor);
1252 
1253     HRESULT (STDMETHODCALLTYPE *GetBackgroundColor)(
1254         IDXGISwapChain1 *This,
1255         DXGI_RGBA *pColor);
1256 
1257     HRESULT (STDMETHODCALLTYPE *SetRotation)(
1258         IDXGISwapChain1 *This,
1259         DXGI_MODE_ROTATION Rotation);
1260 
1261     HRESULT (STDMETHODCALLTYPE *GetRotation)(
1262         IDXGISwapChain1 *This,
1263         DXGI_MODE_ROTATION *pRotation);
1264 
1265     END_INTERFACE
1266 } IDXGISwapChain1Vtbl;
1267 
1268 interface IDXGISwapChain1 {
1269     CONST_VTBL IDXGISwapChain1Vtbl* lpVtbl;
1270 };
1271 
1272 #ifdef COBJMACROS
1273 #ifndef WIDL_C_INLINE_WRAPPERS
1274 /*** IUnknown methods ***/
1275 #define IDXGISwapChain1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1276 #define IDXGISwapChain1_AddRef(This) (This)->lpVtbl->AddRef(This)
1277 #define IDXGISwapChain1_Release(This) (This)->lpVtbl->Release(This)
1278 /*** IDXGIObject methods ***/
1279 #define IDXGISwapChain1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
1280 #define IDXGISwapChain1_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
1281 #define IDXGISwapChain1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
1282 #define IDXGISwapChain1_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
1283 /*** IDXGIDeviceSubObject methods ***/
1284 #define IDXGISwapChain1_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
1285 /*** IDXGISwapChain methods ***/
1286 #define IDXGISwapChain1_Present(This,sync_interval,flags) (This)->lpVtbl->Present(This,sync_interval,flags)
1287 #define IDXGISwapChain1_GetBuffer(This,buffer_idx,riid,surface) (This)->lpVtbl->GetBuffer(This,buffer_idx,riid,surface)
1288 #define IDXGISwapChain1_SetFullscreenState(This,fullscreen,target) (This)->lpVtbl->SetFullscreenState(This,fullscreen,target)
1289 #define IDXGISwapChain1_GetFullscreenState(This,fullscreen,target) (This)->lpVtbl->GetFullscreenState(This,fullscreen,target)
1290 #define IDXGISwapChain1_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
1291 #define IDXGISwapChain1_ResizeBuffers(This,buffer_count,width,height,format,flags) (This)->lpVtbl->ResizeBuffers(This,buffer_count,width,height,format,flags)
1292 #define IDXGISwapChain1_ResizeTarget(This,target_mode_desc) (This)->lpVtbl->ResizeTarget(This,target_mode_desc)
1293 #define IDXGISwapChain1_GetContainingOutput(This,output) (This)->lpVtbl->GetContainingOutput(This,output)
1294 #define IDXGISwapChain1_GetFrameStatistics(This,stats) (This)->lpVtbl->GetFrameStatistics(This,stats)
1295 #define IDXGISwapChain1_GetLastPresentCount(This,last_present_count) (This)->lpVtbl->GetLastPresentCount(This,last_present_count)
1296 /*** IDXGISwapChain1 methods ***/
1297 #define IDXGISwapChain1_GetDesc1(This,pDesc) (This)->lpVtbl->GetDesc1(This,pDesc)
1298 #define IDXGISwapChain1_GetFullscreenDesc(This,pDesc) (This)->lpVtbl->GetFullscreenDesc(This,pDesc)
1299 #define IDXGISwapChain1_GetHwnd(This,pHwnd) (This)->lpVtbl->GetHwnd(This,pHwnd)
1300 #define IDXGISwapChain1_GetCoreWindow(This,refiid,ppUnk) (This)->lpVtbl->GetCoreWindow(This,refiid,ppUnk)
1301 #define IDXGISwapChain1_Present1(This,SyncInterval,PresentFlags,pPresentParameters) (This)->lpVtbl->Present1(This,SyncInterval,PresentFlags,pPresentParameters)
1302 #define IDXGISwapChain1_IsTemporaryMonoSupported(This) (This)->lpVtbl->IsTemporaryMonoSupported(This)
1303 #define IDXGISwapChain1_GetRestrictToOutput(This,ppRestrictToOutput) (This)->lpVtbl->GetRestrictToOutput(This,ppRestrictToOutput)
1304 #define IDXGISwapChain1_SetBackgroundColor(This,pColor) (This)->lpVtbl->SetBackgroundColor(This,pColor)
1305 #define IDXGISwapChain1_GetBackgroundColor(This,pColor) (This)->lpVtbl->GetBackgroundColor(This,pColor)
1306 #define IDXGISwapChain1_SetRotation(This,Rotation) (This)->lpVtbl->SetRotation(This,Rotation)
1307 #define IDXGISwapChain1_GetRotation(This,pRotation) (This)->lpVtbl->GetRotation(This,pRotation)
1308 #else
1309 /*** IUnknown methods ***/
1310 static FORCEINLINE HRESULT IDXGISwapChain1_QueryInterface(IDXGISwapChain1* This,REFIID riid,void **ppvObject) {
1311     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1312 }
1313 static FORCEINLINE ULONG IDXGISwapChain1_AddRef(IDXGISwapChain1* This) {
1314     return This->lpVtbl->AddRef(This);
1315 }
1316 static FORCEINLINE ULONG IDXGISwapChain1_Release(IDXGISwapChain1* This) {
1317     return This->lpVtbl->Release(This);
1318 }
1319 /*** IDXGIObject methods ***/
1320 static FORCEINLINE HRESULT IDXGISwapChain1_SetPrivateData(IDXGISwapChain1* This,REFGUID guid,UINT data_size,const void *data) {
1321     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
1322 }
1323 static FORCEINLINE HRESULT IDXGISwapChain1_SetPrivateDataInterface(IDXGISwapChain1* This,REFGUID guid,const IUnknown *object) {
1324     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
1325 }
1326 static FORCEINLINE HRESULT IDXGISwapChain1_GetPrivateData(IDXGISwapChain1* This,REFGUID guid,UINT *data_size,void *data) {
1327     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
1328 }
1329 static FORCEINLINE HRESULT IDXGISwapChain1_GetParent(IDXGISwapChain1* This,REFIID riid,void **parent) {
1330     return This->lpVtbl->GetParent(This,riid,parent);
1331 }
1332 /*** IDXGIDeviceSubObject methods ***/
1333 static FORCEINLINE HRESULT IDXGISwapChain1_GetDevice(IDXGISwapChain1* This,REFIID riid,void **device) {
1334     return This->lpVtbl->GetDevice(This,riid,device);
1335 }
1336 /*** IDXGISwapChain methods ***/
1337 static FORCEINLINE HRESULT IDXGISwapChain1_Present(IDXGISwapChain1* This,UINT sync_interval,UINT flags) {
1338     return This->lpVtbl->Present(This,sync_interval,flags);
1339 }
1340 static FORCEINLINE HRESULT IDXGISwapChain1_GetBuffer(IDXGISwapChain1* This,UINT buffer_idx,REFIID riid,void **surface) {
1341     return This->lpVtbl->GetBuffer(This,buffer_idx,riid,surface);
1342 }
1343 static FORCEINLINE HRESULT IDXGISwapChain1_SetFullscreenState(IDXGISwapChain1* This,WINBOOL fullscreen,IDXGIOutput *target) {
1344     return This->lpVtbl->SetFullscreenState(This,fullscreen,target);
1345 }
1346 static FORCEINLINE HRESULT IDXGISwapChain1_GetFullscreenState(IDXGISwapChain1* This,WINBOOL *fullscreen,IDXGIOutput **target) {
1347     return This->lpVtbl->GetFullscreenState(This,fullscreen,target);
1348 }
1349 static FORCEINLINE HRESULT IDXGISwapChain1_GetDesc(IDXGISwapChain1* This,DXGI_SWAP_CHAIN_DESC *desc) {
1350     return This->lpVtbl->GetDesc(This,desc);
1351 }
1352 static FORCEINLINE HRESULT IDXGISwapChain1_ResizeBuffers(IDXGISwapChain1* This,UINT buffer_count,UINT width,UINT height,DXGI_FORMAT format,UINT flags) {
1353     return This->lpVtbl->ResizeBuffers(This,buffer_count,width,height,format,flags);
1354 }
1355 static FORCEINLINE HRESULT IDXGISwapChain1_ResizeTarget(IDXGISwapChain1* This,const DXGI_MODE_DESC *target_mode_desc) {
1356     return This->lpVtbl->ResizeTarget(This,target_mode_desc);
1357 }
1358 static FORCEINLINE HRESULT IDXGISwapChain1_GetContainingOutput(IDXGISwapChain1* This,IDXGIOutput **output) {
1359     return This->lpVtbl->GetContainingOutput(This,output);
1360 }
1361 static FORCEINLINE HRESULT IDXGISwapChain1_GetFrameStatistics(IDXGISwapChain1* This,DXGI_FRAME_STATISTICS *stats) {
1362     return This->lpVtbl->GetFrameStatistics(This,stats);
1363 }
1364 static FORCEINLINE HRESULT IDXGISwapChain1_GetLastPresentCount(IDXGISwapChain1* This,UINT *last_present_count) {
1365     return This->lpVtbl->GetLastPresentCount(This,last_present_count);
1366 }
1367 /*** IDXGISwapChain1 methods ***/
1368 static FORCEINLINE HRESULT IDXGISwapChain1_GetDesc1(IDXGISwapChain1* This,DXGI_SWAP_CHAIN_DESC1 *pDesc) {
1369     return This->lpVtbl->GetDesc1(This,pDesc);
1370 }
1371 static FORCEINLINE HRESULT IDXGISwapChain1_GetFullscreenDesc(IDXGISwapChain1* This,DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc) {
1372     return This->lpVtbl->GetFullscreenDesc(This,pDesc);
1373 }
1374 static FORCEINLINE HRESULT IDXGISwapChain1_GetHwnd(IDXGISwapChain1* This,HWND *pHwnd) {
1375     return This->lpVtbl->GetHwnd(This,pHwnd);
1376 }
1377 static FORCEINLINE HRESULT IDXGISwapChain1_GetCoreWindow(IDXGISwapChain1* This,REFIID refiid,void **ppUnk) {
1378     return This->lpVtbl->GetCoreWindow(This,refiid,ppUnk);
1379 }
1380 static FORCEINLINE HRESULT IDXGISwapChain1_Present1(IDXGISwapChain1* This,UINT SyncInterval,UINT PresentFlags,const DXGI_PRESENT_PARAMETERS *pPresentParameters) {
1381     return This->lpVtbl->Present1(This,SyncInterval,PresentFlags,pPresentParameters);
1382 }
1383 static FORCEINLINE WINBOOL IDXGISwapChain1_IsTemporaryMonoSupported(IDXGISwapChain1* This) {
1384     return This->lpVtbl->IsTemporaryMonoSupported(This);
1385 }
1386 static FORCEINLINE HRESULT IDXGISwapChain1_GetRestrictToOutput(IDXGISwapChain1* This,IDXGIOutput **ppRestrictToOutput) {
1387     return This->lpVtbl->GetRestrictToOutput(This,ppRestrictToOutput);
1388 }
1389 static FORCEINLINE HRESULT IDXGISwapChain1_SetBackgroundColor(IDXGISwapChain1* This,const DXGI_RGBA *pColor) {
1390     return This->lpVtbl->SetBackgroundColor(This,pColor);
1391 }
1392 static FORCEINLINE HRESULT IDXGISwapChain1_GetBackgroundColor(IDXGISwapChain1* This,DXGI_RGBA *pColor) {
1393     return This->lpVtbl->GetBackgroundColor(This,pColor);
1394 }
1395 static FORCEINLINE HRESULT IDXGISwapChain1_SetRotation(IDXGISwapChain1* This,DXGI_MODE_ROTATION Rotation) {
1396     return This->lpVtbl->SetRotation(This,Rotation);
1397 }
1398 static FORCEINLINE HRESULT IDXGISwapChain1_GetRotation(IDXGISwapChain1* This,DXGI_MODE_ROTATION *pRotation) {
1399     return This->lpVtbl->GetRotation(This,pRotation);
1400 }
1401 #endif
1402 #endif
1403 
1404 #endif
1405 
1406 
1407 #endif  /* __IDXGISwapChain1_INTERFACE_DEFINED__ */
1408 
1409 /*****************************************************************************
1410  * IDXGIFactory2 interface
1411  */
1412 #ifndef __IDXGIFactory2_INTERFACE_DEFINED__
1413 #define __IDXGIFactory2_INTERFACE_DEFINED__
1414 
1415 DEFINE_GUID(IID_IDXGIFactory2, 0x50c83a1c, 0xe072, 0x4c48, 0x87,0xb0, 0x36,0x30,0xfa,0x36,0xa6,0xd0);
1416 #if defined(__cplusplus) && !defined(CINTERFACE)
1417 MIDL_INTERFACE("50c83a1c-e072-4c48-87b0-3630fa36a6d0")
1418 IDXGIFactory2 : public IDXGIFactory1
1419 {
1420     virtual WINBOOL STDMETHODCALLTYPE IsWindowedStereoEnabled(
1421         ) = 0;
1422 
1423     virtual HRESULT STDMETHODCALLTYPE CreateSwapChainForHwnd(
1424         IUnknown *pDevice,
1425         HWND hWnd,
1426         const DXGI_SWAP_CHAIN_DESC1 *pDesc,
1427         const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,
1428         IDXGIOutput *pRestrictToOutput,
1429         IDXGISwapChain1 **ppSwapChain) = 0;
1430 
1431     virtual HRESULT STDMETHODCALLTYPE CreateSwapChainForCoreWindow(
1432         IUnknown *pDevice,
1433         IUnknown *pWindow,
1434         const DXGI_SWAP_CHAIN_DESC1 *pDesc,
1435         IDXGIOutput *pRestrictToOutput,
1436         IDXGISwapChain1 **ppSwapChain) = 0;
1437 
1438     virtual HRESULT STDMETHODCALLTYPE GetSharedResourceAdapterLuid(
1439         HANDLE hResource,
1440         LUID *pLuid) = 0;
1441 
1442     virtual HRESULT STDMETHODCALLTYPE RegisterOcclusionStatusWindow(
1443         HWND WindowHandle,
1444         UINT wMsg,
1445         DWORD *pdwCookie) = 0;
1446 
1447     virtual HRESULT STDMETHODCALLTYPE RegisterStereoStatusEvent(
1448         HANDLE hEvent,
1449         DWORD *pdwCookie) = 0;
1450 
1451     virtual void STDMETHODCALLTYPE UnregisterStereoStatus(
1452         DWORD dwCookie) = 0;
1453 
1454     virtual HRESULT STDMETHODCALLTYPE RegisterStereoStatusWindow(
1455         HWND WindowHandle,
1456         UINT wMsg,
1457         DWORD *pdwCookie) = 0;
1458 
1459     virtual HRESULT STDMETHODCALLTYPE RegisterOcclusionStatusEvent(
1460         HANDLE hEvent,
1461         DWORD *pdwCookie) = 0;
1462 
1463     virtual void STDMETHODCALLTYPE UnregisterOcclusionStatus(
1464         DWORD dwCookie) = 0;
1465 
1466     virtual HRESULT STDMETHODCALLTYPE CreateSwapChainForComposition(
1467         IUnknown *pDevice,
1468         const DXGI_SWAP_CHAIN_DESC1 *pDesc,
1469         IDXGIOutput *pRestrictToOutput,
1470         IDXGISwapChain1 **ppSwapChain) = 0;
1471 
1472 };
1473 #ifdef __CRT_UUID_DECL
1474 __CRT_UUID_DECL(IDXGIFactory2, 0x50c83a1c, 0xe072, 0x4c48, 0x87,0xb0, 0x36,0x30,0xfa,0x36,0xa6,0xd0)
1475 #endif
1476 #else
1477 typedef struct IDXGIFactory2Vtbl {
1478     BEGIN_INTERFACE
1479 
1480     /*** IUnknown methods ***/
1481     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1482         IDXGIFactory2 *This,
1483         REFIID riid,
1484         void **ppvObject);
1485 
1486     ULONG (STDMETHODCALLTYPE *AddRef)(
1487         IDXGIFactory2 *This);
1488 
1489     ULONG (STDMETHODCALLTYPE *Release)(
1490         IDXGIFactory2 *This);
1491 
1492     /*** IDXGIObject methods ***/
1493     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
1494         IDXGIFactory2 *This,
1495         REFGUID guid,
1496         UINT data_size,
1497         const void *data);
1498 
1499     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
1500         IDXGIFactory2 *This,
1501         REFGUID guid,
1502         const IUnknown *object);
1503 
1504     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
1505         IDXGIFactory2 *This,
1506         REFGUID guid,
1507         UINT *data_size,
1508         void *data);
1509 
1510     HRESULT (STDMETHODCALLTYPE *GetParent)(
1511         IDXGIFactory2 *This,
1512         REFIID riid,
1513         void **parent);
1514 
1515     /*** IDXGIFactory methods ***/
1516     HRESULT (STDMETHODCALLTYPE *EnumAdapters)(
1517         IDXGIFactory2 *This,
1518         UINT adapter_idx,
1519         IDXGIAdapter **adapter);
1520 
1521     HRESULT (STDMETHODCALLTYPE *MakeWindowAssociation)(
1522         IDXGIFactory2 *This,
1523         HWND window,
1524         UINT flags);
1525 
1526     HRESULT (STDMETHODCALLTYPE *GetWindowAssociation)(
1527         IDXGIFactory2 *This,
1528         HWND *window);
1529 
1530     HRESULT (STDMETHODCALLTYPE *CreateSwapChain)(
1531         IDXGIFactory2 *This,
1532         IUnknown *device,
1533         DXGI_SWAP_CHAIN_DESC *desc,
1534         IDXGISwapChain **swapchain);
1535 
1536     HRESULT (STDMETHODCALLTYPE *CreateSoftwareAdapter)(
1537         IDXGIFactory2 *This,
1538         HMODULE swrast,
1539         IDXGIAdapter **adapter);
1540 
1541     /*** IDXGIFactory1 methods ***/
1542     HRESULT (STDMETHODCALLTYPE *EnumAdapters1)(
1543         IDXGIFactory2 *This,
1544         UINT Adapter,
1545         IDXGIAdapter1 **ppAdapter);
1546 
1547     WINBOOL (STDMETHODCALLTYPE *IsCurrent)(
1548         IDXGIFactory2 *This);
1549 
1550     /*** IDXGIFactory2 methods ***/
1551     WINBOOL (STDMETHODCALLTYPE *IsWindowedStereoEnabled)(
1552         IDXGIFactory2 *This);
1553 
1554     HRESULT (STDMETHODCALLTYPE *CreateSwapChainForHwnd)(
1555         IDXGIFactory2 *This,
1556         IUnknown *pDevice,
1557         HWND hWnd,
1558         const DXGI_SWAP_CHAIN_DESC1 *pDesc,
1559         const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,
1560         IDXGIOutput *pRestrictToOutput,
1561         IDXGISwapChain1 **ppSwapChain);
1562 
1563     HRESULT (STDMETHODCALLTYPE *CreateSwapChainForCoreWindow)(
1564         IDXGIFactory2 *This,
1565         IUnknown *pDevice,
1566         IUnknown *pWindow,
1567         const DXGI_SWAP_CHAIN_DESC1 *pDesc,
1568         IDXGIOutput *pRestrictToOutput,
1569         IDXGISwapChain1 **ppSwapChain);
1570 
1571     HRESULT (STDMETHODCALLTYPE *GetSharedResourceAdapterLuid)(
1572         IDXGIFactory2 *This,
1573         HANDLE hResource,
1574         LUID *pLuid);
1575 
1576     HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusWindow)(
1577         IDXGIFactory2 *This,
1578         HWND WindowHandle,
1579         UINT wMsg,
1580         DWORD *pdwCookie);
1581 
1582     HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusEvent)(
1583         IDXGIFactory2 *This,
1584         HANDLE hEvent,
1585         DWORD *pdwCookie);
1586 
1587     void (STDMETHODCALLTYPE *UnregisterStereoStatus)(
1588         IDXGIFactory2 *This,
1589         DWORD dwCookie);
1590 
1591     HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusWindow)(
1592         IDXGIFactory2 *This,
1593         HWND WindowHandle,
1594         UINT wMsg,
1595         DWORD *pdwCookie);
1596 
1597     HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusEvent)(
1598         IDXGIFactory2 *This,
1599         HANDLE hEvent,
1600         DWORD *pdwCookie);
1601 
1602     void (STDMETHODCALLTYPE *UnregisterOcclusionStatus)(
1603         IDXGIFactory2 *This,
1604         DWORD dwCookie);
1605 
1606     HRESULT (STDMETHODCALLTYPE *CreateSwapChainForComposition)(
1607         IDXGIFactory2 *This,
1608         IUnknown *pDevice,
1609         const DXGI_SWAP_CHAIN_DESC1 *pDesc,
1610         IDXGIOutput *pRestrictToOutput,
1611         IDXGISwapChain1 **ppSwapChain);
1612 
1613     END_INTERFACE
1614 } IDXGIFactory2Vtbl;
1615 
1616 interface IDXGIFactory2 {
1617     CONST_VTBL IDXGIFactory2Vtbl* lpVtbl;
1618 };
1619 
1620 #ifdef COBJMACROS
1621 #ifndef WIDL_C_INLINE_WRAPPERS
1622 /*** IUnknown methods ***/
1623 #define IDXGIFactory2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1624 #define IDXGIFactory2_AddRef(This) (This)->lpVtbl->AddRef(This)
1625 #define IDXGIFactory2_Release(This) (This)->lpVtbl->Release(This)
1626 /*** IDXGIObject methods ***/
1627 #define IDXGIFactory2_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
1628 #define IDXGIFactory2_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
1629 #define IDXGIFactory2_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
1630 #define IDXGIFactory2_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
1631 /*** IDXGIFactory methods ***/
1632 #define IDXGIFactory2_EnumAdapters(This,adapter_idx,adapter) (This)->lpVtbl->EnumAdapters(This,adapter_idx,adapter)
1633 #define IDXGIFactory2_MakeWindowAssociation(This,window,flags) (This)->lpVtbl->MakeWindowAssociation(This,window,flags)
1634 #define IDXGIFactory2_GetWindowAssociation(This,window) (This)->lpVtbl->GetWindowAssociation(This,window)
1635 #define IDXGIFactory2_CreateSwapChain(This,device,desc,swapchain) (This)->lpVtbl->CreateSwapChain(This,device,desc,swapchain)
1636 #define IDXGIFactory2_CreateSoftwareAdapter(This,swrast,adapter) (This)->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter)
1637 /*** IDXGIFactory1 methods ***/
1638 #define IDXGIFactory2_EnumAdapters1(This,Adapter,ppAdapter) (This)->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter)
1639 #define IDXGIFactory2_IsCurrent(This) (This)->lpVtbl->IsCurrent(This)
1640 /*** IDXGIFactory2 methods ***/
1641 #define IDXGIFactory2_IsWindowedStereoEnabled(This) (This)->lpVtbl->IsWindowedStereoEnabled(This)
1642 #define IDXGIFactory2_CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain)
1643 #define IDXGIFactory2_CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain)
1644 #define IDXGIFactory2_GetSharedResourceAdapterLuid(This,hResource,pLuid) (This)->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid)
1645 #define IDXGIFactory2_RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie)
1646 #define IDXGIFactory2_RegisterStereoStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie)
1647 #define IDXGIFactory2_UnregisterStereoStatus(This,dwCookie) (This)->lpVtbl->UnregisterStereoStatus(This,dwCookie)
1648 #define IDXGIFactory2_RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie)
1649 #define IDXGIFactory2_RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie)
1650 #define IDXGIFactory2_UnregisterOcclusionStatus(This,dwCookie) (This)->lpVtbl->UnregisterOcclusionStatus(This,dwCookie)
1651 #define IDXGIFactory2_CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain)
1652 #else
1653 /*** IUnknown methods ***/
1654 static FORCEINLINE HRESULT IDXGIFactory2_QueryInterface(IDXGIFactory2* This,REFIID riid,void **ppvObject) {
1655     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1656 }
1657 static FORCEINLINE ULONG IDXGIFactory2_AddRef(IDXGIFactory2* This) {
1658     return This->lpVtbl->AddRef(This);
1659 }
1660 static FORCEINLINE ULONG IDXGIFactory2_Release(IDXGIFactory2* This) {
1661     return This->lpVtbl->Release(This);
1662 }
1663 /*** IDXGIObject methods ***/
1664 static FORCEINLINE HRESULT IDXGIFactory2_SetPrivateData(IDXGIFactory2* This,REFGUID guid,UINT data_size,const void *data) {
1665     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
1666 }
1667 static FORCEINLINE HRESULT IDXGIFactory2_SetPrivateDataInterface(IDXGIFactory2* This,REFGUID guid,const IUnknown *object) {
1668     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
1669 }
1670 static FORCEINLINE HRESULT IDXGIFactory2_GetPrivateData(IDXGIFactory2* This,REFGUID guid,UINT *data_size,void *data) {
1671     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
1672 }
1673 static FORCEINLINE HRESULT IDXGIFactory2_GetParent(IDXGIFactory2* This,REFIID riid,void **parent) {
1674     return This->lpVtbl->GetParent(This,riid,parent);
1675 }
1676 /*** IDXGIFactory methods ***/
1677 static FORCEINLINE HRESULT IDXGIFactory2_EnumAdapters(IDXGIFactory2* This,UINT adapter_idx,IDXGIAdapter **adapter) {
1678     return This->lpVtbl->EnumAdapters(This,adapter_idx,adapter);
1679 }
1680 static FORCEINLINE HRESULT IDXGIFactory2_MakeWindowAssociation(IDXGIFactory2* This,HWND window,UINT flags) {
1681     return This->lpVtbl->MakeWindowAssociation(This,window,flags);
1682 }
1683 static FORCEINLINE HRESULT IDXGIFactory2_GetWindowAssociation(IDXGIFactory2* This,HWND *window) {
1684     return This->lpVtbl->GetWindowAssociation(This,window);
1685 }
1686 static FORCEINLINE HRESULT IDXGIFactory2_CreateSwapChain(IDXGIFactory2* This,IUnknown *device,DXGI_SWAP_CHAIN_DESC *desc,IDXGISwapChain **swapchain) {
1687     return This->lpVtbl->CreateSwapChain(This,device,desc,swapchain);
1688 }
1689 static FORCEINLINE HRESULT IDXGIFactory2_CreateSoftwareAdapter(IDXGIFactory2* This,HMODULE swrast,IDXGIAdapter **adapter) {
1690     return This->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter);
1691 }
1692 /*** IDXGIFactory1 methods ***/
1693 static FORCEINLINE HRESULT IDXGIFactory2_EnumAdapters1(IDXGIFactory2* This,UINT Adapter,IDXGIAdapter1 **ppAdapter) {
1694     return This->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter);
1695 }
1696 static FORCEINLINE WINBOOL IDXGIFactory2_IsCurrent(IDXGIFactory2* This) {
1697     return This->lpVtbl->IsCurrent(This);
1698 }
1699 /*** IDXGIFactory2 methods ***/
1700 static FORCEINLINE WINBOOL IDXGIFactory2_IsWindowedStereoEnabled(IDXGIFactory2* This) {
1701     return This->lpVtbl->IsWindowedStereoEnabled(This);
1702 }
1703 static FORCEINLINE HRESULT IDXGIFactory2_CreateSwapChainForHwnd(IDXGIFactory2* This,IUnknown *pDevice,HWND hWnd,const DXGI_SWAP_CHAIN_DESC1 *pDesc,const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
1704     return This->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain);
1705 }
1706 static FORCEINLINE HRESULT IDXGIFactory2_CreateSwapChainForCoreWindow(IDXGIFactory2* This,IUnknown *pDevice,IUnknown *pWindow,const DXGI_SWAP_CHAIN_DESC1 *pDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
1707     return This->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain);
1708 }
1709 static FORCEINLINE HRESULT IDXGIFactory2_GetSharedResourceAdapterLuid(IDXGIFactory2* This,HANDLE hResource,LUID *pLuid) {
1710     return This->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid);
1711 }
1712 static FORCEINLINE HRESULT IDXGIFactory2_RegisterOcclusionStatusWindow(IDXGIFactory2* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
1713     return This->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie);
1714 }
1715 static FORCEINLINE HRESULT IDXGIFactory2_RegisterStereoStatusEvent(IDXGIFactory2* This,HANDLE hEvent,DWORD *pdwCookie) {
1716     return This->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie);
1717 }
1718 static FORCEINLINE void IDXGIFactory2_UnregisterStereoStatus(IDXGIFactory2* This,DWORD dwCookie) {
1719     This->lpVtbl->UnregisterStereoStatus(This,dwCookie);
1720 }
1721 static FORCEINLINE HRESULT IDXGIFactory2_RegisterStereoStatusWindow(IDXGIFactory2* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
1722     return This->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie);
1723 }
1724 static FORCEINLINE HRESULT IDXGIFactory2_RegisterOcclusionStatusEvent(IDXGIFactory2* This,HANDLE hEvent,DWORD *pdwCookie) {
1725     return This->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie);
1726 }
1727 static FORCEINLINE void IDXGIFactory2_UnregisterOcclusionStatus(IDXGIFactory2* This,DWORD dwCookie) {
1728     This->lpVtbl->UnregisterOcclusionStatus(This,dwCookie);
1729 }
1730 static FORCEINLINE HRESULT IDXGIFactory2_CreateSwapChainForComposition(IDXGIFactory2* This,IUnknown *pDevice,const DXGI_SWAP_CHAIN_DESC1 *pDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
1731     return This->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain);
1732 }
1733 #endif
1734 #endif
1735 
1736 #endif
1737 
1738 
1739 #endif  /* __IDXGIFactory2_INTERFACE_DEFINED__ */
1740 
1741 typedef enum DXGI_GRAPHICS_PREEMPTION_GRANULARITY {
1742     DXGI_GRAPHICS_PREEMPTION_DMA_BUFFER_BOUNDARY = 0,
1743     DXGI_GRAPHICS_PREEMPTION_PRIMITIVE_BOUNDARY = 1,
1744     DXGI_GRAPHICS_PREEMPTION_TRIANGLE_BOUNDARY = 2,
1745     DXGI_GRAPHICS_PREEMPTION_PIXEL_BOUNDARY = 3,
1746     DXGI_GRAPHICS_PREEMPTION_INSTRUCTION_BOUNDARY = 4
1747 } DXGI_GRAPHICS_PREEMPTION_GRANULARITY;
1748 typedef enum DXGI_COMPUTE_PREEMPTION_GRANULARITY {
1749     DXGI_COMPUTE_PREEMPTION_DMA_BUFFER_BOUNDARY = 0,
1750     DXGI_COMPUTE_PREEMPTION_DISPATCH_BOUNDARY = 1,
1751     DXGI_COMPUTE_PREEMPTION_THREAD_GROUP_BOUNDARY = 2,
1752     DXGI_COMPUTE_PREEMPTION_THREAD_BOUNDARY = 3,
1753     DXGI_COMPUTE_PREEMPTION_INSTRUCTION_BOUNDARY = 4
1754 } DXGI_COMPUTE_PREEMPTION_GRANULARITY;
1755 typedef struct DXGI_ADAPTER_DESC2 {
1756     WCHAR Description[128];
1757     UINT VendorId;
1758     UINT DeviceId;
1759     UINT SubSysId;
1760     UINT Revision;
1761     SIZE_T DedicatedVideoMemory;
1762     SIZE_T DedicatedSystemMemory;
1763     SIZE_T SharedSystemMemory;
1764     LUID AdapterLuid;
1765     UINT Flags;
1766     DXGI_GRAPHICS_PREEMPTION_GRANULARITY GraphicsPreemptionGranularity;
1767     DXGI_COMPUTE_PREEMPTION_GRANULARITY ComputePreemptionGranularity;
1768 } DXGI_ADAPTER_DESC2;
1769 /*****************************************************************************
1770  * IDXGIAdapter2 interface
1771  */
1772 #ifndef __IDXGIAdapter2_INTERFACE_DEFINED__
1773 #define __IDXGIAdapter2_INTERFACE_DEFINED__
1774 
1775 DEFINE_GUID(IID_IDXGIAdapter2, 0x0aa1ae0a, 0xfa0e, 0x4b84, 0x86,0x44, 0xe0,0x5f,0xf8,0xe5,0xac,0xb5);
1776 #if defined(__cplusplus) && !defined(CINTERFACE)
1777 MIDL_INTERFACE("0aa1ae0a-fa0e-4b84-8644-e05ff8e5acb5")
1778 IDXGIAdapter2 : public IDXGIAdapter1
1779 {
1780     virtual HRESULT STDMETHODCALLTYPE GetDesc2(
1781         DXGI_ADAPTER_DESC2 *pDesc) = 0;
1782 
1783 };
1784 #ifdef __CRT_UUID_DECL
1785 __CRT_UUID_DECL(IDXGIAdapter2, 0x0aa1ae0a, 0xfa0e, 0x4b84, 0x86,0x44, 0xe0,0x5f,0xf8,0xe5,0xac,0xb5)
1786 #endif
1787 #else
1788 typedef struct IDXGIAdapter2Vtbl {
1789     BEGIN_INTERFACE
1790 
1791     /*** IUnknown methods ***/
1792     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1793         IDXGIAdapter2 *This,
1794         REFIID riid,
1795         void **ppvObject);
1796 
1797     ULONG (STDMETHODCALLTYPE *AddRef)(
1798         IDXGIAdapter2 *This);
1799 
1800     ULONG (STDMETHODCALLTYPE *Release)(
1801         IDXGIAdapter2 *This);
1802 
1803     /*** IDXGIObject methods ***/
1804     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
1805         IDXGIAdapter2 *This,
1806         REFGUID guid,
1807         UINT data_size,
1808         const void *data);
1809 
1810     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
1811         IDXGIAdapter2 *This,
1812         REFGUID guid,
1813         const IUnknown *object);
1814 
1815     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
1816         IDXGIAdapter2 *This,
1817         REFGUID guid,
1818         UINT *data_size,
1819         void *data);
1820 
1821     HRESULT (STDMETHODCALLTYPE *GetParent)(
1822         IDXGIAdapter2 *This,
1823         REFIID riid,
1824         void **parent);
1825 
1826     /*** IDXGIAdapter methods ***/
1827     HRESULT (STDMETHODCALLTYPE *EnumOutputs)(
1828         IDXGIAdapter2 *This,
1829         UINT output_idx,
1830         IDXGIOutput **output);
1831 
1832     HRESULT (STDMETHODCALLTYPE *GetDesc)(
1833         IDXGIAdapter2 *This,
1834         DXGI_ADAPTER_DESC *desc);
1835 
1836     HRESULT (STDMETHODCALLTYPE *CheckInterfaceSupport)(
1837         IDXGIAdapter2 *This,
1838         REFGUID guid,
1839         LARGE_INTEGER *umd_version);
1840 
1841     /*** IDXGIAdapter1 methods ***/
1842     HRESULT (STDMETHODCALLTYPE *GetDesc1)(
1843         IDXGIAdapter2 *This,
1844         DXGI_ADAPTER_DESC1 *pDesc);
1845 
1846     /*** IDXGIAdapter2 methods ***/
1847     HRESULT (STDMETHODCALLTYPE *GetDesc2)(
1848         IDXGIAdapter2 *This,
1849         DXGI_ADAPTER_DESC2 *pDesc);
1850 
1851     END_INTERFACE
1852 } IDXGIAdapter2Vtbl;
1853 
1854 interface IDXGIAdapter2 {
1855     CONST_VTBL IDXGIAdapter2Vtbl* lpVtbl;
1856 };
1857 
1858 #ifdef COBJMACROS
1859 #ifndef WIDL_C_INLINE_WRAPPERS
1860 /*** IUnknown methods ***/
1861 #define IDXGIAdapter2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1862 #define IDXGIAdapter2_AddRef(This) (This)->lpVtbl->AddRef(This)
1863 #define IDXGIAdapter2_Release(This) (This)->lpVtbl->Release(This)
1864 /*** IDXGIObject methods ***/
1865 #define IDXGIAdapter2_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
1866 #define IDXGIAdapter2_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
1867 #define IDXGIAdapter2_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
1868 #define IDXGIAdapter2_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
1869 /*** IDXGIAdapter methods ***/
1870 #define IDXGIAdapter2_EnumOutputs(This,output_idx,output) (This)->lpVtbl->EnumOutputs(This,output_idx,output)
1871 #define IDXGIAdapter2_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
1872 #define IDXGIAdapter2_CheckInterfaceSupport(This,guid,umd_version) (This)->lpVtbl->CheckInterfaceSupport(This,guid,umd_version)
1873 /*** IDXGIAdapter1 methods ***/
1874 #define IDXGIAdapter2_GetDesc1(This,pDesc) (This)->lpVtbl->GetDesc1(This,pDesc)
1875 /*** IDXGIAdapter2 methods ***/
1876 #define IDXGIAdapter2_GetDesc2(This,pDesc) (This)->lpVtbl->GetDesc2(This,pDesc)
1877 #else
1878 /*** IUnknown methods ***/
1879 static FORCEINLINE HRESULT IDXGIAdapter2_QueryInterface(IDXGIAdapter2* This,REFIID riid,void **ppvObject) {
1880     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1881 }
1882 static FORCEINLINE ULONG IDXGIAdapter2_AddRef(IDXGIAdapter2* This) {
1883     return This->lpVtbl->AddRef(This);
1884 }
1885 static FORCEINLINE ULONG IDXGIAdapter2_Release(IDXGIAdapter2* This) {
1886     return This->lpVtbl->Release(This);
1887 }
1888 /*** IDXGIObject methods ***/
1889 static FORCEINLINE HRESULT IDXGIAdapter2_SetPrivateData(IDXGIAdapter2* This,REFGUID guid,UINT data_size,const void *data) {
1890     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
1891 }
1892 static FORCEINLINE HRESULT IDXGIAdapter2_SetPrivateDataInterface(IDXGIAdapter2* This,REFGUID guid,const IUnknown *object) {
1893     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
1894 }
1895 static FORCEINLINE HRESULT IDXGIAdapter2_GetPrivateData(IDXGIAdapter2* This,REFGUID guid,UINT *data_size,void *data) {
1896     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
1897 }
1898 static FORCEINLINE HRESULT IDXGIAdapter2_GetParent(IDXGIAdapter2* This,REFIID riid,void **parent) {
1899     return This->lpVtbl->GetParent(This,riid,parent);
1900 }
1901 /*** IDXGIAdapter methods ***/
1902 static FORCEINLINE HRESULT IDXGIAdapter2_EnumOutputs(IDXGIAdapter2* This,UINT output_idx,IDXGIOutput **output) {
1903     return This->lpVtbl->EnumOutputs(This,output_idx,output);
1904 }
1905 static FORCEINLINE HRESULT IDXGIAdapter2_GetDesc(IDXGIAdapter2* This,DXGI_ADAPTER_DESC *desc) {
1906     return This->lpVtbl->GetDesc(This,desc);
1907 }
1908 static FORCEINLINE HRESULT IDXGIAdapter2_CheckInterfaceSupport(IDXGIAdapter2* This,REFGUID guid,LARGE_INTEGER *umd_version) {
1909     return This->lpVtbl->CheckInterfaceSupport(This,guid,umd_version);
1910 }
1911 /*** IDXGIAdapter1 methods ***/
1912 static FORCEINLINE HRESULT IDXGIAdapter2_GetDesc1(IDXGIAdapter2* This,DXGI_ADAPTER_DESC1 *pDesc) {
1913     return This->lpVtbl->GetDesc1(This,pDesc);
1914 }
1915 /*** IDXGIAdapter2 methods ***/
1916 static FORCEINLINE HRESULT IDXGIAdapter2_GetDesc2(IDXGIAdapter2* This,DXGI_ADAPTER_DESC2 *pDesc) {
1917     return This->lpVtbl->GetDesc2(This,pDesc);
1918 }
1919 #endif
1920 #endif
1921 
1922 #endif
1923 
1924 
1925 #endif  /* __IDXGIAdapter2_INTERFACE_DEFINED__ */
1926 
1927 /*****************************************************************************
1928  * IDXGIOutput1 interface
1929  */
1930 #ifndef __IDXGIOutput1_INTERFACE_DEFINED__
1931 #define __IDXGIOutput1_INTERFACE_DEFINED__
1932 
1933 DEFINE_GUID(IID_IDXGIOutput1, 0x00cddea8, 0x939b, 0x4b83, 0xa3,0x40, 0xa6,0x85,0x22,0x66,0x66,0xcc);
1934 #if defined(__cplusplus) && !defined(CINTERFACE)
1935 MIDL_INTERFACE("00cddea8-939b-4b83-a340-a685226666cc")
1936 IDXGIOutput1 : public IDXGIOutput
1937 {
1938     virtual HRESULT STDMETHODCALLTYPE GetDisplayModeList1(
1939         DXGI_FORMAT enum_format,
1940         UINT flags,
1941         UINT *num_modes,
1942         DXGI_MODE_DESC1 *desc) = 0;
1943 
1944     virtual HRESULT STDMETHODCALLTYPE FindClosestMatchingMode1(
1945         const DXGI_MODE_DESC1 *mode_to_match,
1946         DXGI_MODE_DESC1 *closest_match,
1947         IUnknown *concerned_device) = 0;
1948 
1949     virtual HRESULT STDMETHODCALLTYPE GetDisplaySurfaceData1(
1950         IDXGIResource *destination) = 0;
1951 
1952     virtual HRESULT STDMETHODCALLTYPE DuplicateOutput(
1953         IUnknown *device,
1954         IDXGIOutputDuplication **output_duplication) = 0;
1955 
1956 };
1957 #ifdef __CRT_UUID_DECL
1958 __CRT_UUID_DECL(IDXGIOutput1, 0x00cddea8, 0x939b, 0x4b83, 0xa3,0x40, 0xa6,0x85,0x22,0x66,0x66,0xcc)
1959 #endif
1960 #else
1961 typedef struct IDXGIOutput1Vtbl {
1962     BEGIN_INTERFACE
1963 
1964     /*** IUnknown methods ***/
1965     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1966         IDXGIOutput1 *This,
1967         REFIID riid,
1968         void **ppvObject);
1969 
1970     ULONG (STDMETHODCALLTYPE *AddRef)(
1971         IDXGIOutput1 *This);
1972 
1973     ULONG (STDMETHODCALLTYPE *Release)(
1974         IDXGIOutput1 *This);
1975 
1976     /*** IDXGIObject methods ***/
1977     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
1978         IDXGIOutput1 *This,
1979         REFGUID guid,
1980         UINT data_size,
1981         const void *data);
1982 
1983     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
1984         IDXGIOutput1 *This,
1985         REFGUID guid,
1986         const IUnknown *object);
1987 
1988     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
1989         IDXGIOutput1 *This,
1990         REFGUID guid,
1991         UINT *data_size,
1992         void *data);
1993 
1994     HRESULT (STDMETHODCALLTYPE *GetParent)(
1995         IDXGIOutput1 *This,
1996         REFIID riid,
1997         void **parent);
1998 
1999     /*** IDXGIOutput methods ***/
2000     HRESULT (STDMETHODCALLTYPE *GetDesc)(
2001         IDXGIOutput1 *This,
2002         DXGI_OUTPUT_DESC *desc);
2003 
2004     HRESULT (STDMETHODCALLTYPE *GetDisplayModeList)(
2005         IDXGIOutput1 *This,
2006         DXGI_FORMAT format,
2007         UINT flags,
2008         UINT *mode_count,
2009         DXGI_MODE_DESC *desc);
2010 
2011     HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode)(
2012         IDXGIOutput1 *This,
2013         const DXGI_MODE_DESC *mode,
2014         DXGI_MODE_DESC *closest_match,
2015         IUnknown *device);
2016 
2017     HRESULT (STDMETHODCALLTYPE *WaitForVBlank)(
2018         IDXGIOutput1 *This);
2019 
2020     HRESULT (STDMETHODCALLTYPE *TakeOwnership)(
2021         IDXGIOutput1 *This,
2022         IUnknown *device,
2023         WINBOOL exclusive);
2024 
2025     void (STDMETHODCALLTYPE *ReleaseOwnership)(
2026         IDXGIOutput1 *This);
2027 
2028     HRESULT (STDMETHODCALLTYPE *GetGammaControlCapabilities)(
2029         IDXGIOutput1 *This,
2030         DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps);
2031 
2032     HRESULT (STDMETHODCALLTYPE *SetGammaControl)(
2033         IDXGIOutput1 *This,
2034         const DXGI_GAMMA_CONTROL *gamma_control);
2035 
2036     HRESULT (STDMETHODCALLTYPE *GetGammaControl)(
2037         IDXGIOutput1 *This,
2038         DXGI_GAMMA_CONTROL *gamma_control);
2039 
2040     HRESULT (STDMETHODCALLTYPE *SetDisplaySurface)(
2041         IDXGIOutput1 *This,
2042         IDXGISurface *surface);
2043 
2044     HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData)(
2045         IDXGIOutput1 *This,
2046         IDXGISurface *surface);
2047 
2048     HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)(
2049         IDXGIOutput1 *This,
2050         DXGI_FRAME_STATISTICS *stats);
2051 
2052     /*** IDXGIOutput1 methods ***/
2053     HRESULT (STDMETHODCALLTYPE *GetDisplayModeList1)(
2054         IDXGIOutput1 *This,
2055         DXGI_FORMAT enum_format,
2056         UINT flags,
2057         UINT *num_modes,
2058         DXGI_MODE_DESC1 *desc);
2059 
2060     HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode1)(
2061         IDXGIOutput1 *This,
2062         const DXGI_MODE_DESC1 *mode_to_match,
2063         DXGI_MODE_DESC1 *closest_match,
2064         IUnknown *concerned_device);
2065 
2066     HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData1)(
2067         IDXGIOutput1 *This,
2068         IDXGIResource *destination);
2069 
2070     HRESULT (STDMETHODCALLTYPE *DuplicateOutput)(
2071         IDXGIOutput1 *This,
2072         IUnknown *device,
2073         IDXGIOutputDuplication **output_duplication);
2074 
2075     END_INTERFACE
2076 } IDXGIOutput1Vtbl;
2077 
2078 interface IDXGIOutput1 {
2079     CONST_VTBL IDXGIOutput1Vtbl* lpVtbl;
2080 };
2081 
2082 #ifdef COBJMACROS
2083 #ifndef WIDL_C_INLINE_WRAPPERS
2084 /*** IUnknown methods ***/
2085 #define IDXGIOutput1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
2086 #define IDXGIOutput1_AddRef(This) (This)->lpVtbl->AddRef(This)
2087 #define IDXGIOutput1_Release(This) (This)->lpVtbl->Release(This)
2088 /*** IDXGIObject methods ***/
2089 #define IDXGIOutput1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
2090 #define IDXGIOutput1_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
2091 #define IDXGIOutput1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
2092 #define IDXGIOutput1_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
2093 /*** IDXGIOutput methods ***/
2094 #define IDXGIOutput1_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
2095 #define IDXGIOutput1_GetDisplayModeList(This,format,flags,mode_count,desc) (This)->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc)
2096 #define IDXGIOutput1_FindClosestMatchingMode(This,mode,closest_match,device) (This)->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device)
2097 #define IDXGIOutput1_WaitForVBlank(This) (This)->lpVtbl->WaitForVBlank(This)
2098 #define IDXGIOutput1_TakeOwnership(This,device,exclusive) (This)->lpVtbl->TakeOwnership(This,device,exclusive)
2099 #define IDXGIOutput1_ReleaseOwnership(This) (This)->lpVtbl->ReleaseOwnership(This)
2100 #define IDXGIOutput1_GetGammaControlCapabilities(This,gamma_caps) (This)->lpVtbl->GetGammaControlCapabilities(This,gamma_caps)
2101 #define IDXGIOutput1_SetGammaControl(This,gamma_control) (This)->lpVtbl->SetGammaControl(This,gamma_control)
2102 #define IDXGIOutput1_GetGammaControl(This,gamma_control) (This)->lpVtbl->GetGammaControl(This,gamma_control)
2103 #define IDXGIOutput1_SetDisplaySurface(This,surface) (This)->lpVtbl->SetDisplaySurface(This,surface)
2104 #define IDXGIOutput1_GetDisplaySurfaceData(This,surface) (This)->lpVtbl->GetDisplaySurfaceData(This,surface)
2105 #define IDXGIOutput1_GetFrameStatistics(This,stats) (This)->lpVtbl->GetFrameStatistics(This,stats)
2106 /*** IDXGIOutput1 methods ***/
2107 #define IDXGIOutput1_GetDisplayModeList1(This,enum_format,flags,num_modes,desc) (This)->lpVtbl->GetDisplayModeList1(This,enum_format,flags,num_modes,desc)
2108 #define IDXGIOutput1_FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device) (This)->lpVtbl->FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device)
2109 #define IDXGIOutput1_GetDisplaySurfaceData1(This,destination) (This)->lpVtbl->GetDisplaySurfaceData1(This,destination)
2110 #define IDXGIOutput1_DuplicateOutput(This,device,output_duplication) (This)->lpVtbl->DuplicateOutput(This,device,output_duplication)
2111 #else
2112 /*** IUnknown methods ***/
2113 static FORCEINLINE HRESULT IDXGIOutput1_QueryInterface(IDXGIOutput1* This,REFIID riid,void **ppvObject) {
2114     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2115 }
2116 static FORCEINLINE ULONG IDXGIOutput1_AddRef(IDXGIOutput1* This) {
2117     return This->lpVtbl->AddRef(This);
2118 }
2119 static FORCEINLINE ULONG IDXGIOutput1_Release(IDXGIOutput1* This) {
2120     return This->lpVtbl->Release(This);
2121 }
2122 /*** IDXGIObject methods ***/
2123 static FORCEINLINE HRESULT IDXGIOutput1_SetPrivateData(IDXGIOutput1* This,REFGUID guid,UINT data_size,const void *data) {
2124     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
2125 }
2126 static FORCEINLINE HRESULT IDXGIOutput1_SetPrivateDataInterface(IDXGIOutput1* This,REFGUID guid,const IUnknown *object) {
2127     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
2128 }
2129 static FORCEINLINE HRESULT IDXGIOutput1_GetPrivateData(IDXGIOutput1* This,REFGUID guid,UINT *data_size,void *data) {
2130     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
2131 }
2132 static FORCEINLINE HRESULT IDXGIOutput1_GetParent(IDXGIOutput1* This,REFIID riid,void **parent) {
2133     return This->lpVtbl->GetParent(This,riid,parent);
2134 }
2135 /*** IDXGIOutput methods ***/
2136 static FORCEINLINE HRESULT IDXGIOutput1_GetDesc(IDXGIOutput1* This,DXGI_OUTPUT_DESC *desc) {
2137     return This->lpVtbl->GetDesc(This,desc);
2138 }
2139 static FORCEINLINE HRESULT IDXGIOutput1_GetDisplayModeList(IDXGIOutput1* This,DXGI_FORMAT format,UINT flags,UINT *mode_count,DXGI_MODE_DESC *desc) {
2140     return This->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc);
2141 }
2142 static FORCEINLINE HRESULT IDXGIOutput1_FindClosestMatchingMode(IDXGIOutput1* This,const DXGI_MODE_DESC *mode,DXGI_MODE_DESC *closest_match,IUnknown *device) {
2143     return This->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device);
2144 }
2145 static FORCEINLINE HRESULT IDXGIOutput1_WaitForVBlank(IDXGIOutput1* This) {
2146     return This->lpVtbl->WaitForVBlank(This);
2147 }
2148 static FORCEINLINE HRESULT IDXGIOutput1_TakeOwnership(IDXGIOutput1* This,IUnknown *device,WINBOOL exclusive) {
2149     return This->lpVtbl->TakeOwnership(This,device,exclusive);
2150 }
2151 static FORCEINLINE void IDXGIOutput1_ReleaseOwnership(IDXGIOutput1* This) {
2152     This->lpVtbl->ReleaseOwnership(This);
2153 }
2154 static FORCEINLINE HRESULT IDXGIOutput1_GetGammaControlCapabilities(IDXGIOutput1* This,DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps) {
2155     return This->lpVtbl->GetGammaControlCapabilities(This,gamma_caps);
2156 }
2157 static FORCEINLINE HRESULT IDXGIOutput1_SetGammaControl(IDXGIOutput1* This,const DXGI_GAMMA_CONTROL *gamma_control) {
2158     return This->lpVtbl->SetGammaControl(This,gamma_control);
2159 }
2160 static FORCEINLINE HRESULT IDXGIOutput1_GetGammaControl(IDXGIOutput1* This,DXGI_GAMMA_CONTROL *gamma_control) {
2161     return This->lpVtbl->GetGammaControl(This,gamma_control);
2162 }
2163 static FORCEINLINE HRESULT IDXGIOutput1_SetDisplaySurface(IDXGIOutput1* This,IDXGISurface *surface) {
2164     return This->lpVtbl->SetDisplaySurface(This,surface);
2165 }
2166 static FORCEINLINE HRESULT IDXGIOutput1_GetDisplaySurfaceData(IDXGIOutput1* This,IDXGISurface *surface) {
2167     return This->lpVtbl->GetDisplaySurfaceData(This,surface);
2168 }
2169 static FORCEINLINE HRESULT IDXGIOutput1_GetFrameStatistics(IDXGIOutput1* This,DXGI_FRAME_STATISTICS *stats) {
2170     return This->lpVtbl->GetFrameStatistics(This,stats);
2171 }
2172 /*** IDXGIOutput1 methods ***/
2173 static FORCEINLINE HRESULT IDXGIOutput1_GetDisplayModeList1(IDXGIOutput1* This,DXGI_FORMAT enum_format,UINT flags,UINT *num_modes,DXGI_MODE_DESC1 *desc) {
2174     return This->lpVtbl->GetDisplayModeList1(This,enum_format,flags,num_modes,desc);
2175 }
2176 static FORCEINLINE HRESULT IDXGIOutput1_FindClosestMatchingMode1(IDXGIOutput1* This,const DXGI_MODE_DESC1 *mode_to_match,DXGI_MODE_DESC1 *closest_match,IUnknown *concerned_device) {
2177     return This->lpVtbl->FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device);
2178 }
2179 static FORCEINLINE HRESULT IDXGIOutput1_GetDisplaySurfaceData1(IDXGIOutput1* This,IDXGIResource *destination) {
2180     return This->lpVtbl->GetDisplaySurfaceData1(This,destination);
2181 }
2182 static FORCEINLINE HRESULT IDXGIOutput1_DuplicateOutput(IDXGIOutput1* This,IUnknown *device,IDXGIOutputDuplication **output_duplication) {
2183     return This->lpVtbl->DuplicateOutput(This,device,output_duplication);
2184 }
2185 #endif
2186 #endif
2187 
2188 #endif
2189 
2190 
2191 #endif  /* __IDXGIOutput1_INTERFACE_DEFINED__ */
2192 
2193 /* Begin additional prototypes for all interfaces */
2194 
2195 
2196 /* End additional prototypes */
2197 
2198 #ifdef __cplusplus
2199 }
2200 #endif
2201 
2202 #endif /* __dxgi1_2_h__ */
2203