1 
2 /* this ALWAYS GENERATED file contains the definitions for the interfaces */
3 
4  /* File created by MIDL compiler version 8.00.0613 */
5 /* @@MIDL_FILE_HEADING(  ) */
6 
7 /* verify that the <rpcndr.h> version is high enough to compile this file*/
8 #ifndef __REQUIRED_RPCNDR_H_VERSION__
9 #define __REQUIRED_RPCNDR_H_VERSION__ 475
10 #endif
11 
12 /* verify that the <rpcsal.h> version is high enough to compile this file*/
13 #ifndef __REQUIRED_RPCSAL_H_VERSION__
14 #define __REQUIRED_RPCSAL_H_VERSION__ 100
15 #endif
16 
17 #include "rpc.h"
18 #include "rpcndr.h"
19 
20 #ifndef __RPCNDR_H_VERSION__
21 #error this stub requires an updated version of <rpcndr.h>
22 #endif /* __RPCNDR_H_VERSION__ */
23 
24 #ifndef COM_NO_WINDOWS_H
25 #include "windows.h"
26 #include "ole2.h"
27 #endif /*COM_NO_WINDOWS_H*/
28 
29 #ifndef __dxgi1_4_h__
30 #define __dxgi1_4_h__
31 
32 #if defined(_MSC_VER) && (_MSC_VER >= 1020)
33 #pragma once
34 #endif
35 
36 /* Forward Declarations */
37 
38 #ifndef __IDXGISwapChain3_FWD_DEFINED__
39 #define __IDXGISwapChain3_FWD_DEFINED__
40 typedef interface IDXGISwapChain3 IDXGISwapChain3;
41 
42 #endif 	/* __IDXGISwapChain3_FWD_DEFINED__ */
43 
44 #ifndef __IDXGIOutput4_FWD_DEFINED__
45 #define __IDXGIOutput4_FWD_DEFINED__
46 typedef interface IDXGIOutput4 IDXGIOutput4;
47 
48 #endif 	/* __IDXGIOutput4_FWD_DEFINED__ */
49 
50 #ifndef __IDXGIFactory4_FWD_DEFINED__
51 #define __IDXGIFactory4_FWD_DEFINED__
52 typedef interface IDXGIFactory4 IDXGIFactory4;
53 
54 #endif 	/* __IDXGIFactory4_FWD_DEFINED__ */
55 
56 #ifndef __IDXGIAdapter3_FWD_DEFINED__
57 #define __IDXGIAdapter3_FWD_DEFINED__
58 typedef interface IDXGIAdapter3 IDXGIAdapter3;
59 
60 #endif 	/* __IDXGIAdapter3_FWD_DEFINED__ */
61 
62 /* header files for imported files */
63 #include "dxgi1_3.h"
64 
65 #ifdef __cplusplus
66 extern "C"{
67 #endif
68 
69 /* interface __MIDL_itf_dxgi1_4_0000_0000 */
70 /* [local] */
71 
72 /*#include <winapifamily.h>*/
73 /*#pragma region App Family*/
74 /*#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)*/
75 typedef
76 enum DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG
77     {
78         DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG_PRESENT	= 0x1,
79         DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG_OVERLAY_PRESENT	= 0x2
80     } 	DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG;
81 
82 extern RPC_IF_HANDLE __MIDL_itf_dxgi1_4_0000_0000_v0_0_c_ifspec;
83 extern RPC_IF_HANDLE __MIDL_itf_dxgi1_4_0000_0000_v0_0_s_ifspec;
84 
85 #ifndef __IDXGISwapChain3_INTERFACE_DEFINED__
86 #define __IDXGISwapChain3_INTERFACE_DEFINED__
87 
88 /* interface IDXGISwapChain3 */
89 /* [unique][local][uuid][object] */
90 
91 EXTERN_C const IID IID_IDXGISwapChain3;
92 
93 #if defined(__cplusplus) && !defined(CINTERFACE)
94 
95     MIDL_INTERFACE("94d99bdb-f1f8-4ab0-b236-7da0170edab1")
96     IDXGISwapChain3 : public IDXGISwapChain2
97     {
98     public:
99         virtual UINT STDMETHODCALLTYPE GetCurrentBackBufferIndex( void) = 0;
100 
101         virtual HRESULT STDMETHODCALLTYPE CheckColorSpaceSupport(
102             /* [annotation][in] */
103             _In_  DXGI_COLOR_SPACE_TYPE ColorSpace,
104             /* [annotation][out] */
105             _Out_  UINT *pColorSpaceSupport) = 0;
106 
107         virtual HRESULT STDMETHODCALLTYPE SetColorSpace1(
108             /* [annotation][in] */
109             _In_  DXGI_COLOR_SPACE_TYPE ColorSpace) = 0;
110 
111         virtual HRESULT STDMETHODCALLTYPE ResizeBuffers1(
112             /* [annotation][in] */
113             _In_  UINT BufferCount,
114             /* [annotation][in] */
115             _In_  UINT Width,
116             /* [annotation][in] */
117             _In_  UINT Height,
118             /* [annotation][in] */
119             _In_  DXGI_FORMAT Format,
120             /* [annotation][in] */
121             _In_  UINT SwapChainFlags,
122             /* [annotation][in] */
123             _In_reads_(BufferCount)  const UINT *pCreationNodeMask,
124             /* [annotation][in] */
125             _In_reads_(BufferCount)  IUnknown *const *ppPresentQueue) = 0;
126 
127     };
128 
129 #else 	/* C style interface */
130 
131     typedef struct IDXGISwapChain3Vtbl
132     {
133         BEGIN_INTERFACE
134 
135         HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
136             IDXGISwapChain3 * This,
137             /* [in] */ REFIID riid,
138             /* [annotation][iid_is][out] */
139             _COM_Outptr_  void **ppvObject);
140 
141         ULONG ( STDMETHODCALLTYPE *AddRef )(
142             IDXGISwapChain3 * This);
143 
144         ULONG ( STDMETHODCALLTYPE *Release )(
145             IDXGISwapChain3 * This);
146 
147         HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
148             IDXGISwapChain3 * This,
149             /* [annotation][in] */
150             _In_  REFGUID Name,
151             /* [in] */ UINT DataSize,
152             /* [annotation][in] */
153             _In_reads_bytes_(DataSize)  const void *pData);
154 
155         HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
156             IDXGISwapChain3 * This,
157             /* [annotation][in] */
158             _In_  REFGUID Name,
159             /* [annotation][in] */
160             _In_opt_  const IUnknown *pUnknown);
161 
162         HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
163             IDXGISwapChain3 * This,
164             /* [annotation][in] */
165             _In_  REFGUID Name,
166             /* [annotation][out][in] */
167             _Inout_  UINT *pDataSize,
168             /* [annotation][out] */
169             _Out_writes_bytes_(*pDataSize)  void *pData);
170 
171         HRESULT ( STDMETHODCALLTYPE *GetParent )(
172             IDXGISwapChain3 * This,
173             /* [annotation][in] */
174             _In_  REFIID riid,
175             /* [annotation][retval][out] */
176             _COM_Outptr_  void **ppParent);
177 
178         HRESULT ( STDMETHODCALLTYPE *GetDevice )(
179             IDXGISwapChain3 * This,
180             /* [annotation][in] */
181             _In_  REFIID riid,
182             /* [annotation][retval][out] */
183             _COM_Outptr_  void **ppDevice);
184 
185         HRESULT ( STDMETHODCALLTYPE *Present )(
186             IDXGISwapChain3 * This,
187             /* [in] */ UINT SyncInterval,
188             /* [in] */ UINT Flags);
189 
190         HRESULT ( STDMETHODCALLTYPE *GetBuffer )(
191             IDXGISwapChain3 * This,
192             /* [in] */ UINT Buffer,
193             /* [annotation][in] */
194             _In_  REFIID riid,
195             /* [annotation][out][in] */
196             _COM_Outptr_  void **ppSurface);
197 
198         HRESULT ( STDMETHODCALLTYPE *SetFullscreenState )(
199             IDXGISwapChain3 * This,
200             /* [in] */ BOOL Fullscreen,
201             /* [annotation][in] */
202             _In_opt_  IDXGIOutput *pTarget);
203 
204         HRESULT ( STDMETHODCALLTYPE *GetFullscreenState )(
205             IDXGISwapChain3 * This,
206             /* [annotation][out] */
207             _Out_opt_  BOOL *pFullscreen,
208             /* [annotation][out] */
209             _COM_Outptr_opt_result_maybenull_  IDXGIOutput **ppTarget);
210 
211         HRESULT ( STDMETHODCALLTYPE *GetDesc )(
212             IDXGISwapChain3 * This,
213             /* [annotation][out] */
214             _Out_  DXGI_SWAP_CHAIN_DESC *pDesc);
215 
216         HRESULT ( STDMETHODCALLTYPE *ResizeBuffers )(
217             IDXGISwapChain3 * This,
218             /* [in] */ UINT BufferCount,
219             /* [in] */ UINT Width,
220             /* [in] */ UINT Height,
221             /* [in] */ DXGI_FORMAT NewFormat,
222             /* [in] */ UINT SwapChainFlags);
223 
224         HRESULT ( STDMETHODCALLTYPE *ResizeTarget )(
225             IDXGISwapChain3 * This,
226             /* [annotation][in] */
227             _In_  const DXGI_MODE_DESC *pNewTargetParameters);
228 
229         HRESULT ( STDMETHODCALLTYPE *GetContainingOutput )(
230             IDXGISwapChain3 * This,
231             /* [annotation][out] */
232             _COM_Outptr_  IDXGIOutput **ppOutput);
233 
234         HRESULT ( STDMETHODCALLTYPE *GetFrameStatistics )(
235             IDXGISwapChain3 * This,
236             /* [annotation][out] */
237             _Out_  DXGI_FRAME_STATISTICS *pStats);
238 
239         HRESULT ( STDMETHODCALLTYPE *GetLastPresentCount )(
240             IDXGISwapChain3 * This,
241             /* [annotation][out] */
242             _Out_  UINT *pLastPresentCount);
243 
244         HRESULT ( STDMETHODCALLTYPE *GetDesc1 )(
245             IDXGISwapChain3 * This,
246             /* [annotation][out] */
247             _Out_  DXGI_SWAP_CHAIN_DESC1 *pDesc);
248 
249         HRESULT ( STDMETHODCALLTYPE *GetFullscreenDesc )(
250             IDXGISwapChain3 * This,
251             /* [annotation][out] */
252             _Out_  DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc);
253 
254         HRESULT ( STDMETHODCALLTYPE *GetHwnd )(
255             IDXGISwapChain3 * This,
256             /* [annotation][out] */
257             _Out_  HWND *pHwnd);
258 
259         HRESULT ( STDMETHODCALLTYPE *GetCoreWindow )(
260             IDXGISwapChain3 * This,
261             /* [annotation][in] */
262             _In_  REFIID refiid,
263             /* [annotation][out] */
264             _COM_Outptr_  void **ppUnk);
265 
266         HRESULT ( STDMETHODCALLTYPE *Present1 )(
267             IDXGISwapChain3 * This,
268             /* [in] */ UINT SyncInterval,
269             /* [in] */ UINT PresentFlags,
270             /* [annotation][in] */
271             _In_  const DXGI_PRESENT_PARAMETERS *pPresentParameters);
272 
273         BOOL ( STDMETHODCALLTYPE *IsTemporaryMonoSupported )(
274             IDXGISwapChain3 * This);
275 
276         HRESULT ( STDMETHODCALLTYPE *GetRestrictToOutput )(
277             IDXGISwapChain3 * This,
278             /* [annotation][out] */
279             _Out_  IDXGIOutput **ppRestrictToOutput);
280 
281         HRESULT ( STDMETHODCALLTYPE *SetBackgroundColor )(
282             IDXGISwapChain3 * This,
283             /* [annotation][in] */
284             _In_  const DXGI_RGBA *pColor);
285 
286         HRESULT ( STDMETHODCALLTYPE *GetBackgroundColor )(
287             IDXGISwapChain3 * This,
288             /* [annotation][out] */
289             _Out_  DXGI_RGBA *pColor);
290 
291         HRESULT ( STDMETHODCALLTYPE *SetRotation )(
292             IDXGISwapChain3 * This,
293             /* [annotation][in] */
294             _In_  DXGI_MODE_ROTATION Rotation);
295 
296         HRESULT ( STDMETHODCALLTYPE *GetRotation )(
297             IDXGISwapChain3 * This,
298             /* [annotation][out] */
299             _Out_  DXGI_MODE_ROTATION *pRotation);
300 
301         HRESULT ( STDMETHODCALLTYPE *SetSourceSize )(
302             IDXGISwapChain3 * This,
303             UINT Width,
304             UINT Height);
305 
306         HRESULT ( STDMETHODCALLTYPE *GetSourceSize )(
307             IDXGISwapChain3 * This,
308             /* [annotation][out] */
309             _Out_  UINT *pWidth,
310             /* [annotation][out] */
311             _Out_  UINT *pHeight);
312 
313         HRESULT ( STDMETHODCALLTYPE *SetMaximumFrameLatency )(
314             IDXGISwapChain3 * This,
315             UINT MaxLatency);
316 
317         HRESULT ( STDMETHODCALLTYPE *GetMaximumFrameLatency )(
318             IDXGISwapChain3 * This,
319             /* [annotation][out] */
320             _Out_  UINT *pMaxLatency);
321 
322         HANDLE ( STDMETHODCALLTYPE *GetFrameLatencyWaitableObject )(
323             IDXGISwapChain3 * This);
324 
325         HRESULT ( STDMETHODCALLTYPE *SetMatrixTransform )(
326             IDXGISwapChain3 * This,
327             const DXGI_MATRIX_3X2_F *pMatrix);
328 
329         HRESULT ( STDMETHODCALLTYPE *GetMatrixTransform )(
330             IDXGISwapChain3 * This,
331             /* [annotation][out] */
332             _Out_  DXGI_MATRIX_3X2_F *pMatrix);
333 
334         UINT ( STDMETHODCALLTYPE *GetCurrentBackBufferIndex )(
335             IDXGISwapChain3 * This);
336 
337         HRESULT ( STDMETHODCALLTYPE *CheckColorSpaceSupport )(
338             IDXGISwapChain3 * This,
339             /* [annotation][in] */
340             _In_  DXGI_COLOR_SPACE_TYPE ColorSpace,
341             /* [annotation][out] */
342             _Out_  UINT *pColorSpaceSupport);
343 
344         HRESULT ( STDMETHODCALLTYPE *SetColorSpace1 )(
345             IDXGISwapChain3 * This,
346             /* [annotation][in] */
347             _In_  DXGI_COLOR_SPACE_TYPE ColorSpace);
348 
349         HRESULT ( STDMETHODCALLTYPE *ResizeBuffers1 )(
350             IDXGISwapChain3 * This,
351             /* [annotation][in] */
352             _In_  UINT BufferCount,
353             /* [annotation][in] */
354             _In_  UINT Width,
355             /* [annotation][in] */
356             _In_  UINT Height,
357             /* [annotation][in] */
358             _In_  DXGI_FORMAT Format,
359             /* [annotation][in] */
360             _In_  UINT SwapChainFlags,
361             /* [annotation][in] */
362             _In_reads_(BufferCount)  const UINT *pCreationNodeMask,
363             /* [annotation][in] */
364             _In_reads_(BufferCount)  IUnknown *const *ppPresentQueue);
365 
366         END_INTERFACE
367     } IDXGISwapChain3Vtbl;
368 
369     interface IDXGISwapChain3
370     {
371         CONST_VTBL struct IDXGISwapChain3Vtbl *lpVtbl;
372     };
373 
374 #ifdef COBJMACROS
375 
376 #define IDXGISwapChain3_QueryInterface(This,riid,ppvObject)	\
377     ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
378 
379 #define IDXGISwapChain3_AddRef(This)	\
380     ( (This)->lpVtbl -> AddRef(This) )
381 
382 #define IDXGISwapChain3_Release(This)	\
383     ( (This)->lpVtbl -> Release(This) )
384 
385 #define IDXGISwapChain3_SetPrivateData(This,Name,DataSize,pData)	\
386     ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
387 
388 #define IDXGISwapChain3_SetPrivateDataInterface(This,Name,pUnknown)	\
389     ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
390 
391 #define IDXGISwapChain3_GetPrivateData(This,Name,pDataSize,pData)	\
392     ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
393 
394 #define IDXGISwapChain3_GetParent(This,riid,ppParent)	\
395     ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
396 
397 #define IDXGISwapChain3_GetDevice(This,riid,ppDevice)	\
398     ( (This)->lpVtbl -> GetDevice(This,riid,ppDevice) )
399 
400 #define IDXGISwapChain3_Present(This,SyncInterval,Flags)	\
401     ( (This)->lpVtbl -> Present(This,SyncInterval,Flags) )
402 
403 #define IDXGISwapChain3_GetBuffer(This,Buffer,riid,ppSurface)	\
404     ( (This)->lpVtbl -> GetBuffer(This,Buffer,riid,ppSurface) )
405 
406 #define IDXGISwapChain3_SetFullscreenState(This,Fullscreen,pTarget)	\
407     ( (This)->lpVtbl -> SetFullscreenState(This,Fullscreen,pTarget) )
408 
409 #define IDXGISwapChain3_GetFullscreenState(This,pFullscreen,ppTarget)	\
410     ( (This)->lpVtbl -> GetFullscreenState(This,pFullscreen,ppTarget) )
411 
412 #define IDXGISwapChain3_GetDesc(This,pDesc)	\
413     ( (This)->lpVtbl -> GetDesc(This,pDesc) )
414 
415 #define IDXGISwapChain3_ResizeBuffers(This,BufferCount,Width,Height,NewFormat,SwapChainFlags)	\
416     ( (This)->lpVtbl -> ResizeBuffers(This,BufferCount,Width,Height,NewFormat,SwapChainFlags) )
417 
418 #define IDXGISwapChain3_ResizeTarget(This,pNewTargetParameters)	\
419     ( (This)->lpVtbl -> ResizeTarget(This,pNewTargetParameters) )
420 
421 #define IDXGISwapChain3_GetContainingOutput(This,ppOutput)	\
422     ( (This)->lpVtbl -> GetContainingOutput(This,ppOutput) )
423 
424 #define IDXGISwapChain3_GetFrameStatistics(This,pStats)	\
425     ( (This)->lpVtbl -> GetFrameStatistics(This,pStats) )
426 
427 #define IDXGISwapChain3_GetLastPresentCount(This,pLastPresentCount)	\
428     ( (This)->lpVtbl -> GetLastPresentCount(This,pLastPresentCount) )
429 
430 #define IDXGISwapChain3_GetDesc1(This,pDesc)	\
431     ( (This)->lpVtbl -> GetDesc1(This,pDesc) )
432 
433 #define IDXGISwapChain3_GetFullscreenDesc(This,pDesc)	\
434     ( (This)->lpVtbl -> GetFullscreenDesc(This,pDesc) )
435 
436 #define IDXGISwapChain3_GetHwnd(This,pHwnd)	\
437     ( (This)->lpVtbl -> GetHwnd(This,pHwnd) )
438 
439 #define IDXGISwapChain3_GetCoreWindow(This,refiid,ppUnk)	\
440     ( (This)->lpVtbl -> GetCoreWindow(This,refiid,ppUnk) )
441 
442 #define IDXGISwapChain3_Present1(This,SyncInterval,PresentFlags,pPresentParameters)	\
443     ( (This)->lpVtbl -> Present1(This,SyncInterval,PresentFlags,pPresentParameters) )
444 
445 #define IDXGISwapChain3_IsTemporaryMonoSupported(This)	\
446     ( (This)->lpVtbl -> IsTemporaryMonoSupported(This) )
447 
448 #define IDXGISwapChain3_GetRestrictToOutput(This,ppRestrictToOutput)	\
449     ( (This)->lpVtbl -> GetRestrictToOutput(This,ppRestrictToOutput) )
450 
451 #define IDXGISwapChain3_SetBackgroundColor(This,pColor)	\
452     ( (This)->lpVtbl -> SetBackgroundColor(This,pColor) )
453 
454 #define IDXGISwapChain3_GetBackgroundColor(This,pColor)	\
455     ( (This)->lpVtbl -> GetBackgroundColor(This,pColor) )
456 
457 #define IDXGISwapChain3_SetRotation(This,Rotation)	\
458     ( (This)->lpVtbl -> SetRotation(This,Rotation) )
459 
460 #define IDXGISwapChain3_GetRotation(This,pRotation)	\
461     ( (This)->lpVtbl -> GetRotation(This,pRotation) )
462 
463 #define IDXGISwapChain3_SetSourceSize(This,Width,Height)	\
464     ( (This)->lpVtbl -> SetSourceSize(This,Width,Height) )
465 
466 #define IDXGISwapChain3_GetSourceSize(This,pWidth,pHeight)	\
467     ( (This)->lpVtbl -> GetSourceSize(This,pWidth,pHeight) )
468 
469 #define IDXGISwapChain3_SetMaximumFrameLatency(This,MaxLatency)	\
470     ( (This)->lpVtbl -> SetMaximumFrameLatency(This,MaxLatency) )
471 
472 #define IDXGISwapChain3_GetMaximumFrameLatency(This,pMaxLatency)	\
473     ( (This)->lpVtbl -> GetMaximumFrameLatency(This,pMaxLatency) )
474 
475 #define IDXGISwapChain3_GetFrameLatencyWaitableObject(This)	\
476     ( (This)->lpVtbl -> GetFrameLatencyWaitableObject(This) )
477 
478 #define IDXGISwapChain3_SetMatrixTransform(This,pMatrix)	\
479     ( (This)->lpVtbl -> SetMatrixTransform(This,pMatrix) )
480 
481 #define IDXGISwapChain3_GetMatrixTransform(This,pMatrix)	\
482     ( (This)->lpVtbl -> GetMatrixTransform(This,pMatrix) )
483 
484 #define IDXGISwapChain3_GetCurrentBackBufferIndex(This)	\
485     ( (This)->lpVtbl -> GetCurrentBackBufferIndex(This) )
486 
487 #define IDXGISwapChain3_CheckColorSpaceSupport(This,ColorSpace,pColorSpaceSupport)	\
488     ( (This)->lpVtbl -> CheckColorSpaceSupport(This,ColorSpace,pColorSpaceSupport) )
489 
490 #define IDXGISwapChain3_SetColorSpace1(This,ColorSpace)	\
491     ( (This)->lpVtbl -> SetColorSpace1(This,ColorSpace) )
492 
493 #define IDXGISwapChain3_ResizeBuffers1(This,BufferCount,Width,Height,Format,SwapChainFlags,pCreationNodeMask,ppPresentQueue)	\
494     ( (This)->lpVtbl -> ResizeBuffers1(This,BufferCount,Width,Height,Format,SwapChainFlags,pCreationNodeMask,ppPresentQueue) )
495 
496 #endif /* COBJMACROS */
497 
498 #endif 	/* C style interface */
499 
500 #endif 	/* __IDXGISwapChain3_INTERFACE_DEFINED__ */
501 
502 /* interface __MIDL_itf_dxgi1_4_0000_0001 */
503 /* [local] */
504 
505 typedef
506 enum DXGI_OVERLAY_COLOR_SPACE_SUPPORT_FLAG
507     {
508         DXGI_OVERLAY_COLOR_SPACE_SUPPORT_FLAG_PRESENT	= 0x1
509     } 	DXGI_OVERLAY_COLOR_SPACE_SUPPORT_FLAG;
510 
511 extern RPC_IF_HANDLE __MIDL_itf_dxgi1_4_0000_0001_v0_0_c_ifspec;
512 extern RPC_IF_HANDLE __MIDL_itf_dxgi1_4_0000_0001_v0_0_s_ifspec;
513 
514 #ifndef __IDXGIOutput4_INTERFACE_DEFINED__
515 #define __IDXGIOutput4_INTERFACE_DEFINED__
516 
517 /* interface IDXGIOutput4 */
518 /* [unique][local][uuid][object] */
519 
520 EXTERN_C const IID IID_IDXGIOutput4;
521 
522 #if defined(__cplusplus) && !defined(CINTERFACE)
523 
524     MIDL_INTERFACE("dc7dca35-2196-414d-9F53-617884032a60")
525     IDXGIOutput4 : public IDXGIOutput3
526     {
527     public:
528         virtual HRESULT STDMETHODCALLTYPE CheckOverlayColorSpaceSupport(
529             /* [annotation][in] */
530             _In_  DXGI_FORMAT Format,
531             /* [annotation][in] */
532             _In_  DXGI_COLOR_SPACE_TYPE ColorSpace,
533             /* [annotation][in] */
534             _In_  IUnknown *pConcernedDevice,
535             /* [annotation][out] */
536             _Out_  UINT *pFlags) = 0;
537 
538     };
539 
540 #else 	/* C style interface */
541 
542     typedef struct IDXGIOutput4Vtbl
543     {
544         BEGIN_INTERFACE
545 
546         HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
547             IDXGIOutput4 * This,
548             /* [in] */ REFIID riid,
549             /* [annotation][iid_is][out] */
550             _COM_Outptr_  void **ppvObject);
551 
552         ULONG ( STDMETHODCALLTYPE *AddRef )(
553             IDXGIOutput4 * This);
554 
555         ULONG ( STDMETHODCALLTYPE *Release )(
556             IDXGIOutput4 * This);
557 
558         HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
559             IDXGIOutput4 * This,
560             /* [annotation][in] */
561             _In_  REFGUID Name,
562             /* [in] */ UINT DataSize,
563             /* [annotation][in] */
564             _In_reads_bytes_(DataSize)  const void *pData);
565 
566         HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
567             IDXGIOutput4 * This,
568             /* [annotation][in] */
569             _In_  REFGUID Name,
570             /* [annotation][in] */
571             _In_opt_  const IUnknown *pUnknown);
572 
573         HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
574             IDXGIOutput4 * This,
575             /* [annotation][in] */
576             _In_  REFGUID Name,
577             /* [annotation][out][in] */
578             _Inout_  UINT *pDataSize,
579             /* [annotation][out] */
580             _Out_writes_bytes_(*pDataSize)  void *pData);
581 
582         HRESULT ( STDMETHODCALLTYPE *GetParent )(
583             IDXGIOutput4 * This,
584             /* [annotation][in] */
585             _In_  REFIID riid,
586             /* [annotation][retval][out] */
587             _COM_Outptr_  void **ppParent);
588 
589         HRESULT ( STDMETHODCALLTYPE *GetDesc )(
590             IDXGIOutput4 * This,
591             /* [annotation][out] */
592             _Out_  DXGI_OUTPUT_DESC *pDesc);
593 
594         HRESULT ( STDMETHODCALLTYPE *GetDisplayModeList )(
595             IDXGIOutput4 * This,
596             /* [in] */ DXGI_FORMAT EnumFormat,
597             /* [in] */ UINT Flags,
598             /* [annotation][out][in] */
599             _Inout_  UINT *pNumModes,
600             /* [annotation][out] */
601             _Out_writes_to_opt_(*pNumModes,*pNumModes)  DXGI_MODE_DESC *pDesc);
602 
603         HRESULT ( STDMETHODCALLTYPE *FindClosestMatchingMode )(
604             IDXGIOutput4 * This,
605             /* [annotation][in] */
606             _In_  const DXGI_MODE_DESC *pModeToMatch,
607             /* [annotation][out] */
608             _Out_  DXGI_MODE_DESC *pClosestMatch,
609             /* [annotation][in] */
610             _In_opt_  IUnknown *pConcernedDevice);
611 
612         HRESULT ( STDMETHODCALLTYPE *WaitForVBlank )(
613             IDXGIOutput4 * This);
614 
615         HRESULT ( STDMETHODCALLTYPE *TakeOwnership )(
616             IDXGIOutput4 * This,
617             /* [annotation][in] */
618             _In_  IUnknown *pDevice,
619             BOOL Exclusive);
620 
621         void ( STDMETHODCALLTYPE *ReleaseOwnership )(
622             IDXGIOutput4 * This);
623 
624         HRESULT ( STDMETHODCALLTYPE *GetGammaControlCapabilities )(
625             IDXGIOutput4 * This,
626             /* [annotation][out] */
627             _Out_  DXGI_GAMMA_CONTROL_CAPABILITIES *pGammaCaps);
628 
629         HRESULT ( STDMETHODCALLTYPE *SetGammaControl )(
630             IDXGIOutput4 * This,
631             /* [annotation][in] */
632             _In_  const DXGI_GAMMA_CONTROL *pArray);
633 
634         HRESULT ( STDMETHODCALLTYPE *GetGammaControl )(
635             IDXGIOutput4 * This,
636             /* [annotation][out] */
637             _Out_  DXGI_GAMMA_CONTROL *pArray);
638 
639         HRESULT ( STDMETHODCALLTYPE *SetDisplaySurface )(
640             IDXGIOutput4 * This,
641             /* [annotation][in] */
642             _In_  IDXGISurface *pScanoutSurface);
643 
644         HRESULT ( STDMETHODCALLTYPE *GetDisplaySurfaceData )(
645             IDXGIOutput4 * This,
646             /* [annotation][in] */
647             _In_  IDXGISurface *pDestination);
648 
649         HRESULT ( STDMETHODCALLTYPE *GetFrameStatistics )(
650             IDXGIOutput4 * This,
651             /* [annotation][out] */
652             _Out_  DXGI_FRAME_STATISTICS *pStats);
653 
654         HRESULT ( STDMETHODCALLTYPE *GetDisplayModeList1 )(
655             IDXGIOutput4 * This,
656             /* [in] */ DXGI_FORMAT EnumFormat,
657             /* [in] */ UINT Flags,
658             /* [annotation][out][in] */
659             _Inout_  UINT *pNumModes,
660             /* [annotation][out] */
661             _Out_writes_to_opt_(*pNumModes,*pNumModes)  DXGI_MODE_DESC1 *pDesc);
662 
663         HRESULT ( STDMETHODCALLTYPE *FindClosestMatchingMode1 )(
664             IDXGIOutput4 * This,
665             /* [annotation][in] */
666             _In_  const DXGI_MODE_DESC1 *pModeToMatch,
667             /* [annotation][out] */
668             _Out_  DXGI_MODE_DESC1 *pClosestMatch,
669             /* [annotation][in] */
670             _In_opt_  IUnknown *pConcernedDevice);
671 
672         HRESULT ( STDMETHODCALLTYPE *GetDisplaySurfaceData1 )(
673             IDXGIOutput4 * This,
674             /* [annotation][in] */
675             _In_  IDXGIResource *pDestination);
676 
677         HRESULT ( STDMETHODCALLTYPE *DuplicateOutput )(
678             IDXGIOutput4 * This,
679             /* [annotation][in] */
680             _In_  IUnknown *pDevice,
681             /* [annotation][out] */
682             _COM_Outptr_  IDXGIOutputDuplication **ppOutputDuplication);
683 
684         BOOL ( STDMETHODCALLTYPE *SupportsOverlays )(
685             IDXGIOutput4 * This);
686 
687         HRESULT ( STDMETHODCALLTYPE *CheckOverlaySupport )(
688             IDXGIOutput4 * This,
689             /* [annotation][in] */
690             _In_  DXGI_FORMAT EnumFormat,
691             /* [annotation][out] */
692             _In_  IUnknown *pConcernedDevice,
693             /* [annotation][out] */
694             _Out_  UINT *pFlags);
695 
696         HRESULT ( STDMETHODCALLTYPE *CheckOverlayColorSpaceSupport )(
697             IDXGIOutput4 * This,
698             /* [annotation][in] */
699             _In_  DXGI_FORMAT Format,
700             /* [annotation][in] */
701             _In_  DXGI_COLOR_SPACE_TYPE ColorSpace,
702             /* [annotation][in] */
703             _In_  IUnknown *pConcernedDevice,
704             /* [annotation][out] */
705             _Out_  UINT *pFlags);
706 
707         END_INTERFACE
708     } IDXGIOutput4Vtbl;
709 
710     interface IDXGIOutput4
711     {
712         CONST_VTBL struct IDXGIOutput4Vtbl *lpVtbl;
713     };
714 
715 #ifdef COBJMACROS
716 
717 #define IDXGIOutput4_QueryInterface(This,riid,ppvObject)	\
718     ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
719 
720 #define IDXGIOutput4_AddRef(This)	\
721     ( (This)->lpVtbl -> AddRef(This) )
722 
723 #define IDXGIOutput4_Release(This)	\
724     ( (This)->lpVtbl -> Release(This) )
725 
726 #define IDXGIOutput4_SetPrivateData(This,Name,DataSize,pData)	\
727     ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
728 
729 #define IDXGIOutput4_SetPrivateDataInterface(This,Name,pUnknown)	\
730     ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
731 
732 #define IDXGIOutput4_GetPrivateData(This,Name,pDataSize,pData)	\
733     ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
734 
735 #define IDXGIOutput4_GetParent(This,riid,ppParent)	\
736     ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
737 
738 #define IDXGIOutput4_GetDesc(This,pDesc)	\
739     ( (This)->lpVtbl -> GetDesc(This,pDesc) )
740 
741 #define IDXGIOutput4_GetDisplayModeList(This,EnumFormat,Flags,pNumModes,pDesc)	\
742     ( (This)->lpVtbl -> GetDisplayModeList(This,EnumFormat,Flags,pNumModes,pDesc) )
743 
744 #define IDXGIOutput4_FindClosestMatchingMode(This,pModeToMatch,pClosestMatch,pConcernedDevice)	\
745     ( (This)->lpVtbl -> FindClosestMatchingMode(This,pModeToMatch,pClosestMatch,pConcernedDevice) )
746 
747 #define IDXGIOutput4_WaitForVBlank(This)	\
748     ( (This)->lpVtbl -> WaitForVBlank(This) )
749 
750 #define IDXGIOutput4_TakeOwnership(This,pDevice,Exclusive)	\
751     ( (This)->lpVtbl -> TakeOwnership(This,pDevice,Exclusive) )
752 
753 #define IDXGIOutput4_ReleaseOwnership(This)	\
754     ( (This)->lpVtbl -> ReleaseOwnership(This) )
755 
756 #define IDXGIOutput4_GetGammaControlCapabilities(This,pGammaCaps)	\
757     ( (This)->lpVtbl -> GetGammaControlCapabilities(This,pGammaCaps) )
758 
759 #define IDXGIOutput4_SetGammaControl(This,pArray)	\
760     ( (This)->lpVtbl -> SetGammaControl(This,pArray) )
761 
762 #define IDXGIOutput4_GetGammaControl(This,pArray)	\
763     ( (This)->lpVtbl -> GetGammaControl(This,pArray) )
764 
765 #define IDXGIOutput4_SetDisplaySurface(This,pScanoutSurface)	\
766     ( (This)->lpVtbl -> SetDisplaySurface(This,pScanoutSurface) )
767 
768 #define IDXGIOutput4_GetDisplaySurfaceData(This,pDestination)	\
769     ( (This)->lpVtbl -> GetDisplaySurfaceData(This,pDestination) )
770 
771 #define IDXGIOutput4_GetFrameStatistics(This,pStats)	\
772     ( (This)->lpVtbl -> GetFrameStatistics(This,pStats) )
773 
774 #define IDXGIOutput4_GetDisplayModeList1(This,EnumFormat,Flags,pNumModes,pDesc)	\
775     ( (This)->lpVtbl -> GetDisplayModeList1(This,EnumFormat,Flags,pNumModes,pDesc) )
776 
777 #define IDXGIOutput4_FindClosestMatchingMode1(This,pModeToMatch,pClosestMatch,pConcernedDevice)	\
778     ( (This)->lpVtbl -> FindClosestMatchingMode1(This,pModeToMatch,pClosestMatch,pConcernedDevice) )
779 
780 #define IDXGIOutput4_GetDisplaySurfaceData1(This,pDestination)	\
781     ( (This)->lpVtbl -> GetDisplaySurfaceData1(This,pDestination) )
782 
783 #define IDXGIOutput4_DuplicateOutput(This,pDevice,ppOutputDuplication)	\
784     ( (This)->lpVtbl -> DuplicateOutput(This,pDevice,ppOutputDuplication) )
785 
786 #define IDXGIOutput4_SupportsOverlays(This)	\
787     ( (This)->lpVtbl -> SupportsOverlays(This) )
788 
789 #define IDXGIOutput4_CheckOverlaySupport(This,EnumFormat,pConcernedDevice,pFlags)	\
790     ( (This)->lpVtbl -> CheckOverlaySupport(This,EnumFormat,pConcernedDevice,pFlags) )
791 
792 #define IDXGIOutput4_CheckOverlayColorSpaceSupport(This,Format,ColorSpace,pConcernedDevice,pFlags)	\
793     ( (This)->lpVtbl -> CheckOverlayColorSpaceSupport(This,Format,ColorSpace,pConcernedDevice,pFlags) )
794 
795 #endif /* COBJMACROS */
796 
797 #endif 	/* C style interface */
798 
799 #endif 	/* __IDXGIOutput4_INTERFACE_DEFINED__ */
800 
801 #ifndef __IDXGIFactory4_INTERFACE_DEFINED__
802 #define __IDXGIFactory4_INTERFACE_DEFINED__
803 
804 /* interface IDXGIFactory4 */
805 /* [unique][local][uuid][object] */
806 
807 EXTERN_C const IID IID_IDXGIFactory4;
808 
809 #if defined(__cplusplus) && !defined(CINTERFACE)
810 
811     MIDL_INTERFACE("1bc6ea02-ef36-464f-bf0c-21ca39e5168a")
812     IDXGIFactory4 : public IDXGIFactory3
813     {
814     public:
815         virtual HRESULT STDMETHODCALLTYPE EnumAdapterByLuid(
816             /* [annotation] */
817             _In_  LUID AdapterLuid,
818             /* [annotation] */
819             _In_  REFIID riid,
820             /* [annotation] */
821             _COM_Outptr_  void **ppvAdapter) = 0;
822 
823         virtual HRESULT STDMETHODCALLTYPE EnumWarpAdapter(
824             /* [annotation] */
825             _In_  REFIID riid,
826             /* [annotation] */
827             _COM_Outptr_  void **ppvAdapter) = 0;
828 
829     };
830 
831 #else 	/* C style interface */
832 
833     typedef struct IDXGIFactory4Vtbl
834     {
835         BEGIN_INTERFACE
836 
837         HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
838             IDXGIFactory4 * This,
839             /* [in] */ REFIID riid,
840             /* [annotation][iid_is][out] */
841             _COM_Outptr_  void **ppvObject);
842 
843         ULONG ( STDMETHODCALLTYPE *AddRef )(
844             IDXGIFactory4 * This);
845 
846         ULONG ( STDMETHODCALLTYPE *Release )(
847             IDXGIFactory4 * This);
848 
849         HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
850             IDXGIFactory4 * This,
851             /* [annotation][in] */
852             _In_  REFGUID Name,
853             /* [in] */ UINT DataSize,
854             /* [annotation][in] */
855             _In_reads_bytes_(DataSize)  const void *pData);
856 
857         HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
858             IDXGIFactory4 * This,
859             /* [annotation][in] */
860             _In_  REFGUID Name,
861             /* [annotation][in] */
862             _In_opt_  const IUnknown *pUnknown);
863 
864         HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
865             IDXGIFactory4 * This,
866             /* [annotation][in] */
867             _In_  REFGUID Name,
868             /* [annotation][out][in] */
869             _Inout_  UINT *pDataSize,
870             /* [annotation][out] */
871             _Out_writes_bytes_(*pDataSize)  void *pData);
872 
873         HRESULT ( STDMETHODCALLTYPE *GetParent )(
874             IDXGIFactory4 * This,
875             /* [annotation][in] */
876             _In_  REFIID riid,
877             /* [annotation][retval][out] */
878             _COM_Outptr_  void **ppParent);
879 
880         HRESULT ( STDMETHODCALLTYPE *EnumAdapters )(
881             IDXGIFactory4 * This,
882             /* [in] */ UINT Adapter,
883             /* [annotation][out] */
884             _COM_Outptr_  IDXGIAdapter **ppAdapter);
885 
886         HRESULT ( STDMETHODCALLTYPE *MakeWindowAssociation )(
887             IDXGIFactory4 * This,
888             HWND WindowHandle,
889             UINT Flags);
890 
891         HRESULT ( STDMETHODCALLTYPE *GetWindowAssociation )(
892             IDXGIFactory4 * This,
893             /* [annotation][out] */
894             _Out_  HWND *pWindowHandle);
895 
896         HRESULT ( STDMETHODCALLTYPE *CreateSwapChain )(
897             IDXGIFactory4 * This,
898             /* [annotation][in] */
899             _In_  IUnknown *pDevice,
900             /* [annotation][in] */
901             _In_  DXGI_SWAP_CHAIN_DESC *pDesc,
902             /* [annotation][out] */
903             _COM_Outptr_  IDXGISwapChain **ppSwapChain);
904 
905         HRESULT ( STDMETHODCALLTYPE *CreateSoftwareAdapter )(
906             IDXGIFactory4 * This,
907             /* [in] */ HMODULE Module,
908             /* [annotation][out] */
909             _COM_Outptr_  IDXGIAdapter **ppAdapter);
910 
911         HRESULT ( STDMETHODCALLTYPE *EnumAdapters1 )(
912             IDXGIFactory4 * This,
913             /* [in] */ UINT Adapter,
914             /* [annotation][out] */
915             _COM_Outptr_  IDXGIAdapter1 **ppAdapter);
916 
917         BOOL ( STDMETHODCALLTYPE *IsCurrent )(
918             IDXGIFactory4 * This);
919 
920         BOOL ( STDMETHODCALLTYPE *IsWindowedStereoEnabled )(
921             IDXGIFactory4 * This);
922 
923         HRESULT ( STDMETHODCALLTYPE *CreateSwapChainForHwnd )(
924             IDXGIFactory4 * This,
925             /* [annotation][in] */
926             _In_  IUnknown *pDevice,
927             /* [annotation][in] */
928             _In_  HWND hWnd,
929             /* [annotation][in] */
930             _In_  const DXGI_SWAP_CHAIN_DESC1 *pDesc,
931             /* [annotation][in] */
932             _In_opt_  const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,
933             /* [annotation][in] */
934             _In_opt_  IDXGIOutput *pRestrictToOutput,
935             /* [annotation][out] */
936             _COM_Outptr_  IDXGISwapChain1 **ppSwapChain);
937 
938         HRESULT ( STDMETHODCALLTYPE *CreateSwapChainForCoreWindow )(
939             IDXGIFactory4 * This,
940             /* [annotation][in] */
941             _In_  IUnknown *pDevice,
942             /* [annotation][in] */
943             _In_  IUnknown *pWindow,
944             /* [annotation][in] */
945             _In_  const DXGI_SWAP_CHAIN_DESC1 *pDesc,
946             /* [annotation][in] */
947             _In_opt_  IDXGIOutput *pRestrictToOutput,
948             /* [annotation][out] */
949             _COM_Outptr_  IDXGISwapChain1 **ppSwapChain);
950 
951         HRESULT ( STDMETHODCALLTYPE *GetSharedResourceAdapterLuid )(
952             IDXGIFactory4 * This,
953             /* [annotation] */
954             _In_  HANDLE hResource,
955             /* [annotation] */
956             _Out_  LUID *pLuid);
957 
958         HRESULT ( STDMETHODCALLTYPE *RegisterStereoStatusWindow )(
959             IDXGIFactory4 * This,
960             /* [annotation][in] */
961             _In_  HWND WindowHandle,
962             /* [annotation][in] */
963             _In_  UINT wMsg,
964             /* [annotation][out] */
965             _Out_  DWORD *pdwCookie);
966 
967         HRESULT ( STDMETHODCALLTYPE *RegisterStereoStatusEvent )(
968             IDXGIFactory4 * This,
969             /* [annotation][in] */
970             _In_  HANDLE hEvent,
971             /* [annotation][out] */
972             _Out_  DWORD *pdwCookie);
973 
974         void ( STDMETHODCALLTYPE *UnregisterStereoStatus )(
975             IDXGIFactory4 * This,
976             /* [annotation][in] */
977             _In_  DWORD dwCookie);
978 
979         HRESULT ( STDMETHODCALLTYPE *RegisterOcclusionStatusWindow )(
980             IDXGIFactory4 * This,
981             /* [annotation][in] */
982             _In_  HWND WindowHandle,
983             /* [annotation][in] */
984             _In_  UINT wMsg,
985             /* [annotation][out] */
986             _Out_  DWORD *pdwCookie);
987 
988         HRESULT ( STDMETHODCALLTYPE *RegisterOcclusionStatusEvent )(
989             IDXGIFactory4 * This,
990             /* [annotation][in] */
991             _In_  HANDLE hEvent,
992             /* [annotation][out] */
993             _Out_  DWORD *pdwCookie);
994 
995         void ( STDMETHODCALLTYPE *UnregisterOcclusionStatus )(
996             IDXGIFactory4 * This,
997             /* [annotation][in] */
998             _In_  DWORD dwCookie);
999 
1000         HRESULT ( STDMETHODCALLTYPE *CreateSwapChainForComposition )(
1001             IDXGIFactory4 * This,
1002             /* [annotation][in] */
1003             _In_  IUnknown *pDevice,
1004             /* [annotation][in] */
1005             _In_  const DXGI_SWAP_CHAIN_DESC1 *pDesc,
1006             /* [annotation][in] */
1007             _In_opt_  IDXGIOutput *pRestrictToOutput,
1008             /* [annotation][out] */
1009             _COM_Outptr_  IDXGISwapChain1 **ppSwapChain);
1010 
1011         UINT ( STDMETHODCALLTYPE *GetCreationFlags )(
1012             IDXGIFactory4 * This);
1013 
1014         HRESULT ( STDMETHODCALLTYPE *EnumAdapterByLuid )(
1015             IDXGIFactory4 * This,
1016             /* [annotation] */
1017             _In_  LUID AdapterLuid,
1018             /* [annotation] */
1019             _In_  REFIID riid,
1020             /* [annotation] */
1021             _COM_Outptr_  void **ppvAdapter);
1022 
1023         HRESULT ( STDMETHODCALLTYPE *EnumWarpAdapter )(
1024             IDXGIFactory4 * This,
1025             /* [annotation] */
1026             _In_  REFIID riid,
1027             /* [annotation] */
1028             _COM_Outptr_  void **ppvAdapter);
1029 
1030         END_INTERFACE
1031     } IDXGIFactory4Vtbl;
1032 
1033     interface IDXGIFactory4
1034     {
1035         CONST_VTBL struct IDXGIFactory4Vtbl *lpVtbl;
1036     };
1037 
1038 #ifdef COBJMACROS
1039 
1040 #define IDXGIFactory4_QueryInterface(This,riid,ppvObject)	\
1041     ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1042 
1043 #define IDXGIFactory4_AddRef(This)	\
1044     ( (This)->lpVtbl -> AddRef(This) )
1045 
1046 #define IDXGIFactory4_Release(This)	\
1047     ( (This)->lpVtbl -> Release(This) )
1048 
1049 #define IDXGIFactory4_SetPrivateData(This,Name,DataSize,pData)	\
1050     ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
1051 
1052 #define IDXGIFactory4_SetPrivateDataInterface(This,Name,pUnknown)	\
1053     ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
1054 
1055 #define IDXGIFactory4_GetPrivateData(This,Name,pDataSize,pData)	\
1056     ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
1057 
1058 #define IDXGIFactory4_GetParent(This,riid,ppParent)	\
1059     ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
1060 
1061 #define IDXGIFactory4_EnumAdapters(This,Adapter,ppAdapter)	\
1062     ( (This)->lpVtbl -> EnumAdapters(This,Adapter,ppAdapter) )
1063 
1064 #define IDXGIFactory4_MakeWindowAssociation(This,WindowHandle,Flags)	\
1065     ( (This)->lpVtbl -> MakeWindowAssociation(This,WindowHandle,Flags) )
1066 
1067 #define IDXGIFactory4_GetWindowAssociation(This,pWindowHandle)	\
1068     ( (This)->lpVtbl -> GetWindowAssociation(This,pWindowHandle) )
1069 
1070 #define IDXGIFactory4_CreateSwapChain(This,pDevice,pDesc,ppSwapChain)	\
1071     ( (This)->lpVtbl -> CreateSwapChain(This,pDevice,pDesc,ppSwapChain) )
1072 
1073 #define IDXGIFactory4_CreateSoftwareAdapter(This,Module,ppAdapter)	\
1074     ( (This)->lpVtbl -> CreateSoftwareAdapter(This,Module,ppAdapter) )
1075 
1076 #define IDXGIFactory4_EnumAdapters1(This,Adapter,ppAdapter)	\
1077     ( (This)->lpVtbl -> EnumAdapters1(This,Adapter,ppAdapter) )
1078 
1079 #define IDXGIFactory4_IsCurrent(This)	\
1080     ( (This)->lpVtbl -> IsCurrent(This) )
1081 
1082 #define IDXGIFactory4_IsWindowedStereoEnabled(This)	\
1083     ( (This)->lpVtbl -> IsWindowedStereoEnabled(This) )
1084 
1085 #define IDXGIFactory4_CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain)	\
1086     ( (This)->lpVtbl -> CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) )
1087 
1088 #define IDXGIFactory4_CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain)	\
1089     ( (This)->lpVtbl -> CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) )
1090 
1091 #define IDXGIFactory4_GetSharedResourceAdapterLuid(This,hResource,pLuid)	\
1092     ( (This)->lpVtbl -> GetSharedResourceAdapterLuid(This,hResource,pLuid) )
1093 
1094 #define IDXGIFactory4_RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie)	\
1095     ( (This)->lpVtbl -> RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) )
1096 
1097 #define IDXGIFactory4_RegisterStereoStatusEvent(This,hEvent,pdwCookie)	\
1098     ( (This)->lpVtbl -> RegisterStereoStatusEvent(This,hEvent,pdwCookie) )
1099 
1100 #define IDXGIFactory4_UnregisterStereoStatus(This,dwCookie)	\
1101     ( (This)->lpVtbl -> UnregisterStereoStatus(This,dwCookie) )
1102 
1103 #define IDXGIFactory4_RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie)	\
1104     ( (This)->lpVtbl -> RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) )
1105 
1106 #define IDXGIFactory4_RegisterOcclusionStatusEvent(This,hEvent,pdwCookie)	\
1107     ( (This)->lpVtbl -> RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) )
1108 
1109 #define IDXGIFactory4_UnregisterOcclusionStatus(This,dwCookie)	\
1110     ( (This)->lpVtbl -> UnregisterOcclusionStatus(This,dwCookie) )
1111 
1112 #define IDXGIFactory4_CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain)	\
1113     ( (This)->lpVtbl -> CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) )
1114 
1115 #define IDXGIFactory4_GetCreationFlags(This)	\
1116     ( (This)->lpVtbl -> GetCreationFlags(This) )
1117 
1118 #define IDXGIFactory4_EnumAdapterByLuid(This,AdapterLuid,riid,ppvAdapter)	\
1119     ( (This)->lpVtbl -> EnumAdapterByLuid(This,AdapterLuid,riid,ppvAdapter) )
1120 
1121 #define IDXGIFactory4_EnumWarpAdapter(This,riid,ppvAdapter)	\
1122     ( (This)->lpVtbl -> EnumWarpAdapter(This,riid,ppvAdapter) )
1123 
1124 #endif /* COBJMACROS */
1125 
1126 #endif 	/* C style interface */
1127 
1128 #endif 	/* __IDXGIFactory4_INTERFACE_DEFINED__ */
1129 
1130 /* interface __MIDL_itf_dxgi1_4_0000_0003 */
1131 /* [local] */
1132 
1133 typedef
1134 enum DXGI_MEMORY_SEGMENT_GROUP
1135     {
1136         DXGI_MEMORY_SEGMENT_GROUP_LOCAL	= 0,
1137         DXGI_MEMORY_SEGMENT_GROUP_NON_LOCAL	= 1
1138     } 	DXGI_MEMORY_SEGMENT_GROUP;
1139 
1140 typedef struct DXGI_QUERY_VIDEO_MEMORY_INFO
1141     {
1142     UINT64 Budget;
1143     UINT64 CurrentUsage;
1144     UINT64 AvailableForReservation;
1145     UINT64 CurrentReservation;
1146     } 	DXGI_QUERY_VIDEO_MEMORY_INFO;
1147 
1148 extern RPC_IF_HANDLE __MIDL_itf_dxgi1_4_0000_0003_v0_0_c_ifspec;
1149 extern RPC_IF_HANDLE __MIDL_itf_dxgi1_4_0000_0003_v0_0_s_ifspec;
1150 
1151 #ifndef __IDXGIAdapter3_INTERFACE_DEFINED__
1152 #define __IDXGIAdapter3_INTERFACE_DEFINED__
1153 
1154 /* interface IDXGIAdapter3 */
1155 /* [unique][local][uuid][object] */
1156 
1157 EXTERN_C const IID IID_IDXGIAdapter3;
1158 
1159 #if defined(__cplusplus) && !defined(CINTERFACE)
1160 
1161     MIDL_INTERFACE("645967A4-1392-4310-A798-8053CE3E93FD")
1162     IDXGIAdapter3 : public IDXGIAdapter2
1163     {
1164     public:
1165         virtual HRESULT STDMETHODCALLTYPE RegisterHardwareContentProtectionTeardownStatusEvent(
1166             /* [annotation][in] */
1167             _In_  HANDLE hEvent,
1168             /* [annotation][out] */
1169             _Out_  DWORD *pdwCookie) = 0;
1170 
1171         virtual void STDMETHODCALLTYPE UnregisterHardwareContentProtectionTeardownStatus(
1172             /* [annotation][in] */
1173             _In_  DWORD dwCookie) = 0;
1174 
1175         virtual HRESULT STDMETHODCALLTYPE QueryVideoMemoryInfo(
1176             /* [annotation][in] */
1177             _In_  UINT NodeIndex,
1178             /* [annotation][in] */
1179             _In_  DXGI_MEMORY_SEGMENT_GROUP MemorySegmentGroup,
1180             /* [annotation][out] */
1181             _Out_  DXGI_QUERY_VIDEO_MEMORY_INFO *pVideoMemoryInfo) = 0;
1182 
1183         virtual HRESULT STDMETHODCALLTYPE SetVideoMemoryReservation(
1184             /* [annotation][in] */
1185             _In_  UINT NodeIndex,
1186             /* [annotation][in] */
1187             _In_  DXGI_MEMORY_SEGMENT_GROUP MemorySegmentGroup,
1188             /* [annotation][in] */
1189             _In_  UINT64 Reservation) = 0;
1190 
1191         virtual HRESULT STDMETHODCALLTYPE RegisterVideoMemoryBudgetChangeNotificationEvent(
1192             /* [annotation][in] */
1193             _In_  HANDLE hEvent,
1194             /* [annotation][out] */
1195             _Out_  DWORD *pdwCookie) = 0;
1196 
1197         virtual void STDMETHODCALLTYPE UnregisterVideoMemoryBudgetChangeNotification(
1198             /* [annotation][in] */
1199             _In_  DWORD dwCookie) = 0;
1200 
1201     };
1202 
1203 #else 	/* C style interface */
1204 
1205     typedef struct IDXGIAdapter3Vtbl
1206     {
1207         BEGIN_INTERFACE
1208 
1209         HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1210             IDXGIAdapter3 * This,
1211             /* [in] */ REFIID riid,
1212             /* [annotation][iid_is][out] */
1213             _COM_Outptr_  void **ppvObject);
1214 
1215         ULONG ( STDMETHODCALLTYPE *AddRef )(
1216             IDXGIAdapter3 * This);
1217 
1218         ULONG ( STDMETHODCALLTYPE *Release )(
1219             IDXGIAdapter3 * This);
1220 
1221         HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1222             IDXGIAdapter3 * This,
1223             /* [annotation][in] */
1224             _In_  REFGUID Name,
1225             /* [in] */ UINT DataSize,
1226             /* [annotation][in] */
1227             _In_reads_bytes_(DataSize)  const void *pData);
1228 
1229         HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1230             IDXGIAdapter3 * This,
1231             /* [annotation][in] */
1232             _In_  REFGUID Name,
1233             /* [annotation][in] */
1234             _In_opt_  const IUnknown *pUnknown);
1235 
1236         HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1237             IDXGIAdapter3 * This,
1238             /* [annotation][in] */
1239             _In_  REFGUID Name,
1240             /* [annotation][out][in] */
1241             _Inout_  UINT *pDataSize,
1242             /* [annotation][out] */
1243             _Out_writes_bytes_(*pDataSize)  void *pData);
1244 
1245         HRESULT ( STDMETHODCALLTYPE *GetParent )(
1246             IDXGIAdapter3 * This,
1247             /* [annotation][in] */
1248             _In_  REFIID riid,
1249             /* [annotation][retval][out] */
1250             _COM_Outptr_  void **ppParent);
1251 
1252         HRESULT ( STDMETHODCALLTYPE *EnumOutputs )(
1253             IDXGIAdapter3 * This,
1254             /* [in] */ UINT Output,
1255             /* [annotation][out][in] */
1256             _COM_Outptr_  IDXGIOutput **ppOutput);
1257 
1258         HRESULT ( STDMETHODCALLTYPE *GetDesc )(
1259             IDXGIAdapter3 * This,
1260             /* [annotation][out] */
1261             _Out_  DXGI_ADAPTER_DESC *pDesc);
1262 
1263         HRESULT ( STDMETHODCALLTYPE *CheckInterfaceSupport )(
1264             IDXGIAdapter3 * This,
1265             /* [annotation][in] */
1266             _In_  REFGUID InterfaceName,
1267             /* [annotation][out] */
1268             _Out_  LARGE_INTEGER *pUMDVersion);
1269 
1270         HRESULT ( STDMETHODCALLTYPE *GetDesc1 )(
1271             IDXGIAdapter3 * This,
1272             /* [annotation][out] */
1273             _Out_  DXGI_ADAPTER_DESC1 *pDesc);
1274 
1275         HRESULT ( STDMETHODCALLTYPE *GetDesc2 )(
1276             IDXGIAdapter3 * This,
1277             /* [annotation][out] */
1278             _Out_  DXGI_ADAPTER_DESC2 *pDesc);
1279 
1280         HRESULT ( STDMETHODCALLTYPE *RegisterHardwareContentProtectionTeardownStatusEvent )(
1281             IDXGIAdapter3 * This,
1282             /* [annotation][in] */
1283             _In_  HANDLE hEvent,
1284             /* [annotation][out] */
1285             _Out_  DWORD *pdwCookie);
1286 
1287         void ( STDMETHODCALLTYPE *UnregisterHardwareContentProtectionTeardownStatus )(
1288             IDXGIAdapter3 * This,
1289             /* [annotation][in] */
1290             _In_  DWORD dwCookie);
1291 
1292         HRESULT ( STDMETHODCALLTYPE *QueryVideoMemoryInfo )(
1293             IDXGIAdapter3 * This,
1294             /* [annotation][in] */
1295             _In_  UINT NodeIndex,
1296             /* [annotation][in] */
1297             _In_  DXGI_MEMORY_SEGMENT_GROUP MemorySegmentGroup,
1298             /* [annotation][out] */
1299             _Out_  DXGI_QUERY_VIDEO_MEMORY_INFO *pVideoMemoryInfo);
1300 
1301         HRESULT ( STDMETHODCALLTYPE *SetVideoMemoryReservation )(
1302             IDXGIAdapter3 * This,
1303             /* [annotation][in] */
1304             _In_  UINT NodeIndex,
1305             /* [annotation][in] */
1306             _In_  DXGI_MEMORY_SEGMENT_GROUP MemorySegmentGroup,
1307             /* [annotation][in] */
1308             _In_  UINT64 Reservation);
1309 
1310         HRESULT ( STDMETHODCALLTYPE *RegisterVideoMemoryBudgetChangeNotificationEvent )(
1311             IDXGIAdapter3 * This,
1312             /* [annotation][in] */
1313             _In_  HANDLE hEvent,
1314             /* [annotation][out] */
1315             _Out_  DWORD *pdwCookie);
1316 
1317         void ( STDMETHODCALLTYPE *UnregisterVideoMemoryBudgetChangeNotification )(
1318             IDXGIAdapter3 * This,
1319             /* [annotation][in] */
1320             _In_  DWORD dwCookie);
1321 
1322         END_INTERFACE
1323     } IDXGIAdapter3Vtbl;
1324 
1325     interface IDXGIAdapter3
1326     {
1327         CONST_VTBL struct IDXGIAdapter3Vtbl *lpVtbl;
1328     };
1329 
1330 #ifdef COBJMACROS
1331 
1332 #define IDXGIAdapter3_QueryInterface(This,riid,ppvObject)	\
1333     ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1334 
1335 #define IDXGIAdapter3_AddRef(This)	\
1336     ( (This)->lpVtbl -> AddRef(This) )
1337 
1338 #define IDXGIAdapter3_Release(This)	\
1339     ( (This)->lpVtbl -> Release(This) )
1340 
1341 #define IDXGIAdapter3_SetPrivateData(This,Name,DataSize,pData)	\
1342     ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
1343 
1344 #define IDXGIAdapter3_SetPrivateDataInterface(This,Name,pUnknown)	\
1345     ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
1346 
1347 #define IDXGIAdapter3_GetPrivateData(This,Name,pDataSize,pData)	\
1348     ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
1349 
1350 #define IDXGIAdapter3_GetParent(This,riid,ppParent)	\
1351     ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
1352 
1353 #define IDXGIAdapter3_EnumOutputs(This,Output,ppOutput)	\
1354     ( (This)->lpVtbl -> EnumOutputs(This,Output,ppOutput) )
1355 
1356 #define IDXGIAdapter3_GetDesc(This,pDesc)	\
1357     ( (This)->lpVtbl -> GetDesc(This,pDesc) )
1358 
1359 #define IDXGIAdapter3_CheckInterfaceSupport(This,InterfaceName,pUMDVersion)	\
1360     ( (This)->lpVtbl -> CheckInterfaceSupport(This,InterfaceName,pUMDVersion) )
1361 
1362 #define IDXGIAdapter3_GetDesc1(This,pDesc)	\
1363     ( (This)->lpVtbl -> GetDesc1(This,pDesc) )
1364 
1365 #define IDXGIAdapter3_GetDesc2(This,pDesc)	\
1366     ( (This)->lpVtbl -> GetDesc2(This,pDesc) )
1367 
1368 #define IDXGIAdapter3_RegisterHardwareContentProtectionTeardownStatusEvent(This,hEvent,pdwCookie)	\
1369     ( (This)->lpVtbl -> RegisterHardwareContentProtectionTeardownStatusEvent(This,hEvent,pdwCookie) )
1370 
1371 #define IDXGIAdapter3_UnregisterHardwareContentProtectionTeardownStatus(This,dwCookie)	\
1372     ( (This)->lpVtbl -> UnregisterHardwareContentProtectionTeardownStatus(This,dwCookie) )
1373 
1374 #define IDXGIAdapter3_QueryVideoMemoryInfo(This,NodeIndex,MemorySegmentGroup,pVideoMemoryInfo)	\
1375     ( (This)->lpVtbl -> QueryVideoMemoryInfo(This,NodeIndex,MemorySegmentGroup,pVideoMemoryInfo) )
1376 
1377 #define IDXGIAdapter3_SetVideoMemoryReservation(This,NodeIndex,MemorySegmentGroup,Reservation)	\
1378     ( (This)->lpVtbl -> SetVideoMemoryReservation(This,NodeIndex,MemorySegmentGroup,Reservation) )
1379 
1380 #define IDXGIAdapter3_RegisterVideoMemoryBudgetChangeNotificationEvent(This,hEvent,pdwCookie)	\
1381     ( (This)->lpVtbl -> RegisterVideoMemoryBudgetChangeNotificationEvent(This,hEvent,pdwCookie) )
1382 
1383 #define IDXGIAdapter3_UnregisterVideoMemoryBudgetChangeNotification(This,dwCookie)	\
1384     ( (This)->lpVtbl -> UnregisterVideoMemoryBudgetChangeNotification(This,dwCookie) )
1385 
1386 #endif /* COBJMACROS */
1387 
1388 #endif 	/* C style interface */
1389 
1390 #endif 	/* __IDXGIAdapter3_INTERFACE_DEFINED__ */
1391 
1392 /* interface __MIDL_itf_dxgi1_4_0000_0004 */
1393 /* [local] */
1394 
1395 /*#endif*/ /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
1396 /*#pragma endregion*/
1397 DEFINE_GUID(IID_IDXGISwapChain3,0x94d99bdb,0xf1f8,0x4ab0,0xb2,0x36,0x7d,0xa0,0x17,0x0e,0xda,0xb1);
1398 DEFINE_GUID(IID_IDXGIOutput4,0xdc7dca35,0x2196,0x414d,0x9F,0x53,0x61,0x78,0x84,0x03,0x2a,0x60);
1399 DEFINE_GUID(IID_IDXGIFactory4,0x1bc6ea02,0xef36,0x464f,0xbf,0x0c,0x21,0xca,0x39,0xe5,0x16,0x8a);
1400 DEFINE_GUID(IID_IDXGIAdapter3,0x645967A4,0x1392,0x4310,0xA7,0x98,0x80,0x53,0xCE,0x3E,0x93,0xFD);
1401 
1402 extern RPC_IF_HANDLE __MIDL_itf_dxgi1_4_0000_0004_v0_0_c_ifspec;
1403 extern RPC_IF_HANDLE __MIDL_itf_dxgi1_4_0000_0004_v0_0_s_ifspec;
1404 
1405 /* Additional Prototypes for ALL interfaces */
1406 
1407 /* end of Additional Prototypes */
1408 
1409 #ifdef __cplusplus
1410 }
1411 #endif
1412 
1413 #endif
1414