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