dxgi1_2.h 81 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475
  1. /* this ALWAYS GENERATED file contains the definitions for the interfaces */
  2. /* File created by MIDL compiler version 8.01.0622 */
  3. /* @@MIDL_FILE_HEADING( ) */
  4. /* verify that the <rpcndr.h> version is high enough to compile this file*/
  5. #ifndef __REQUIRED_RPCNDR_H_VERSION__
  6. #define __REQUIRED_RPCNDR_H_VERSION__ 500
  7. #endif
  8. /* verify that the <rpcsal.h> version is high enough to compile this file*/
  9. #ifndef __REQUIRED_RPCSAL_H_VERSION__
  10. #define __REQUIRED_RPCSAL_H_VERSION__ 100
  11. #endif
  12. #include "rpc.h"
  13. #include "rpcndr.h"
  14. #ifndef __RPCNDR_H_VERSION__
  15. #error this stub requires an updated version of <rpcndr.h>
  16. #endif /* __RPCNDR_H_VERSION__ */
  17. #ifndef COM_NO_WINDOWS_H
  18. #include "windows.h"
  19. #include "ole2.h"
  20. #endif /*COM_NO_WINDOWS_H*/
  21. #ifndef __dxgi1_2_h__
  22. #define __dxgi1_2_h__
  23. #if defined(_MSC_VER) && (_MSC_VER >= 1020)
  24. #pragma once
  25. #endif
  26. /* Forward Declarations */
  27. #ifndef __IDXGIDisplayControl_FWD_DEFINED__
  28. #define __IDXGIDisplayControl_FWD_DEFINED__
  29. typedef interface IDXGIDisplayControl IDXGIDisplayControl;
  30. #endif /* __IDXGIDisplayControl_FWD_DEFINED__ */
  31. #ifndef __IDXGIOutputDuplication_FWD_DEFINED__
  32. #define __IDXGIOutputDuplication_FWD_DEFINED__
  33. typedef interface IDXGIOutputDuplication IDXGIOutputDuplication;
  34. #endif /* __IDXGIOutputDuplication_FWD_DEFINED__ */
  35. #ifndef __IDXGISurface2_FWD_DEFINED__
  36. #define __IDXGISurface2_FWD_DEFINED__
  37. typedef interface IDXGISurface2 IDXGISurface2;
  38. #endif /* __IDXGISurface2_FWD_DEFINED__ */
  39. #ifndef __IDXGIResource1_FWD_DEFINED__
  40. #define __IDXGIResource1_FWD_DEFINED__
  41. typedef interface IDXGIResource1 IDXGIResource1;
  42. #endif /* __IDXGIResource1_FWD_DEFINED__ */
  43. #ifndef __IDXGIDevice2_FWD_DEFINED__
  44. #define __IDXGIDevice2_FWD_DEFINED__
  45. typedef interface IDXGIDevice2 IDXGIDevice2;
  46. #endif /* __IDXGIDevice2_FWD_DEFINED__ */
  47. #ifndef __IDXGISwapChain1_FWD_DEFINED__
  48. #define __IDXGISwapChain1_FWD_DEFINED__
  49. typedef interface IDXGISwapChain1 IDXGISwapChain1;
  50. #endif /* __IDXGISwapChain1_FWD_DEFINED__ */
  51. #ifndef __IDXGIFactory2_FWD_DEFINED__
  52. #define __IDXGIFactory2_FWD_DEFINED__
  53. typedef interface IDXGIFactory2 IDXGIFactory2;
  54. #endif /* __IDXGIFactory2_FWD_DEFINED__ */
  55. #ifndef __IDXGIAdapter2_FWD_DEFINED__
  56. #define __IDXGIAdapter2_FWD_DEFINED__
  57. typedef interface IDXGIAdapter2 IDXGIAdapter2;
  58. #endif /* __IDXGIAdapter2_FWD_DEFINED__ */
  59. #ifndef __IDXGIOutput1_FWD_DEFINED__
  60. #define __IDXGIOutput1_FWD_DEFINED__
  61. typedef interface IDXGIOutput1 IDXGIOutput1;
  62. #endif /* __IDXGIOutput1_FWD_DEFINED__ */
  63. /* header files for imported files */
  64. #include "dxgi.h"
  65. #ifdef __cplusplus
  66. extern "C"{
  67. #endif
  68. /* interface __MIDL_itf_dxgi1_2_0000_0000 */
  69. /* [local] */
  70. #include <winapifamily.h>
  71. // BK - pragma region Desktop Family
  72. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
  73. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_2_0000_0000_v0_0_c_ifspec;
  74. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_2_0000_0000_v0_0_s_ifspec;
  75. #ifndef __IDXGIDisplayControl_INTERFACE_DEFINED__
  76. #define __IDXGIDisplayControl_INTERFACE_DEFINED__
  77. /* interface IDXGIDisplayControl */
  78. /* [unique][local][uuid][object] */
  79. EXTERN_C const IID IID_IDXGIDisplayControl;
  80. #if defined(__cplusplus) && !defined(CINTERFACE)
  81. MIDL_INTERFACE("ea9dbf1a-c88e-4486-854a-98aa0138f30c")
  82. IDXGIDisplayControl : public IUnknown
  83. {
  84. public:
  85. virtual BOOL STDMETHODCALLTYPE IsStereoEnabled( void) = 0;
  86. virtual void STDMETHODCALLTYPE SetStereoEnabled(
  87. BOOL enabled) = 0;
  88. };
  89. #else /* C style interface */
  90. typedef struct IDXGIDisplayControlVtbl
  91. {
  92. BEGIN_INTERFACE
  93. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  94. IDXGIDisplayControl * This,
  95. /* [in] */ REFIID riid,
  96. /* [annotation][iid_is][out] */
  97. _COM_Outptr_ void **ppvObject);
  98. ULONG ( STDMETHODCALLTYPE *AddRef )(
  99. IDXGIDisplayControl * This);
  100. ULONG ( STDMETHODCALLTYPE *Release )(
  101. IDXGIDisplayControl * This);
  102. BOOL ( STDMETHODCALLTYPE *IsStereoEnabled )(
  103. IDXGIDisplayControl * This);
  104. void ( STDMETHODCALLTYPE *SetStereoEnabled )(
  105. IDXGIDisplayControl * This,
  106. BOOL enabled);
  107. END_INTERFACE
  108. } IDXGIDisplayControlVtbl;
  109. interface IDXGIDisplayControl
  110. {
  111. CONST_VTBL struct IDXGIDisplayControlVtbl *lpVtbl;
  112. };
  113. #ifdef COBJMACROS
  114. #define IDXGIDisplayControl_QueryInterface(This,riid,ppvObject) \
  115. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  116. #define IDXGIDisplayControl_AddRef(This) \
  117. ( (This)->lpVtbl -> AddRef(This) )
  118. #define IDXGIDisplayControl_Release(This) \
  119. ( (This)->lpVtbl -> Release(This) )
  120. #define IDXGIDisplayControl_IsStereoEnabled(This) \
  121. ( (This)->lpVtbl -> IsStereoEnabled(This) )
  122. #define IDXGIDisplayControl_SetStereoEnabled(This,enabled) \
  123. ( (This)->lpVtbl -> SetStereoEnabled(This,enabled) )
  124. #endif /* COBJMACROS */
  125. #endif /* C style interface */
  126. #endif /* __IDXGIDisplayControl_INTERFACE_DEFINED__ */
  127. /* interface __MIDL_itf_dxgi1_2_0000_0001 */
  128. /* [local] */
  129. typedef struct DXGI_OUTDUPL_MOVE_RECT
  130. {
  131. POINT SourcePoint;
  132. RECT DestinationRect;
  133. } DXGI_OUTDUPL_MOVE_RECT;
  134. typedef struct DXGI_OUTDUPL_DESC
  135. {
  136. DXGI_MODE_DESC ModeDesc;
  137. DXGI_MODE_ROTATION Rotation;
  138. BOOL DesktopImageInSystemMemory;
  139. } DXGI_OUTDUPL_DESC;
  140. typedef struct DXGI_OUTDUPL_POINTER_POSITION
  141. {
  142. POINT Position;
  143. BOOL Visible;
  144. } DXGI_OUTDUPL_POINTER_POSITION;
  145. typedef
  146. enum DXGI_OUTDUPL_POINTER_SHAPE_TYPE
  147. {
  148. DXGI_OUTDUPL_POINTER_SHAPE_TYPE_MONOCHROME = 0x1,
  149. DXGI_OUTDUPL_POINTER_SHAPE_TYPE_COLOR = 0x2,
  150. DXGI_OUTDUPL_POINTER_SHAPE_TYPE_MASKED_COLOR = 0x4
  151. } DXGI_OUTDUPL_POINTER_SHAPE_TYPE;
  152. typedef struct DXGI_OUTDUPL_POINTER_SHAPE_INFO
  153. {
  154. UINT Type;
  155. UINT Width;
  156. UINT Height;
  157. UINT Pitch;
  158. POINT HotSpot;
  159. } DXGI_OUTDUPL_POINTER_SHAPE_INFO;
  160. typedef struct DXGI_OUTDUPL_FRAME_INFO
  161. {
  162. LARGE_INTEGER LastPresentTime;
  163. LARGE_INTEGER LastMouseUpdateTime;
  164. UINT AccumulatedFrames;
  165. BOOL RectsCoalesced;
  166. BOOL ProtectedContentMaskedOut;
  167. DXGI_OUTDUPL_POINTER_POSITION PointerPosition;
  168. UINT TotalMetadataBufferSize;
  169. UINT PointerShapeBufferSize;
  170. } DXGI_OUTDUPL_FRAME_INFO;
  171. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_2_0000_0001_v0_0_c_ifspec;
  172. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_2_0000_0001_v0_0_s_ifspec;
  173. #ifndef __IDXGIOutputDuplication_INTERFACE_DEFINED__
  174. #define __IDXGIOutputDuplication_INTERFACE_DEFINED__
  175. /* interface IDXGIOutputDuplication */
  176. /* [unique][local][uuid][object] */
  177. EXTERN_C const IID IID_IDXGIOutputDuplication;
  178. #if defined(__cplusplus) && !defined(CINTERFACE)
  179. MIDL_INTERFACE("191cfac3-a341-470d-b26e-a864f428319c")
  180. IDXGIOutputDuplication : public IDXGIObject
  181. {
  182. public:
  183. virtual void STDMETHODCALLTYPE GetDesc(
  184. /* [annotation][out] */
  185. _Out_ DXGI_OUTDUPL_DESC *pDesc) = 0;
  186. virtual HRESULT STDMETHODCALLTYPE AcquireNextFrame(
  187. /* [annotation][in] */
  188. _In_ UINT TimeoutInMilliseconds,
  189. /* [annotation][out] */
  190. _Out_ DXGI_OUTDUPL_FRAME_INFO *pFrameInfo,
  191. /* [annotation][out] */
  192. _COM_Outptr_ IDXGIResource **ppDesktopResource) = 0;
  193. virtual HRESULT STDMETHODCALLTYPE GetFrameDirtyRects(
  194. /* [annotation][in] */
  195. _In_ UINT DirtyRectsBufferSize,
  196. /* [annotation][out] */
  197. _Out_writes_bytes_to_(DirtyRectsBufferSize, *pDirtyRectsBufferSizeRequired) RECT *pDirtyRectsBuffer,
  198. /* [annotation][out] */
  199. _Out_ UINT *pDirtyRectsBufferSizeRequired) = 0;
  200. virtual HRESULT STDMETHODCALLTYPE GetFrameMoveRects(
  201. /* [annotation][in] */
  202. _In_ UINT MoveRectsBufferSize,
  203. /* [annotation][out] */
  204. _Out_writes_bytes_to_(MoveRectsBufferSize, *pMoveRectsBufferSizeRequired) DXGI_OUTDUPL_MOVE_RECT *pMoveRectBuffer,
  205. /* [annotation][out] */
  206. _Out_ UINT *pMoveRectsBufferSizeRequired) = 0;
  207. virtual HRESULT STDMETHODCALLTYPE GetFramePointerShape(
  208. /* [annotation][in] */
  209. _In_ UINT PointerShapeBufferSize,
  210. /* [annotation][out] */
  211. _Out_writes_bytes_to_(PointerShapeBufferSize, *pPointerShapeBufferSizeRequired) void *pPointerShapeBuffer,
  212. /* [annotation][out] */
  213. _Out_ UINT *pPointerShapeBufferSizeRequired,
  214. /* [annotation][out] */
  215. _Out_ DXGI_OUTDUPL_POINTER_SHAPE_INFO *pPointerShapeInfo) = 0;
  216. virtual HRESULT STDMETHODCALLTYPE MapDesktopSurface(
  217. /* [annotation][out] */
  218. _Out_ DXGI_MAPPED_RECT *pLockedRect) = 0;
  219. virtual HRESULT STDMETHODCALLTYPE UnMapDesktopSurface( void) = 0;
  220. virtual HRESULT STDMETHODCALLTYPE ReleaseFrame( void) = 0;
  221. };
  222. #else /* C style interface */
  223. typedef struct IDXGIOutputDuplicationVtbl
  224. {
  225. BEGIN_INTERFACE
  226. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  227. IDXGIOutputDuplication * This,
  228. /* [in] */ REFIID riid,
  229. /* [annotation][iid_is][out] */
  230. _COM_Outptr_ void **ppvObject);
  231. ULONG ( STDMETHODCALLTYPE *AddRef )(
  232. IDXGIOutputDuplication * This);
  233. ULONG ( STDMETHODCALLTYPE *Release )(
  234. IDXGIOutputDuplication * This);
  235. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  236. IDXGIOutputDuplication * This,
  237. /* [annotation][in] */
  238. _In_ REFGUID Name,
  239. /* [in] */ UINT DataSize,
  240. /* [annotation][in] */
  241. _In_reads_bytes_(DataSize) const void *pData);
  242. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  243. IDXGIOutputDuplication * This,
  244. /* [annotation][in] */
  245. _In_ REFGUID Name,
  246. /* [annotation][in] */
  247. _In_opt_ const IUnknown *pUnknown);
  248. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  249. IDXGIOutputDuplication * This,
  250. /* [annotation][in] */
  251. _In_ REFGUID Name,
  252. /* [annotation][out][in] */
  253. _Inout_ UINT *pDataSize,
  254. /* [annotation][out] */
  255. _Out_writes_bytes_(*pDataSize) void *pData);
  256. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  257. IDXGIOutputDuplication * This,
  258. /* [annotation][in] */
  259. _In_ REFIID riid,
  260. /* [annotation][retval][out] */
  261. _COM_Outptr_ void **ppParent);
  262. void ( STDMETHODCALLTYPE *GetDesc )(
  263. IDXGIOutputDuplication * This,
  264. /* [annotation][out] */
  265. _Out_ DXGI_OUTDUPL_DESC *pDesc);
  266. HRESULT ( STDMETHODCALLTYPE *AcquireNextFrame )(
  267. IDXGIOutputDuplication * This,
  268. /* [annotation][in] */
  269. _In_ UINT TimeoutInMilliseconds,
  270. /* [annotation][out] */
  271. _Out_ DXGI_OUTDUPL_FRAME_INFO *pFrameInfo,
  272. /* [annotation][out] */
  273. _COM_Outptr_ IDXGIResource **ppDesktopResource);
  274. HRESULT ( STDMETHODCALLTYPE *GetFrameDirtyRects )(
  275. IDXGIOutputDuplication * This,
  276. /* [annotation][in] */
  277. _In_ UINT DirtyRectsBufferSize,
  278. /* [annotation][out] */
  279. _Out_writes_bytes_to_(DirtyRectsBufferSize, *pDirtyRectsBufferSizeRequired) RECT *pDirtyRectsBuffer,
  280. /* [annotation][out] */
  281. _Out_ UINT *pDirtyRectsBufferSizeRequired);
  282. HRESULT ( STDMETHODCALLTYPE *GetFrameMoveRects )(
  283. IDXGIOutputDuplication * This,
  284. /* [annotation][in] */
  285. _In_ UINT MoveRectsBufferSize,
  286. /* [annotation][out] */
  287. _Out_writes_bytes_to_(MoveRectsBufferSize, *pMoveRectsBufferSizeRequired) DXGI_OUTDUPL_MOVE_RECT *pMoveRectBuffer,
  288. /* [annotation][out] */
  289. _Out_ UINT *pMoveRectsBufferSizeRequired);
  290. HRESULT ( STDMETHODCALLTYPE *GetFramePointerShape )(
  291. IDXGIOutputDuplication * This,
  292. /* [annotation][in] */
  293. _In_ UINT PointerShapeBufferSize,
  294. /* [annotation][out] */
  295. _Out_writes_bytes_to_(PointerShapeBufferSize, *pPointerShapeBufferSizeRequired) void *pPointerShapeBuffer,
  296. /* [annotation][out] */
  297. _Out_ UINT *pPointerShapeBufferSizeRequired,
  298. /* [annotation][out] */
  299. _Out_ DXGI_OUTDUPL_POINTER_SHAPE_INFO *pPointerShapeInfo);
  300. HRESULT ( STDMETHODCALLTYPE *MapDesktopSurface )(
  301. IDXGIOutputDuplication * This,
  302. /* [annotation][out] */
  303. _Out_ DXGI_MAPPED_RECT *pLockedRect);
  304. HRESULT ( STDMETHODCALLTYPE *UnMapDesktopSurface )(
  305. IDXGIOutputDuplication * This);
  306. HRESULT ( STDMETHODCALLTYPE *ReleaseFrame )(
  307. IDXGIOutputDuplication * This);
  308. END_INTERFACE
  309. } IDXGIOutputDuplicationVtbl;
  310. interface IDXGIOutputDuplication
  311. {
  312. CONST_VTBL struct IDXGIOutputDuplicationVtbl *lpVtbl;
  313. };
  314. #ifdef COBJMACROS
  315. #define IDXGIOutputDuplication_QueryInterface(This,riid,ppvObject) \
  316. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  317. #define IDXGIOutputDuplication_AddRef(This) \
  318. ( (This)->lpVtbl -> AddRef(This) )
  319. #define IDXGIOutputDuplication_Release(This) \
  320. ( (This)->lpVtbl -> Release(This) )
  321. #define IDXGIOutputDuplication_SetPrivateData(This,Name,DataSize,pData) \
  322. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  323. #define IDXGIOutputDuplication_SetPrivateDataInterface(This,Name,pUnknown) \
  324. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  325. #define IDXGIOutputDuplication_GetPrivateData(This,Name,pDataSize,pData) \
  326. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  327. #define IDXGIOutputDuplication_GetParent(This,riid,ppParent) \
  328. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  329. #define IDXGIOutputDuplication_GetDesc(This,pDesc) \
  330. ( (This)->lpVtbl -> GetDesc(This,pDesc) )
  331. #define IDXGIOutputDuplication_AcquireNextFrame(This,TimeoutInMilliseconds,pFrameInfo,ppDesktopResource) \
  332. ( (This)->lpVtbl -> AcquireNextFrame(This,TimeoutInMilliseconds,pFrameInfo,ppDesktopResource) )
  333. #define IDXGIOutputDuplication_GetFrameDirtyRects(This,DirtyRectsBufferSize,pDirtyRectsBuffer,pDirtyRectsBufferSizeRequired) \
  334. ( (This)->lpVtbl -> GetFrameDirtyRects(This,DirtyRectsBufferSize,pDirtyRectsBuffer,pDirtyRectsBufferSizeRequired) )
  335. #define IDXGIOutputDuplication_GetFrameMoveRects(This,MoveRectsBufferSize,pMoveRectBuffer,pMoveRectsBufferSizeRequired) \
  336. ( (This)->lpVtbl -> GetFrameMoveRects(This,MoveRectsBufferSize,pMoveRectBuffer,pMoveRectsBufferSizeRequired) )
  337. #define IDXGIOutputDuplication_GetFramePointerShape(This,PointerShapeBufferSize,pPointerShapeBuffer,pPointerShapeBufferSizeRequired,pPointerShapeInfo) \
  338. ( (This)->lpVtbl -> GetFramePointerShape(This,PointerShapeBufferSize,pPointerShapeBuffer,pPointerShapeBufferSizeRequired,pPointerShapeInfo) )
  339. #define IDXGIOutputDuplication_MapDesktopSurface(This,pLockedRect) \
  340. ( (This)->lpVtbl -> MapDesktopSurface(This,pLockedRect) )
  341. #define IDXGIOutputDuplication_UnMapDesktopSurface(This) \
  342. ( (This)->lpVtbl -> UnMapDesktopSurface(This) )
  343. #define IDXGIOutputDuplication_ReleaseFrame(This) \
  344. ( (This)->lpVtbl -> ReleaseFrame(This) )
  345. #endif /* COBJMACROS */
  346. #endif /* C style interface */
  347. #endif /* __IDXGIOutputDuplication_INTERFACE_DEFINED__ */
  348. /* interface __MIDL_itf_dxgi1_2_0000_0002 */
  349. /* [local] */
  350. #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
  351. // BK - pragma endregion
  352. // BK - pragma region App Family
  353. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
  354. typedef
  355. enum DXGI_ALPHA_MODE
  356. {
  357. DXGI_ALPHA_MODE_UNSPECIFIED = 0,
  358. DXGI_ALPHA_MODE_PREMULTIPLIED = 1,
  359. DXGI_ALPHA_MODE_STRAIGHT = 2,
  360. DXGI_ALPHA_MODE_IGNORE = 3,
  361. DXGI_ALPHA_MODE_FORCE_DWORD = 0xffffffff
  362. } DXGI_ALPHA_MODE;
  363. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_2_0000_0002_v0_0_c_ifspec;
  364. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_2_0000_0002_v0_0_s_ifspec;
  365. #ifndef __IDXGISurface2_INTERFACE_DEFINED__
  366. #define __IDXGISurface2_INTERFACE_DEFINED__
  367. /* interface IDXGISurface2 */
  368. /* [unique][local][uuid][object] */
  369. EXTERN_C const IID IID_IDXGISurface2;
  370. #if defined(__cplusplus) && !defined(CINTERFACE)
  371. MIDL_INTERFACE("aba496dd-b617-4cb8-a866-bc44d7eb1fa2")
  372. IDXGISurface2 : public IDXGISurface1
  373. {
  374. public:
  375. virtual HRESULT STDMETHODCALLTYPE GetResource(
  376. /* [annotation][in] */
  377. _In_ REFIID riid,
  378. /* [annotation][out] */
  379. _COM_Outptr_ void **ppParentResource,
  380. /* [annotation][out] */
  381. _Out_ UINT *pSubresourceIndex) = 0;
  382. };
  383. #else /* C style interface */
  384. typedef struct IDXGISurface2Vtbl
  385. {
  386. BEGIN_INTERFACE
  387. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  388. IDXGISurface2 * This,
  389. /* [in] */ REFIID riid,
  390. /* [annotation][iid_is][out] */
  391. _COM_Outptr_ void **ppvObject);
  392. ULONG ( STDMETHODCALLTYPE *AddRef )(
  393. IDXGISurface2 * This);
  394. ULONG ( STDMETHODCALLTYPE *Release )(
  395. IDXGISurface2 * This);
  396. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  397. IDXGISurface2 * This,
  398. /* [annotation][in] */
  399. _In_ REFGUID Name,
  400. /* [in] */ UINT DataSize,
  401. /* [annotation][in] */
  402. _In_reads_bytes_(DataSize) const void *pData);
  403. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  404. IDXGISurface2 * This,
  405. /* [annotation][in] */
  406. _In_ REFGUID Name,
  407. /* [annotation][in] */
  408. _In_opt_ const IUnknown *pUnknown);
  409. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  410. IDXGISurface2 * This,
  411. /* [annotation][in] */
  412. _In_ REFGUID Name,
  413. /* [annotation][out][in] */
  414. _Inout_ UINT *pDataSize,
  415. /* [annotation][out] */
  416. _Out_writes_bytes_(*pDataSize) void *pData);
  417. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  418. IDXGISurface2 * This,
  419. /* [annotation][in] */
  420. _In_ REFIID riid,
  421. /* [annotation][retval][out] */
  422. _COM_Outptr_ void **ppParent);
  423. HRESULT ( STDMETHODCALLTYPE *GetDevice )(
  424. IDXGISurface2 * This,
  425. /* [annotation][in] */
  426. _In_ REFIID riid,
  427. /* [annotation][retval][out] */
  428. _COM_Outptr_ void **ppDevice);
  429. HRESULT ( STDMETHODCALLTYPE *GetDesc )(
  430. IDXGISurface2 * This,
  431. /* [annotation][out] */
  432. _Out_ DXGI_SURFACE_DESC *pDesc);
  433. HRESULT ( STDMETHODCALLTYPE *Map )(
  434. IDXGISurface2 * This,
  435. /* [annotation][out] */
  436. _Out_ DXGI_MAPPED_RECT *pLockedRect,
  437. /* [in] */ UINT MapFlags);
  438. HRESULT ( STDMETHODCALLTYPE *Unmap )(
  439. IDXGISurface2 * This);
  440. HRESULT ( STDMETHODCALLTYPE *GetDC )(
  441. IDXGISurface2 * This,
  442. /* [in] */ BOOL Discard,
  443. /* [annotation][out] */
  444. _Out_ HDC *phdc);
  445. HRESULT ( STDMETHODCALLTYPE *ReleaseDC )(
  446. IDXGISurface2 * This,
  447. /* [annotation][in] */
  448. _In_opt_ RECT *pDirtyRect);
  449. HRESULT ( STDMETHODCALLTYPE *GetResource )(
  450. IDXGISurface2 * This,
  451. /* [annotation][in] */
  452. _In_ REFIID riid,
  453. /* [annotation][out] */
  454. _COM_Outptr_ void **ppParentResource,
  455. /* [annotation][out] */
  456. _Out_ UINT *pSubresourceIndex);
  457. END_INTERFACE
  458. } IDXGISurface2Vtbl;
  459. interface IDXGISurface2
  460. {
  461. CONST_VTBL struct IDXGISurface2Vtbl *lpVtbl;
  462. };
  463. #ifdef COBJMACROS
  464. #define IDXGISurface2_QueryInterface(This,riid,ppvObject) \
  465. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  466. #define IDXGISurface2_AddRef(This) \
  467. ( (This)->lpVtbl -> AddRef(This) )
  468. #define IDXGISurface2_Release(This) \
  469. ( (This)->lpVtbl -> Release(This) )
  470. #define IDXGISurface2_SetPrivateData(This,Name,DataSize,pData) \
  471. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  472. #define IDXGISurface2_SetPrivateDataInterface(This,Name,pUnknown) \
  473. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  474. #define IDXGISurface2_GetPrivateData(This,Name,pDataSize,pData) \
  475. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  476. #define IDXGISurface2_GetParent(This,riid,ppParent) \
  477. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  478. #define IDXGISurface2_GetDevice(This,riid,ppDevice) \
  479. ( (This)->lpVtbl -> GetDevice(This,riid,ppDevice) )
  480. #define IDXGISurface2_GetDesc(This,pDesc) \
  481. ( (This)->lpVtbl -> GetDesc(This,pDesc) )
  482. #define IDXGISurface2_Map(This,pLockedRect,MapFlags) \
  483. ( (This)->lpVtbl -> Map(This,pLockedRect,MapFlags) )
  484. #define IDXGISurface2_Unmap(This) \
  485. ( (This)->lpVtbl -> Unmap(This) )
  486. #define IDXGISurface2_GetDC(This,Discard,phdc) \
  487. ( (This)->lpVtbl -> GetDC(This,Discard,phdc) )
  488. #define IDXGISurface2_ReleaseDC(This,pDirtyRect) \
  489. ( (This)->lpVtbl -> ReleaseDC(This,pDirtyRect) )
  490. #define IDXGISurface2_GetResource(This,riid,ppParentResource,pSubresourceIndex) \
  491. ( (This)->lpVtbl -> GetResource(This,riid,ppParentResource,pSubresourceIndex) )
  492. #endif /* COBJMACROS */
  493. #endif /* C style interface */
  494. #endif /* __IDXGISurface2_INTERFACE_DEFINED__ */
  495. #ifndef __IDXGIResource1_INTERFACE_DEFINED__
  496. #define __IDXGIResource1_INTERFACE_DEFINED__
  497. /* interface IDXGIResource1 */
  498. /* [unique][local][uuid][object] */
  499. EXTERN_C const IID IID_IDXGIResource1;
  500. #if defined(__cplusplus) && !defined(CINTERFACE)
  501. MIDL_INTERFACE("30961379-4609-4a41-998e-54fe567ee0c1")
  502. IDXGIResource1 : public IDXGIResource
  503. {
  504. public:
  505. virtual HRESULT STDMETHODCALLTYPE CreateSubresourceSurface(
  506. UINT index,
  507. /* [annotation][out] */
  508. _COM_Outptr_ IDXGISurface2 **ppSurface) = 0;
  509. virtual HRESULT STDMETHODCALLTYPE CreateSharedHandle(
  510. /* [annotation][in] */
  511. _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
  512. /* [annotation][in] */
  513. _In_ DWORD dwAccess,
  514. /* [annotation][in] */
  515. _In_opt_ LPCWSTR lpName,
  516. /* [annotation][out] */
  517. _Out_ HANDLE *pHandle) = 0;
  518. };
  519. #else /* C style interface */
  520. typedef struct IDXGIResource1Vtbl
  521. {
  522. BEGIN_INTERFACE
  523. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  524. IDXGIResource1 * This,
  525. /* [in] */ REFIID riid,
  526. /* [annotation][iid_is][out] */
  527. _COM_Outptr_ void **ppvObject);
  528. ULONG ( STDMETHODCALLTYPE *AddRef )(
  529. IDXGIResource1 * This);
  530. ULONG ( STDMETHODCALLTYPE *Release )(
  531. IDXGIResource1 * This);
  532. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  533. IDXGIResource1 * This,
  534. /* [annotation][in] */
  535. _In_ REFGUID Name,
  536. /* [in] */ UINT DataSize,
  537. /* [annotation][in] */
  538. _In_reads_bytes_(DataSize) const void *pData);
  539. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  540. IDXGIResource1 * This,
  541. /* [annotation][in] */
  542. _In_ REFGUID Name,
  543. /* [annotation][in] */
  544. _In_opt_ const IUnknown *pUnknown);
  545. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  546. IDXGIResource1 * This,
  547. /* [annotation][in] */
  548. _In_ REFGUID Name,
  549. /* [annotation][out][in] */
  550. _Inout_ UINT *pDataSize,
  551. /* [annotation][out] */
  552. _Out_writes_bytes_(*pDataSize) void *pData);
  553. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  554. IDXGIResource1 * This,
  555. /* [annotation][in] */
  556. _In_ REFIID riid,
  557. /* [annotation][retval][out] */
  558. _COM_Outptr_ void **ppParent);
  559. HRESULT ( STDMETHODCALLTYPE *GetDevice )(
  560. IDXGIResource1 * This,
  561. /* [annotation][in] */
  562. _In_ REFIID riid,
  563. /* [annotation][retval][out] */
  564. _COM_Outptr_ void **ppDevice);
  565. HRESULT ( STDMETHODCALLTYPE *GetSharedHandle )(
  566. IDXGIResource1 * This,
  567. /* [annotation][out] */
  568. _Out_ HANDLE *pSharedHandle);
  569. HRESULT ( STDMETHODCALLTYPE *GetUsage )(
  570. IDXGIResource1 * This,
  571. /* [out] */ DXGI_USAGE *pUsage);
  572. HRESULT ( STDMETHODCALLTYPE *SetEvictionPriority )(
  573. IDXGIResource1 * This,
  574. /* [in] */ UINT EvictionPriority);
  575. HRESULT ( STDMETHODCALLTYPE *GetEvictionPriority )(
  576. IDXGIResource1 * This,
  577. /* [annotation][retval][out] */
  578. _Out_ UINT *pEvictionPriority);
  579. HRESULT ( STDMETHODCALLTYPE *CreateSubresourceSurface )(
  580. IDXGIResource1 * This,
  581. UINT index,
  582. /* [annotation][out] */
  583. _COM_Outptr_ IDXGISurface2 **ppSurface);
  584. HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
  585. IDXGIResource1 * This,
  586. /* [annotation][in] */
  587. _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
  588. /* [annotation][in] */
  589. _In_ DWORD dwAccess,
  590. /* [annotation][in] */
  591. _In_opt_ LPCWSTR lpName,
  592. /* [annotation][out] */
  593. _Out_ HANDLE *pHandle);
  594. END_INTERFACE
  595. } IDXGIResource1Vtbl;
  596. interface IDXGIResource1
  597. {
  598. CONST_VTBL struct IDXGIResource1Vtbl *lpVtbl;
  599. };
  600. #ifdef COBJMACROS
  601. #define IDXGIResource1_QueryInterface(This,riid,ppvObject) \
  602. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  603. #define IDXGIResource1_AddRef(This) \
  604. ( (This)->lpVtbl -> AddRef(This) )
  605. #define IDXGIResource1_Release(This) \
  606. ( (This)->lpVtbl -> Release(This) )
  607. #define IDXGIResource1_SetPrivateData(This,Name,DataSize,pData) \
  608. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  609. #define IDXGIResource1_SetPrivateDataInterface(This,Name,pUnknown) \
  610. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  611. #define IDXGIResource1_GetPrivateData(This,Name,pDataSize,pData) \
  612. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  613. #define IDXGIResource1_GetParent(This,riid,ppParent) \
  614. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  615. #define IDXGIResource1_GetDevice(This,riid,ppDevice) \
  616. ( (This)->lpVtbl -> GetDevice(This,riid,ppDevice) )
  617. #define IDXGIResource1_GetSharedHandle(This,pSharedHandle) \
  618. ( (This)->lpVtbl -> GetSharedHandle(This,pSharedHandle) )
  619. #define IDXGIResource1_GetUsage(This,pUsage) \
  620. ( (This)->lpVtbl -> GetUsage(This,pUsage) )
  621. #define IDXGIResource1_SetEvictionPriority(This,EvictionPriority) \
  622. ( (This)->lpVtbl -> SetEvictionPriority(This,EvictionPriority) )
  623. #define IDXGIResource1_GetEvictionPriority(This,pEvictionPriority) \
  624. ( (This)->lpVtbl -> GetEvictionPriority(This,pEvictionPriority) )
  625. #define IDXGIResource1_CreateSubresourceSurface(This,index,ppSurface) \
  626. ( (This)->lpVtbl -> CreateSubresourceSurface(This,index,ppSurface) )
  627. #define IDXGIResource1_CreateSharedHandle(This,pAttributes,dwAccess,lpName,pHandle) \
  628. ( (This)->lpVtbl -> CreateSharedHandle(This,pAttributes,dwAccess,lpName,pHandle) )
  629. #endif /* COBJMACROS */
  630. #endif /* C style interface */
  631. #endif /* __IDXGIResource1_INTERFACE_DEFINED__ */
  632. /* interface __MIDL_itf_dxgi1_2_0000_0004 */
  633. /* [local] */
  634. typedef
  635. enum _DXGI_OFFER_RESOURCE_PRIORITY
  636. {
  637. DXGI_OFFER_RESOURCE_PRIORITY_LOW = 1,
  638. DXGI_OFFER_RESOURCE_PRIORITY_NORMAL = ( DXGI_OFFER_RESOURCE_PRIORITY_LOW + 1 ) ,
  639. DXGI_OFFER_RESOURCE_PRIORITY_HIGH = ( DXGI_OFFER_RESOURCE_PRIORITY_NORMAL + 1 )
  640. } DXGI_OFFER_RESOURCE_PRIORITY;
  641. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_2_0000_0004_v0_0_c_ifspec;
  642. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_2_0000_0004_v0_0_s_ifspec;
  643. #ifndef __IDXGIDevice2_INTERFACE_DEFINED__
  644. #define __IDXGIDevice2_INTERFACE_DEFINED__
  645. /* interface IDXGIDevice2 */
  646. /* [unique][local][uuid][object] */
  647. EXTERN_C const IID IID_IDXGIDevice2;
  648. #if defined(__cplusplus) && !defined(CINTERFACE)
  649. MIDL_INTERFACE("05008617-fbfd-4051-a790-144884b4f6a9")
  650. IDXGIDevice2 : public IDXGIDevice1
  651. {
  652. public:
  653. virtual HRESULT STDMETHODCALLTYPE OfferResources(
  654. /* [annotation][in] */
  655. _In_ UINT NumResources,
  656. /* [annotation][size_is][in] */
  657. _In_reads_(NumResources) IDXGIResource *const *ppResources,
  658. /* [annotation][in] */
  659. _In_ DXGI_OFFER_RESOURCE_PRIORITY Priority) = 0;
  660. virtual HRESULT STDMETHODCALLTYPE ReclaimResources(
  661. /* [annotation][in] */
  662. _In_ UINT NumResources,
  663. /* [annotation][size_is][in] */
  664. _In_reads_(NumResources) IDXGIResource *const *ppResources,
  665. /* [annotation][size_is][out] */
  666. _Out_writes_all_opt_(NumResources) BOOL *pDiscarded) = 0;
  667. virtual HRESULT STDMETHODCALLTYPE EnqueueSetEvent(
  668. /* [annotation][in] */
  669. _In_ HANDLE hEvent) = 0;
  670. };
  671. #else /* C style interface */
  672. typedef struct IDXGIDevice2Vtbl
  673. {
  674. BEGIN_INTERFACE
  675. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  676. IDXGIDevice2 * This,
  677. /* [in] */ REFIID riid,
  678. /* [annotation][iid_is][out] */
  679. _COM_Outptr_ void **ppvObject);
  680. ULONG ( STDMETHODCALLTYPE *AddRef )(
  681. IDXGIDevice2 * This);
  682. ULONG ( STDMETHODCALLTYPE *Release )(
  683. IDXGIDevice2 * This);
  684. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  685. IDXGIDevice2 * This,
  686. /* [annotation][in] */
  687. _In_ REFGUID Name,
  688. /* [in] */ UINT DataSize,
  689. /* [annotation][in] */
  690. _In_reads_bytes_(DataSize) const void *pData);
  691. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  692. IDXGIDevice2 * This,
  693. /* [annotation][in] */
  694. _In_ REFGUID Name,
  695. /* [annotation][in] */
  696. _In_opt_ const IUnknown *pUnknown);
  697. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  698. IDXGIDevice2 * This,
  699. /* [annotation][in] */
  700. _In_ REFGUID Name,
  701. /* [annotation][out][in] */
  702. _Inout_ UINT *pDataSize,
  703. /* [annotation][out] */
  704. _Out_writes_bytes_(*pDataSize) void *pData);
  705. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  706. IDXGIDevice2 * This,
  707. /* [annotation][in] */
  708. _In_ REFIID riid,
  709. /* [annotation][retval][out] */
  710. _COM_Outptr_ void **ppParent);
  711. HRESULT ( STDMETHODCALLTYPE *GetAdapter )(
  712. IDXGIDevice2 * This,
  713. /* [annotation][out] */
  714. _COM_Outptr_ IDXGIAdapter **pAdapter);
  715. HRESULT ( STDMETHODCALLTYPE *CreateSurface )(
  716. IDXGIDevice2 * This,
  717. /* [annotation][in] */
  718. _In_ const DXGI_SURFACE_DESC *pDesc,
  719. /* [in] */ UINT NumSurfaces,
  720. /* [in] */ DXGI_USAGE Usage,
  721. /* [annotation][in] */
  722. _In_opt_ const DXGI_SHARED_RESOURCE *pSharedResource,
  723. /* [annotation][out] */
  724. _COM_Outptr_ IDXGISurface **ppSurface);
  725. HRESULT ( STDMETHODCALLTYPE *QueryResourceResidency )(
  726. IDXGIDevice2 * This,
  727. /* [annotation][size_is][in] */
  728. _In_reads_(NumResources) IUnknown *const *ppResources,
  729. /* [annotation][size_is][out] */
  730. _Out_writes_(NumResources) DXGI_RESIDENCY *pResidencyStatus,
  731. /* [in] */ UINT NumResources);
  732. HRESULT ( STDMETHODCALLTYPE *SetGPUThreadPriority )(
  733. IDXGIDevice2 * This,
  734. /* [in] */ INT Priority);
  735. HRESULT ( STDMETHODCALLTYPE *GetGPUThreadPriority )(
  736. IDXGIDevice2 * This,
  737. /* [annotation][retval][out] */
  738. _Out_ INT *pPriority);
  739. HRESULT ( STDMETHODCALLTYPE *SetMaximumFrameLatency )(
  740. IDXGIDevice2 * This,
  741. /* [in] */ UINT MaxLatency);
  742. HRESULT ( STDMETHODCALLTYPE *GetMaximumFrameLatency )(
  743. IDXGIDevice2 * This,
  744. /* [annotation][out] */
  745. _Out_ UINT *pMaxLatency);
  746. HRESULT ( STDMETHODCALLTYPE *OfferResources )(
  747. IDXGIDevice2 * This,
  748. /* [annotation][in] */
  749. _In_ UINT NumResources,
  750. /* [annotation][size_is][in] */
  751. _In_reads_(NumResources) IDXGIResource *const *ppResources,
  752. /* [annotation][in] */
  753. _In_ DXGI_OFFER_RESOURCE_PRIORITY Priority);
  754. HRESULT ( STDMETHODCALLTYPE *ReclaimResources )(
  755. IDXGIDevice2 * This,
  756. /* [annotation][in] */
  757. _In_ UINT NumResources,
  758. /* [annotation][size_is][in] */
  759. _In_reads_(NumResources) IDXGIResource *const *ppResources,
  760. /* [annotation][size_is][out] */
  761. _Out_writes_all_opt_(NumResources) BOOL *pDiscarded);
  762. HRESULT ( STDMETHODCALLTYPE *EnqueueSetEvent )(
  763. IDXGIDevice2 * This,
  764. /* [annotation][in] */
  765. _In_ HANDLE hEvent);
  766. END_INTERFACE
  767. } IDXGIDevice2Vtbl;
  768. interface IDXGIDevice2
  769. {
  770. CONST_VTBL struct IDXGIDevice2Vtbl *lpVtbl;
  771. };
  772. #ifdef COBJMACROS
  773. #define IDXGIDevice2_QueryInterface(This,riid,ppvObject) \
  774. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  775. #define IDXGIDevice2_AddRef(This) \
  776. ( (This)->lpVtbl -> AddRef(This) )
  777. #define IDXGIDevice2_Release(This) \
  778. ( (This)->lpVtbl -> Release(This) )
  779. #define IDXGIDevice2_SetPrivateData(This,Name,DataSize,pData) \
  780. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  781. #define IDXGIDevice2_SetPrivateDataInterface(This,Name,pUnknown) \
  782. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  783. #define IDXGIDevice2_GetPrivateData(This,Name,pDataSize,pData) \
  784. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  785. #define IDXGIDevice2_GetParent(This,riid,ppParent) \
  786. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  787. #define IDXGIDevice2_GetAdapter(This,pAdapter) \
  788. ( (This)->lpVtbl -> GetAdapter(This,pAdapter) )
  789. #define IDXGIDevice2_CreateSurface(This,pDesc,NumSurfaces,Usage,pSharedResource,ppSurface) \
  790. ( (This)->lpVtbl -> CreateSurface(This,pDesc,NumSurfaces,Usage,pSharedResource,ppSurface) )
  791. #define IDXGIDevice2_QueryResourceResidency(This,ppResources,pResidencyStatus,NumResources) \
  792. ( (This)->lpVtbl -> QueryResourceResidency(This,ppResources,pResidencyStatus,NumResources) )
  793. #define IDXGIDevice2_SetGPUThreadPriority(This,Priority) \
  794. ( (This)->lpVtbl -> SetGPUThreadPriority(This,Priority) )
  795. #define IDXGIDevice2_GetGPUThreadPriority(This,pPriority) \
  796. ( (This)->lpVtbl -> GetGPUThreadPriority(This,pPriority) )
  797. #define IDXGIDevice2_SetMaximumFrameLatency(This,MaxLatency) \
  798. ( (This)->lpVtbl -> SetMaximumFrameLatency(This,MaxLatency) )
  799. #define IDXGIDevice2_GetMaximumFrameLatency(This,pMaxLatency) \
  800. ( (This)->lpVtbl -> GetMaximumFrameLatency(This,pMaxLatency) )
  801. #define IDXGIDevice2_OfferResources(This,NumResources,ppResources,Priority) \
  802. ( (This)->lpVtbl -> OfferResources(This,NumResources,ppResources,Priority) )
  803. #define IDXGIDevice2_ReclaimResources(This,NumResources,ppResources,pDiscarded) \
  804. ( (This)->lpVtbl -> ReclaimResources(This,NumResources,ppResources,pDiscarded) )
  805. #define IDXGIDevice2_EnqueueSetEvent(This,hEvent) \
  806. ( (This)->lpVtbl -> EnqueueSetEvent(This,hEvent) )
  807. #endif /* COBJMACROS */
  808. #endif /* C style interface */
  809. #endif /* __IDXGIDevice2_INTERFACE_DEFINED__ */
  810. /* interface __MIDL_itf_dxgi1_2_0000_0005 */
  811. /* [local] */
  812. #define DXGI_ENUM_MODES_STEREO ( 4UL )
  813. #define DXGI_ENUM_MODES_DISABLED_STEREO ( 8UL )
  814. #define DXGI_SHARED_RESOURCE_READ ( 0x80000000L )
  815. #define DXGI_SHARED_RESOURCE_WRITE ( 1 )
  816. typedef struct DXGI_MODE_DESC1
  817. {
  818. UINT Width;
  819. UINT Height;
  820. DXGI_RATIONAL RefreshRate;
  821. DXGI_FORMAT Format;
  822. DXGI_MODE_SCANLINE_ORDER ScanlineOrdering;
  823. DXGI_MODE_SCALING Scaling;
  824. BOOL Stereo;
  825. } DXGI_MODE_DESC1;
  826. typedef
  827. enum DXGI_SCALING
  828. {
  829. DXGI_SCALING_STRETCH = 0,
  830. DXGI_SCALING_NONE = 1,
  831. DXGI_SCALING_ASPECT_RATIO_STRETCH = 2
  832. } DXGI_SCALING;
  833. typedef struct DXGI_SWAP_CHAIN_DESC1
  834. {
  835. UINT Width;
  836. UINT Height;
  837. DXGI_FORMAT Format;
  838. BOOL Stereo;
  839. DXGI_SAMPLE_DESC SampleDesc;
  840. DXGI_USAGE BufferUsage;
  841. UINT BufferCount;
  842. DXGI_SCALING Scaling;
  843. DXGI_SWAP_EFFECT SwapEffect;
  844. DXGI_ALPHA_MODE AlphaMode;
  845. UINT Flags;
  846. } DXGI_SWAP_CHAIN_DESC1;
  847. typedef struct DXGI_SWAP_CHAIN_FULLSCREEN_DESC
  848. {
  849. DXGI_RATIONAL RefreshRate;
  850. DXGI_MODE_SCANLINE_ORDER ScanlineOrdering;
  851. DXGI_MODE_SCALING Scaling;
  852. BOOL Windowed;
  853. } DXGI_SWAP_CHAIN_FULLSCREEN_DESC;
  854. typedef struct DXGI_PRESENT_PARAMETERS
  855. {
  856. UINT DirtyRectsCount;
  857. /* [annotation] */
  858. _Field_size_full_opt_(DirtyRectsCount) RECT *pDirtyRects;
  859. RECT *pScrollRect;
  860. POINT *pScrollOffset;
  861. } DXGI_PRESENT_PARAMETERS;
  862. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_2_0000_0005_v0_0_c_ifspec;
  863. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_2_0000_0005_v0_0_s_ifspec;
  864. #ifndef __IDXGISwapChain1_INTERFACE_DEFINED__
  865. #define __IDXGISwapChain1_INTERFACE_DEFINED__
  866. /* interface IDXGISwapChain1 */
  867. /* [unique][local][uuid][object] */
  868. EXTERN_C const IID IID_IDXGISwapChain1;
  869. #if defined(__cplusplus) && !defined(CINTERFACE)
  870. MIDL_INTERFACE("790a45f7-0d42-4876-983a-0a55cfe6f4aa")
  871. IDXGISwapChain1 : public IDXGISwapChain
  872. {
  873. public:
  874. virtual HRESULT STDMETHODCALLTYPE GetDesc1(
  875. /* [annotation][out] */
  876. _Out_ DXGI_SWAP_CHAIN_DESC1 *pDesc) = 0;
  877. virtual HRESULT STDMETHODCALLTYPE GetFullscreenDesc(
  878. /* [annotation][out] */
  879. _Out_ DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc) = 0;
  880. virtual HRESULT STDMETHODCALLTYPE GetHwnd(
  881. /* [annotation][out] */
  882. _Out_ HWND *pHwnd) = 0;
  883. virtual HRESULT STDMETHODCALLTYPE GetCoreWindow(
  884. /* [annotation][in] */
  885. _In_ REFIID refiid,
  886. /* [annotation][out] */
  887. _COM_Outptr_ void **ppUnk) = 0;
  888. virtual HRESULT STDMETHODCALLTYPE Present1(
  889. /* [in] */ UINT SyncInterval,
  890. /* [in] */ UINT PresentFlags,
  891. /* [annotation][in] */
  892. _In_ const DXGI_PRESENT_PARAMETERS *pPresentParameters) = 0;
  893. virtual BOOL STDMETHODCALLTYPE IsTemporaryMonoSupported( void) = 0;
  894. virtual HRESULT STDMETHODCALLTYPE GetRestrictToOutput(
  895. /* [annotation][out] */
  896. _Out_ IDXGIOutput **ppRestrictToOutput) = 0;
  897. virtual HRESULT STDMETHODCALLTYPE SetBackgroundColor(
  898. /* [annotation][in] */
  899. _In_ const DXGI_RGBA *pColor) = 0;
  900. virtual HRESULT STDMETHODCALLTYPE GetBackgroundColor(
  901. /* [annotation][out] */
  902. _Out_ DXGI_RGBA *pColor) = 0;
  903. virtual HRESULT STDMETHODCALLTYPE SetRotation(
  904. /* [annotation][in] */
  905. _In_ DXGI_MODE_ROTATION Rotation) = 0;
  906. virtual HRESULT STDMETHODCALLTYPE GetRotation(
  907. /* [annotation][out] */
  908. _Out_ DXGI_MODE_ROTATION *pRotation) = 0;
  909. };
  910. #else /* C style interface */
  911. typedef struct IDXGISwapChain1Vtbl
  912. {
  913. BEGIN_INTERFACE
  914. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  915. IDXGISwapChain1 * This,
  916. /* [in] */ REFIID riid,
  917. /* [annotation][iid_is][out] */
  918. _COM_Outptr_ void **ppvObject);
  919. ULONG ( STDMETHODCALLTYPE *AddRef )(
  920. IDXGISwapChain1 * This);
  921. ULONG ( STDMETHODCALLTYPE *Release )(
  922. IDXGISwapChain1 * This);
  923. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  924. IDXGISwapChain1 * This,
  925. /* [annotation][in] */
  926. _In_ REFGUID Name,
  927. /* [in] */ UINT DataSize,
  928. /* [annotation][in] */
  929. _In_reads_bytes_(DataSize) const void *pData);
  930. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  931. IDXGISwapChain1 * This,
  932. /* [annotation][in] */
  933. _In_ REFGUID Name,
  934. /* [annotation][in] */
  935. _In_opt_ const IUnknown *pUnknown);
  936. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  937. IDXGISwapChain1 * This,
  938. /* [annotation][in] */
  939. _In_ REFGUID Name,
  940. /* [annotation][out][in] */
  941. _Inout_ UINT *pDataSize,
  942. /* [annotation][out] */
  943. _Out_writes_bytes_(*pDataSize) void *pData);
  944. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  945. IDXGISwapChain1 * This,
  946. /* [annotation][in] */
  947. _In_ REFIID riid,
  948. /* [annotation][retval][out] */
  949. _COM_Outptr_ void **ppParent);
  950. HRESULT ( STDMETHODCALLTYPE *GetDevice )(
  951. IDXGISwapChain1 * This,
  952. /* [annotation][in] */
  953. _In_ REFIID riid,
  954. /* [annotation][retval][out] */
  955. _COM_Outptr_ void **ppDevice);
  956. HRESULT ( STDMETHODCALLTYPE *Present )(
  957. IDXGISwapChain1 * This,
  958. /* [in] */ UINT SyncInterval,
  959. /* [in] */ UINT Flags);
  960. HRESULT ( STDMETHODCALLTYPE *GetBuffer )(
  961. IDXGISwapChain1 * This,
  962. /* [in] */ UINT Buffer,
  963. /* [annotation][in] */
  964. _In_ REFIID riid,
  965. /* [annotation][out][in] */
  966. _COM_Outptr_ void **ppSurface);
  967. HRESULT ( STDMETHODCALLTYPE *SetFullscreenState )(
  968. IDXGISwapChain1 * This,
  969. /* [in] */ BOOL Fullscreen,
  970. /* [annotation][in] */
  971. _In_opt_ IDXGIOutput *pTarget);
  972. HRESULT ( STDMETHODCALLTYPE *GetFullscreenState )(
  973. IDXGISwapChain1 * This,
  974. /* [annotation][out] */
  975. _Out_opt_ BOOL *pFullscreen,
  976. /* [annotation][out] */
  977. _COM_Outptr_opt_result_maybenull_ IDXGIOutput **ppTarget);
  978. HRESULT ( STDMETHODCALLTYPE *GetDesc )(
  979. IDXGISwapChain1 * This,
  980. /* [annotation][out] */
  981. _Out_ DXGI_SWAP_CHAIN_DESC *pDesc);
  982. HRESULT ( STDMETHODCALLTYPE *ResizeBuffers )(
  983. IDXGISwapChain1 * This,
  984. /* [in] */ UINT BufferCount,
  985. /* [in] */ UINT Width,
  986. /* [in] */ UINT Height,
  987. /* [in] */ DXGI_FORMAT NewFormat,
  988. /* [in] */ UINT SwapChainFlags);
  989. HRESULT ( STDMETHODCALLTYPE *ResizeTarget )(
  990. IDXGISwapChain1 * This,
  991. /* [annotation][in] */
  992. _In_ const DXGI_MODE_DESC *pNewTargetParameters);
  993. HRESULT ( STDMETHODCALLTYPE *GetContainingOutput )(
  994. IDXGISwapChain1 * This,
  995. /* [annotation][out] */
  996. _COM_Outptr_ IDXGIOutput **ppOutput);
  997. HRESULT ( STDMETHODCALLTYPE *GetFrameStatistics )(
  998. IDXGISwapChain1 * This,
  999. /* [annotation][out] */
  1000. _Out_ DXGI_FRAME_STATISTICS *pStats);
  1001. HRESULT ( STDMETHODCALLTYPE *GetLastPresentCount )(
  1002. IDXGISwapChain1 * This,
  1003. /* [annotation][out] */
  1004. _Out_ UINT *pLastPresentCount);
  1005. HRESULT ( STDMETHODCALLTYPE *GetDesc1 )(
  1006. IDXGISwapChain1 * This,
  1007. /* [annotation][out] */
  1008. _Out_ DXGI_SWAP_CHAIN_DESC1 *pDesc);
  1009. HRESULT ( STDMETHODCALLTYPE *GetFullscreenDesc )(
  1010. IDXGISwapChain1 * This,
  1011. /* [annotation][out] */
  1012. _Out_ DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc);
  1013. HRESULT ( STDMETHODCALLTYPE *GetHwnd )(
  1014. IDXGISwapChain1 * This,
  1015. /* [annotation][out] */
  1016. _Out_ HWND *pHwnd);
  1017. HRESULT ( STDMETHODCALLTYPE *GetCoreWindow )(
  1018. IDXGISwapChain1 * This,
  1019. /* [annotation][in] */
  1020. _In_ REFIID refiid,
  1021. /* [annotation][out] */
  1022. _COM_Outptr_ void **ppUnk);
  1023. HRESULT ( STDMETHODCALLTYPE *Present1 )(
  1024. IDXGISwapChain1 * This,
  1025. /* [in] */ UINT SyncInterval,
  1026. /* [in] */ UINT PresentFlags,
  1027. /* [annotation][in] */
  1028. _In_ const DXGI_PRESENT_PARAMETERS *pPresentParameters);
  1029. BOOL ( STDMETHODCALLTYPE *IsTemporaryMonoSupported )(
  1030. IDXGISwapChain1 * This);
  1031. HRESULT ( STDMETHODCALLTYPE *GetRestrictToOutput )(
  1032. IDXGISwapChain1 * This,
  1033. /* [annotation][out] */
  1034. _Out_ IDXGIOutput **ppRestrictToOutput);
  1035. HRESULT ( STDMETHODCALLTYPE *SetBackgroundColor )(
  1036. IDXGISwapChain1 * This,
  1037. /* [annotation][in] */
  1038. _In_ const DXGI_RGBA *pColor);
  1039. HRESULT ( STDMETHODCALLTYPE *GetBackgroundColor )(
  1040. IDXGISwapChain1 * This,
  1041. /* [annotation][out] */
  1042. _Out_ DXGI_RGBA *pColor);
  1043. HRESULT ( STDMETHODCALLTYPE *SetRotation )(
  1044. IDXGISwapChain1 * This,
  1045. /* [annotation][in] */
  1046. _In_ DXGI_MODE_ROTATION Rotation);
  1047. HRESULT ( STDMETHODCALLTYPE *GetRotation )(
  1048. IDXGISwapChain1 * This,
  1049. /* [annotation][out] */
  1050. _Out_ DXGI_MODE_ROTATION *pRotation);
  1051. END_INTERFACE
  1052. } IDXGISwapChain1Vtbl;
  1053. interface IDXGISwapChain1
  1054. {
  1055. CONST_VTBL struct IDXGISwapChain1Vtbl *lpVtbl;
  1056. };
  1057. #ifdef COBJMACROS
  1058. #define IDXGISwapChain1_QueryInterface(This,riid,ppvObject) \
  1059. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  1060. #define IDXGISwapChain1_AddRef(This) \
  1061. ( (This)->lpVtbl -> AddRef(This) )
  1062. #define IDXGISwapChain1_Release(This) \
  1063. ( (This)->lpVtbl -> Release(This) )
  1064. #define IDXGISwapChain1_SetPrivateData(This,Name,DataSize,pData) \
  1065. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  1066. #define IDXGISwapChain1_SetPrivateDataInterface(This,Name,pUnknown) \
  1067. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  1068. #define IDXGISwapChain1_GetPrivateData(This,Name,pDataSize,pData) \
  1069. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  1070. #define IDXGISwapChain1_GetParent(This,riid,ppParent) \
  1071. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  1072. #define IDXGISwapChain1_GetDevice(This,riid,ppDevice) \
  1073. ( (This)->lpVtbl -> GetDevice(This,riid,ppDevice) )
  1074. #define IDXGISwapChain1_Present(This,SyncInterval,Flags) \
  1075. ( (This)->lpVtbl -> Present(This,SyncInterval,Flags) )
  1076. #define IDXGISwapChain1_GetBuffer(This,Buffer,riid,ppSurface) \
  1077. ( (This)->lpVtbl -> GetBuffer(This,Buffer,riid,ppSurface) )
  1078. #define IDXGISwapChain1_SetFullscreenState(This,Fullscreen,pTarget) \
  1079. ( (This)->lpVtbl -> SetFullscreenState(This,Fullscreen,pTarget) )
  1080. #define IDXGISwapChain1_GetFullscreenState(This,pFullscreen,ppTarget) \
  1081. ( (This)->lpVtbl -> GetFullscreenState(This,pFullscreen,ppTarget) )
  1082. #define IDXGISwapChain1_GetDesc(This,pDesc) \
  1083. ( (This)->lpVtbl -> GetDesc(This,pDesc) )
  1084. #define IDXGISwapChain1_ResizeBuffers(This,BufferCount,Width,Height,NewFormat,SwapChainFlags) \
  1085. ( (This)->lpVtbl -> ResizeBuffers(This,BufferCount,Width,Height,NewFormat,SwapChainFlags) )
  1086. #define IDXGISwapChain1_ResizeTarget(This,pNewTargetParameters) \
  1087. ( (This)->lpVtbl -> ResizeTarget(This,pNewTargetParameters) )
  1088. #define IDXGISwapChain1_GetContainingOutput(This,ppOutput) \
  1089. ( (This)->lpVtbl -> GetContainingOutput(This,ppOutput) )
  1090. #define IDXGISwapChain1_GetFrameStatistics(This,pStats) \
  1091. ( (This)->lpVtbl -> GetFrameStatistics(This,pStats) )
  1092. #define IDXGISwapChain1_GetLastPresentCount(This,pLastPresentCount) \
  1093. ( (This)->lpVtbl -> GetLastPresentCount(This,pLastPresentCount) )
  1094. #define IDXGISwapChain1_GetDesc1(This,pDesc) \
  1095. ( (This)->lpVtbl -> GetDesc1(This,pDesc) )
  1096. #define IDXGISwapChain1_GetFullscreenDesc(This,pDesc) \
  1097. ( (This)->lpVtbl -> GetFullscreenDesc(This,pDesc) )
  1098. #define IDXGISwapChain1_GetHwnd(This,pHwnd) \
  1099. ( (This)->lpVtbl -> GetHwnd(This,pHwnd) )
  1100. #define IDXGISwapChain1_GetCoreWindow(This,refiid,ppUnk) \
  1101. ( (This)->lpVtbl -> GetCoreWindow(This,refiid,ppUnk) )
  1102. #define IDXGISwapChain1_Present1(This,SyncInterval,PresentFlags,pPresentParameters) \
  1103. ( (This)->lpVtbl -> Present1(This,SyncInterval,PresentFlags,pPresentParameters) )
  1104. #define IDXGISwapChain1_IsTemporaryMonoSupported(This) \
  1105. ( (This)->lpVtbl -> IsTemporaryMonoSupported(This) )
  1106. #define IDXGISwapChain1_GetRestrictToOutput(This,ppRestrictToOutput) \
  1107. ( (This)->lpVtbl -> GetRestrictToOutput(This,ppRestrictToOutput) )
  1108. #define IDXGISwapChain1_SetBackgroundColor(This,pColor) \
  1109. ( (This)->lpVtbl -> SetBackgroundColor(This,pColor) )
  1110. #define IDXGISwapChain1_GetBackgroundColor(This,pColor) \
  1111. ( (This)->lpVtbl -> GetBackgroundColor(This,pColor) )
  1112. #define IDXGISwapChain1_SetRotation(This,Rotation) \
  1113. ( (This)->lpVtbl -> SetRotation(This,Rotation) )
  1114. #define IDXGISwapChain1_GetRotation(This,pRotation) \
  1115. ( (This)->lpVtbl -> GetRotation(This,pRotation) )
  1116. #endif /* COBJMACROS */
  1117. #endif /* C style interface */
  1118. #endif /* __IDXGISwapChain1_INTERFACE_DEFINED__ */
  1119. #ifndef __IDXGIFactory2_INTERFACE_DEFINED__
  1120. #define __IDXGIFactory2_INTERFACE_DEFINED__
  1121. /* interface IDXGIFactory2 */
  1122. /* [unique][local][uuid][object] */
  1123. EXTERN_C const IID IID_IDXGIFactory2;
  1124. #if defined(__cplusplus) && !defined(CINTERFACE)
  1125. MIDL_INTERFACE("50c83a1c-e072-4c48-87b0-3630fa36a6d0")
  1126. IDXGIFactory2 : public IDXGIFactory1
  1127. {
  1128. public:
  1129. virtual BOOL STDMETHODCALLTYPE IsWindowedStereoEnabled( void) = 0;
  1130. virtual HRESULT STDMETHODCALLTYPE CreateSwapChainForHwnd(
  1131. /* [annotation][in] */
  1132. _In_ IUnknown *pDevice,
  1133. /* [annotation][in] */
  1134. _In_ HWND hWnd,
  1135. /* [annotation][in] */
  1136. _In_ const DXGI_SWAP_CHAIN_DESC1 *pDesc,
  1137. /* [annotation][in] */
  1138. _In_opt_ const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,
  1139. /* [annotation][in] */
  1140. _In_opt_ IDXGIOutput *pRestrictToOutput,
  1141. /* [annotation][out] */
  1142. _COM_Outptr_ IDXGISwapChain1 **ppSwapChain) = 0;
  1143. virtual HRESULT STDMETHODCALLTYPE CreateSwapChainForCoreWindow(
  1144. /* [annotation][in] */
  1145. _In_ IUnknown *pDevice,
  1146. /* [annotation][in] */
  1147. _In_ IUnknown *pWindow,
  1148. /* [annotation][in] */
  1149. _In_ const DXGI_SWAP_CHAIN_DESC1 *pDesc,
  1150. /* [annotation][in] */
  1151. _In_opt_ IDXGIOutput *pRestrictToOutput,
  1152. /* [annotation][out] */
  1153. _COM_Outptr_ IDXGISwapChain1 **ppSwapChain) = 0;
  1154. virtual HRESULT STDMETHODCALLTYPE GetSharedResourceAdapterLuid(
  1155. /* [annotation] */
  1156. _In_ HANDLE hResource,
  1157. /* [annotation] */
  1158. _Out_ LUID *pLuid) = 0;
  1159. virtual HRESULT STDMETHODCALLTYPE RegisterStereoStatusWindow(
  1160. /* [annotation][in] */
  1161. _In_ HWND WindowHandle,
  1162. /* [annotation][in] */
  1163. _In_ UINT wMsg,
  1164. /* [annotation][out] */
  1165. _Out_ DWORD *pdwCookie) = 0;
  1166. virtual HRESULT STDMETHODCALLTYPE RegisterStereoStatusEvent(
  1167. /* [annotation][in] */
  1168. _In_ HANDLE hEvent,
  1169. /* [annotation][out] */
  1170. _Out_ DWORD *pdwCookie) = 0;
  1171. virtual void STDMETHODCALLTYPE UnregisterStereoStatus(
  1172. /* [annotation][in] */
  1173. _In_ DWORD dwCookie) = 0;
  1174. virtual HRESULT STDMETHODCALLTYPE RegisterOcclusionStatusWindow(
  1175. /* [annotation][in] */
  1176. _In_ HWND WindowHandle,
  1177. /* [annotation][in] */
  1178. _In_ UINT wMsg,
  1179. /* [annotation][out] */
  1180. _Out_ DWORD *pdwCookie) = 0;
  1181. virtual HRESULT STDMETHODCALLTYPE RegisterOcclusionStatusEvent(
  1182. /* [annotation][in] */
  1183. _In_ HANDLE hEvent,
  1184. /* [annotation][out] */
  1185. _Out_ DWORD *pdwCookie) = 0;
  1186. virtual void STDMETHODCALLTYPE UnregisterOcclusionStatus(
  1187. /* [annotation][in] */
  1188. _In_ DWORD dwCookie) = 0;
  1189. virtual HRESULT STDMETHODCALLTYPE CreateSwapChainForComposition(
  1190. /* [annotation][in] */
  1191. _In_ IUnknown *pDevice,
  1192. /* [annotation][in] */
  1193. _In_ const DXGI_SWAP_CHAIN_DESC1 *pDesc,
  1194. /* [annotation][in] */
  1195. _In_opt_ IDXGIOutput *pRestrictToOutput,
  1196. /* [annotation][out] */
  1197. _COM_Outptr_ IDXGISwapChain1 **ppSwapChain) = 0;
  1198. };
  1199. #else /* C style interface */
  1200. typedef struct IDXGIFactory2Vtbl
  1201. {
  1202. BEGIN_INTERFACE
  1203. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  1204. IDXGIFactory2 * This,
  1205. /* [in] */ REFIID riid,
  1206. /* [annotation][iid_is][out] */
  1207. _COM_Outptr_ void **ppvObject);
  1208. ULONG ( STDMETHODCALLTYPE *AddRef )(
  1209. IDXGIFactory2 * This);
  1210. ULONG ( STDMETHODCALLTYPE *Release )(
  1211. IDXGIFactory2 * This);
  1212. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  1213. IDXGIFactory2 * This,
  1214. /* [annotation][in] */
  1215. _In_ REFGUID Name,
  1216. /* [in] */ UINT DataSize,
  1217. /* [annotation][in] */
  1218. _In_reads_bytes_(DataSize) const void *pData);
  1219. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  1220. IDXGIFactory2 * This,
  1221. /* [annotation][in] */
  1222. _In_ REFGUID Name,
  1223. /* [annotation][in] */
  1224. _In_opt_ const IUnknown *pUnknown);
  1225. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  1226. IDXGIFactory2 * This,
  1227. /* [annotation][in] */
  1228. _In_ REFGUID Name,
  1229. /* [annotation][out][in] */
  1230. _Inout_ UINT *pDataSize,
  1231. /* [annotation][out] */
  1232. _Out_writes_bytes_(*pDataSize) void *pData);
  1233. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  1234. IDXGIFactory2 * This,
  1235. /* [annotation][in] */
  1236. _In_ REFIID riid,
  1237. /* [annotation][retval][out] */
  1238. _COM_Outptr_ void **ppParent);
  1239. HRESULT ( STDMETHODCALLTYPE *EnumAdapters )(
  1240. IDXGIFactory2 * This,
  1241. /* [in] */ UINT Adapter,
  1242. /* [annotation][out] */
  1243. _COM_Outptr_ IDXGIAdapter **ppAdapter);
  1244. HRESULT ( STDMETHODCALLTYPE *MakeWindowAssociation )(
  1245. IDXGIFactory2 * This,
  1246. HWND WindowHandle,
  1247. UINT Flags);
  1248. HRESULT ( STDMETHODCALLTYPE *GetWindowAssociation )(
  1249. IDXGIFactory2 * This,
  1250. /* [annotation][out] */
  1251. _Out_ HWND *pWindowHandle);
  1252. HRESULT ( STDMETHODCALLTYPE *CreateSwapChain )(
  1253. IDXGIFactory2 * This,
  1254. /* [annotation][in] */
  1255. _In_ IUnknown *pDevice,
  1256. /* [annotation][in] */
  1257. _In_ DXGI_SWAP_CHAIN_DESC *pDesc,
  1258. /* [annotation][out] */
  1259. _COM_Outptr_ IDXGISwapChain **ppSwapChain);
  1260. HRESULT ( STDMETHODCALLTYPE *CreateSoftwareAdapter )(
  1261. IDXGIFactory2 * This,
  1262. /* [in] */ HMODULE Module,
  1263. /* [annotation][out] */
  1264. _COM_Outptr_ IDXGIAdapter **ppAdapter);
  1265. HRESULT ( STDMETHODCALLTYPE *EnumAdapters1 )(
  1266. IDXGIFactory2 * This,
  1267. /* [in] */ UINT Adapter,
  1268. /* [annotation][out] */
  1269. _COM_Outptr_ IDXGIAdapter1 **ppAdapter);
  1270. BOOL ( STDMETHODCALLTYPE *IsCurrent )(
  1271. IDXGIFactory2 * This);
  1272. BOOL ( STDMETHODCALLTYPE *IsWindowedStereoEnabled )(
  1273. IDXGIFactory2 * This);
  1274. HRESULT ( STDMETHODCALLTYPE *CreateSwapChainForHwnd )(
  1275. IDXGIFactory2 * This,
  1276. /* [annotation][in] */
  1277. _In_ IUnknown *pDevice,
  1278. /* [annotation][in] */
  1279. _In_ HWND hWnd,
  1280. /* [annotation][in] */
  1281. _In_ const DXGI_SWAP_CHAIN_DESC1 *pDesc,
  1282. /* [annotation][in] */
  1283. _In_opt_ const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,
  1284. /* [annotation][in] */
  1285. _In_opt_ IDXGIOutput *pRestrictToOutput,
  1286. /* [annotation][out] */
  1287. _COM_Outptr_ IDXGISwapChain1 **ppSwapChain);
  1288. HRESULT ( STDMETHODCALLTYPE *CreateSwapChainForCoreWindow )(
  1289. IDXGIFactory2 * This,
  1290. /* [annotation][in] */
  1291. _In_ IUnknown *pDevice,
  1292. /* [annotation][in] */
  1293. _In_ IUnknown *pWindow,
  1294. /* [annotation][in] */
  1295. _In_ const DXGI_SWAP_CHAIN_DESC1 *pDesc,
  1296. /* [annotation][in] */
  1297. _In_opt_ IDXGIOutput *pRestrictToOutput,
  1298. /* [annotation][out] */
  1299. _COM_Outptr_ IDXGISwapChain1 **ppSwapChain);
  1300. HRESULT ( STDMETHODCALLTYPE *GetSharedResourceAdapterLuid )(
  1301. IDXGIFactory2 * This,
  1302. /* [annotation] */
  1303. _In_ HANDLE hResource,
  1304. /* [annotation] */
  1305. _Out_ LUID *pLuid);
  1306. HRESULT ( STDMETHODCALLTYPE *RegisterStereoStatusWindow )(
  1307. IDXGIFactory2 * This,
  1308. /* [annotation][in] */
  1309. _In_ HWND WindowHandle,
  1310. /* [annotation][in] */
  1311. _In_ UINT wMsg,
  1312. /* [annotation][out] */
  1313. _Out_ DWORD *pdwCookie);
  1314. HRESULT ( STDMETHODCALLTYPE *RegisterStereoStatusEvent )(
  1315. IDXGIFactory2 * This,
  1316. /* [annotation][in] */
  1317. _In_ HANDLE hEvent,
  1318. /* [annotation][out] */
  1319. _Out_ DWORD *pdwCookie);
  1320. void ( STDMETHODCALLTYPE *UnregisterStereoStatus )(
  1321. IDXGIFactory2 * This,
  1322. /* [annotation][in] */
  1323. _In_ DWORD dwCookie);
  1324. HRESULT ( STDMETHODCALLTYPE *RegisterOcclusionStatusWindow )(
  1325. IDXGIFactory2 * This,
  1326. /* [annotation][in] */
  1327. _In_ HWND WindowHandle,
  1328. /* [annotation][in] */
  1329. _In_ UINT wMsg,
  1330. /* [annotation][out] */
  1331. _Out_ DWORD *pdwCookie);
  1332. HRESULT ( STDMETHODCALLTYPE *RegisterOcclusionStatusEvent )(
  1333. IDXGIFactory2 * This,
  1334. /* [annotation][in] */
  1335. _In_ HANDLE hEvent,
  1336. /* [annotation][out] */
  1337. _Out_ DWORD *pdwCookie);
  1338. void ( STDMETHODCALLTYPE *UnregisterOcclusionStatus )(
  1339. IDXGIFactory2 * This,
  1340. /* [annotation][in] */
  1341. _In_ DWORD dwCookie);
  1342. HRESULT ( STDMETHODCALLTYPE *CreateSwapChainForComposition )(
  1343. IDXGIFactory2 * This,
  1344. /* [annotation][in] */
  1345. _In_ IUnknown *pDevice,
  1346. /* [annotation][in] */
  1347. _In_ const DXGI_SWAP_CHAIN_DESC1 *pDesc,
  1348. /* [annotation][in] */
  1349. _In_opt_ IDXGIOutput *pRestrictToOutput,
  1350. /* [annotation][out] */
  1351. _COM_Outptr_ IDXGISwapChain1 **ppSwapChain);
  1352. END_INTERFACE
  1353. } IDXGIFactory2Vtbl;
  1354. interface IDXGIFactory2
  1355. {
  1356. CONST_VTBL struct IDXGIFactory2Vtbl *lpVtbl;
  1357. };
  1358. #ifdef COBJMACROS
  1359. #define IDXGIFactory2_QueryInterface(This,riid,ppvObject) \
  1360. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  1361. #define IDXGIFactory2_AddRef(This) \
  1362. ( (This)->lpVtbl -> AddRef(This) )
  1363. #define IDXGIFactory2_Release(This) \
  1364. ( (This)->lpVtbl -> Release(This) )
  1365. #define IDXGIFactory2_SetPrivateData(This,Name,DataSize,pData) \
  1366. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  1367. #define IDXGIFactory2_SetPrivateDataInterface(This,Name,pUnknown) \
  1368. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  1369. #define IDXGIFactory2_GetPrivateData(This,Name,pDataSize,pData) \
  1370. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  1371. #define IDXGIFactory2_GetParent(This,riid,ppParent) \
  1372. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  1373. #define IDXGIFactory2_EnumAdapters(This,Adapter,ppAdapter) \
  1374. ( (This)->lpVtbl -> EnumAdapters(This,Adapter,ppAdapter) )
  1375. #define IDXGIFactory2_MakeWindowAssociation(This,WindowHandle,Flags) \
  1376. ( (This)->lpVtbl -> MakeWindowAssociation(This,WindowHandle,Flags) )
  1377. #define IDXGIFactory2_GetWindowAssociation(This,pWindowHandle) \
  1378. ( (This)->lpVtbl -> GetWindowAssociation(This,pWindowHandle) )
  1379. #define IDXGIFactory2_CreateSwapChain(This,pDevice,pDesc,ppSwapChain) \
  1380. ( (This)->lpVtbl -> CreateSwapChain(This,pDevice,pDesc,ppSwapChain) )
  1381. #define IDXGIFactory2_CreateSoftwareAdapter(This,Module,ppAdapter) \
  1382. ( (This)->lpVtbl -> CreateSoftwareAdapter(This,Module,ppAdapter) )
  1383. #define IDXGIFactory2_EnumAdapters1(This,Adapter,ppAdapter) \
  1384. ( (This)->lpVtbl -> EnumAdapters1(This,Adapter,ppAdapter) )
  1385. #define IDXGIFactory2_IsCurrent(This) \
  1386. ( (This)->lpVtbl -> IsCurrent(This) )
  1387. #define IDXGIFactory2_IsWindowedStereoEnabled(This) \
  1388. ( (This)->lpVtbl -> IsWindowedStereoEnabled(This) )
  1389. #define IDXGIFactory2_CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) \
  1390. ( (This)->lpVtbl -> CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) )
  1391. #define IDXGIFactory2_CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) \
  1392. ( (This)->lpVtbl -> CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) )
  1393. #define IDXGIFactory2_GetSharedResourceAdapterLuid(This,hResource,pLuid) \
  1394. ( (This)->lpVtbl -> GetSharedResourceAdapterLuid(This,hResource,pLuid) )
  1395. #define IDXGIFactory2_RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) \
  1396. ( (This)->lpVtbl -> RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) )
  1397. #define IDXGIFactory2_RegisterStereoStatusEvent(This,hEvent,pdwCookie) \
  1398. ( (This)->lpVtbl -> RegisterStereoStatusEvent(This,hEvent,pdwCookie) )
  1399. #define IDXGIFactory2_UnregisterStereoStatus(This,dwCookie) \
  1400. ( (This)->lpVtbl -> UnregisterStereoStatus(This,dwCookie) )
  1401. #define IDXGIFactory2_RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) \
  1402. ( (This)->lpVtbl -> RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) )
  1403. #define IDXGIFactory2_RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) \
  1404. ( (This)->lpVtbl -> RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) )
  1405. #define IDXGIFactory2_UnregisterOcclusionStatus(This,dwCookie) \
  1406. ( (This)->lpVtbl -> UnregisterOcclusionStatus(This,dwCookie) )
  1407. #define IDXGIFactory2_CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) \
  1408. ( (This)->lpVtbl -> CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) )
  1409. #endif /* COBJMACROS */
  1410. #endif /* C style interface */
  1411. #endif /* __IDXGIFactory2_INTERFACE_DEFINED__ */
  1412. /* interface __MIDL_itf_dxgi1_2_0000_0007 */
  1413. /* [local] */
  1414. typedef
  1415. enum DXGI_GRAPHICS_PREEMPTION_GRANULARITY
  1416. {
  1417. DXGI_GRAPHICS_PREEMPTION_DMA_BUFFER_BOUNDARY = 0,
  1418. DXGI_GRAPHICS_PREEMPTION_PRIMITIVE_BOUNDARY = 1,
  1419. DXGI_GRAPHICS_PREEMPTION_TRIANGLE_BOUNDARY = 2,
  1420. DXGI_GRAPHICS_PREEMPTION_PIXEL_BOUNDARY = 3,
  1421. DXGI_GRAPHICS_PREEMPTION_INSTRUCTION_BOUNDARY = 4
  1422. } DXGI_GRAPHICS_PREEMPTION_GRANULARITY;
  1423. typedef
  1424. enum DXGI_COMPUTE_PREEMPTION_GRANULARITY
  1425. {
  1426. DXGI_COMPUTE_PREEMPTION_DMA_BUFFER_BOUNDARY = 0,
  1427. DXGI_COMPUTE_PREEMPTION_DISPATCH_BOUNDARY = 1,
  1428. DXGI_COMPUTE_PREEMPTION_THREAD_GROUP_BOUNDARY = 2,
  1429. DXGI_COMPUTE_PREEMPTION_THREAD_BOUNDARY = 3,
  1430. DXGI_COMPUTE_PREEMPTION_INSTRUCTION_BOUNDARY = 4
  1431. } DXGI_COMPUTE_PREEMPTION_GRANULARITY;
  1432. typedef struct DXGI_ADAPTER_DESC2
  1433. {
  1434. WCHAR Description[ 128 ];
  1435. UINT VendorId;
  1436. UINT DeviceId;
  1437. UINT SubSysId;
  1438. UINT Revision;
  1439. SIZE_T DedicatedVideoMemory;
  1440. SIZE_T DedicatedSystemMemory;
  1441. SIZE_T SharedSystemMemory;
  1442. LUID AdapterLuid;
  1443. UINT Flags;
  1444. DXGI_GRAPHICS_PREEMPTION_GRANULARITY GraphicsPreemptionGranularity;
  1445. DXGI_COMPUTE_PREEMPTION_GRANULARITY ComputePreemptionGranularity;
  1446. } DXGI_ADAPTER_DESC2;
  1447. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_2_0000_0007_v0_0_c_ifspec;
  1448. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_2_0000_0007_v0_0_s_ifspec;
  1449. #ifndef __IDXGIAdapter2_INTERFACE_DEFINED__
  1450. #define __IDXGIAdapter2_INTERFACE_DEFINED__
  1451. /* interface IDXGIAdapter2 */
  1452. /* [unique][local][uuid][object] */
  1453. EXTERN_C const IID IID_IDXGIAdapter2;
  1454. #if defined(__cplusplus) && !defined(CINTERFACE)
  1455. MIDL_INTERFACE("0AA1AE0A-FA0E-4B84-8644-E05FF8E5ACB5")
  1456. IDXGIAdapter2 : public IDXGIAdapter1
  1457. {
  1458. public:
  1459. virtual HRESULT STDMETHODCALLTYPE GetDesc2(
  1460. /* [annotation][out] */
  1461. _Out_ DXGI_ADAPTER_DESC2 *pDesc) = 0;
  1462. };
  1463. #else /* C style interface */
  1464. typedef struct IDXGIAdapter2Vtbl
  1465. {
  1466. BEGIN_INTERFACE
  1467. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  1468. IDXGIAdapter2 * This,
  1469. /* [in] */ REFIID riid,
  1470. /* [annotation][iid_is][out] */
  1471. _COM_Outptr_ void **ppvObject);
  1472. ULONG ( STDMETHODCALLTYPE *AddRef )(
  1473. IDXGIAdapter2 * This);
  1474. ULONG ( STDMETHODCALLTYPE *Release )(
  1475. IDXGIAdapter2 * This);
  1476. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  1477. IDXGIAdapter2 * This,
  1478. /* [annotation][in] */
  1479. _In_ REFGUID Name,
  1480. /* [in] */ UINT DataSize,
  1481. /* [annotation][in] */
  1482. _In_reads_bytes_(DataSize) const void *pData);
  1483. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  1484. IDXGIAdapter2 * This,
  1485. /* [annotation][in] */
  1486. _In_ REFGUID Name,
  1487. /* [annotation][in] */
  1488. _In_opt_ const IUnknown *pUnknown);
  1489. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  1490. IDXGIAdapter2 * This,
  1491. /* [annotation][in] */
  1492. _In_ REFGUID Name,
  1493. /* [annotation][out][in] */
  1494. _Inout_ UINT *pDataSize,
  1495. /* [annotation][out] */
  1496. _Out_writes_bytes_(*pDataSize) void *pData);
  1497. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  1498. IDXGIAdapter2 * This,
  1499. /* [annotation][in] */
  1500. _In_ REFIID riid,
  1501. /* [annotation][retval][out] */
  1502. _COM_Outptr_ void **ppParent);
  1503. HRESULT ( STDMETHODCALLTYPE *EnumOutputs )(
  1504. IDXGIAdapter2 * This,
  1505. /* [in] */ UINT Output,
  1506. /* [annotation][out][in] */
  1507. _COM_Outptr_ IDXGIOutput **ppOutput);
  1508. HRESULT ( STDMETHODCALLTYPE *GetDesc )(
  1509. IDXGIAdapter2 * This,
  1510. /* [annotation][out] */
  1511. _Out_ DXGI_ADAPTER_DESC *pDesc);
  1512. HRESULT ( STDMETHODCALLTYPE *CheckInterfaceSupport )(
  1513. IDXGIAdapter2 * This,
  1514. /* [annotation][in] */
  1515. _In_ REFGUID InterfaceName,
  1516. /* [annotation][out] */
  1517. _Out_ LARGE_INTEGER *pUMDVersion);
  1518. HRESULT ( STDMETHODCALLTYPE *GetDesc1 )(
  1519. IDXGIAdapter2 * This,
  1520. /* [annotation][out] */
  1521. _Out_ DXGI_ADAPTER_DESC1 *pDesc);
  1522. HRESULT ( STDMETHODCALLTYPE *GetDesc2 )(
  1523. IDXGIAdapter2 * This,
  1524. /* [annotation][out] */
  1525. _Out_ DXGI_ADAPTER_DESC2 *pDesc);
  1526. END_INTERFACE
  1527. } IDXGIAdapter2Vtbl;
  1528. interface IDXGIAdapter2
  1529. {
  1530. CONST_VTBL struct IDXGIAdapter2Vtbl *lpVtbl;
  1531. };
  1532. #ifdef COBJMACROS
  1533. #define IDXGIAdapter2_QueryInterface(This,riid,ppvObject) \
  1534. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  1535. #define IDXGIAdapter2_AddRef(This) \
  1536. ( (This)->lpVtbl -> AddRef(This) )
  1537. #define IDXGIAdapter2_Release(This) \
  1538. ( (This)->lpVtbl -> Release(This) )
  1539. #define IDXGIAdapter2_SetPrivateData(This,Name,DataSize,pData) \
  1540. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  1541. #define IDXGIAdapter2_SetPrivateDataInterface(This,Name,pUnknown) \
  1542. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  1543. #define IDXGIAdapter2_GetPrivateData(This,Name,pDataSize,pData) \
  1544. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  1545. #define IDXGIAdapter2_GetParent(This,riid,ppParent) \
  1546. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  1547. #define IDXGIAdapter2_EnumOutputs(This,Output,ppOutput) \
  1548. ( (This)->lpVtbl -> EnumOutputs(This,Output,ppOutput) )
  1549. #define IDXGIAdapter2_GetDesc(This,pDesc) \
  1550. ( (This)->lpVtbl -> GetDesc(This,pDesc) )
  1551. #define IDXGIAdapter2_CheckInterfaceSupport(This,InterfaceName,pUMDVersion) \
  1552. ( (This)->lpVtbl -> CheckInterfaceSupport(This,InterfaceName,pUMDVersion) )
  1553. #define IDXGIAdapter2_GetDesc1(This,pDesc) \
  1554. ( (This)->lpVtbl -> GetDesc1(This,pDesc) )
  1555. #define IDXGIAdapter2_GetDesc2(This,pDesc) \
  1556. ( (This)->lpVtbl -> GetDesc2(This,pDesc) )
  1557. #endif /* COBJMACROS */
  1558. #endif /* C style interface */
  1559. #endif /* __IDXGIAdapter2_INTERFACE_DEFINED__ */
  1560. #ifndef __IDXGIOutput1_INTERFACE_DEFINED__
  1561. #define __IDXGIOutput1_INTERFACE_DEFINED__
  1562. /* interface IDXGIOutput1 */
  1563. /* [unique][local][uuid][object] */
  1564. EXTERN_C const IID IID_IDXGIOutput1;
  1565. #if defined(__cplusplus) && !defined(CINTERFACE)
  1566. MIDL_INTERFACE("00cddea8-939b-4b83-a340-a685226666cc")
  1567. IDXGIOutput1 : public IDXGIOutput
  1568. {
  1569. public:
  1570. virtual HRESULT STDMETHODCALLTYPE GetDisplayModeList1(
  1571. /* [in] */ DXGI_FORMAT EnumFormat,
  1572. /* [in] */ UINT Flags,
  1573. /* [annotation][out][in] */
  1574. _Inout_ UINT *pNumModes,
  1575. /* [annotation][out] */
  1576. _Out_writes_to_opt_(*pNumModes,*pNumModes) DXGI_MODE_DESC1 *pDesc) = 0;
  1577. virtual HRESULT STDMETHODCALLTYPE FindClosestMatchingMode1(
  1578. /* [annotation][in] */
  1579. _In_ const DXGI_MODE_DESC1 *pModeToMatch,
  1580. /* [annotation][out] */
  1581. _Out_ DXGI_MODE_DESC1 *pClosestMatch,
  1582. /* [annotation][in] */
  1583. _In_opt_ IUnknown *pConcernedDevice) = 0;
  1584. virtual HRESULT STDMETHODCALLTYPE GetDisplaySurfaceData1(
  1585. /* [annotation][in] */
  1586. _In_ IDXGIResource *pDestination) = 0;
  1587. virtual HRESULT STDMETHODCALLTYPE DuplicateOutput(
  1588. /* [annotation][in] */
  1589. _In_ IUnknown *pDevice,
  1590. /* [annotation][out] */
  1591. _COM_Outptr_ IDXGIOutputDuplication **ppOutputDuplication) = 0;
  1592. };
  1593. #else /* C style interface */
  1594. typedef struct IDXGIOutput1Vtbl
  1595. {
  1596. BEGIN_INTERFACE
  1597. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  1598. IDXGIOutput1 * This,
  1599. /* [in] */ REFIID riid,
  1600. /* [annotation][iid_is][out] */
  1601. _COM_Outptr_ void **ppvObject);
  1602. ULONG ( STDMETHODCALLTYPE *AddRef )(
  1603. IDXGIOutput1 * This);
  1604. ULONG ( STDMETHODCALLTYPE *Release )(
  1605. IDXGIOutput1 * This);
  1606. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  1607. IDXGIOutput1 * This,
  1608. /* [annotation][in] */
  1609. _In_ REFGUID Name,
  1610. /* [in] */ UINT DataSize,
  1611. /* [annotation][in] */
  1612. _In_reads_bytes_(DataSize) const void *pData);
  1613. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  1614. IDXGIOutput1 * This,
  1615. /* [annotation][in] */
  1616. _In_ REFGUID Name,
  1617. /* [annotation][in] */
  1618. _In_opt_ const IUnknown *pUnknown);
  1619. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  1620. IDXGIOutput1 * This,
  1621. /* [annotation][in] */
  1622. _In_ REFGUID Name,
  1623. /* [annotation][out][in] */
  1624. _Inout_ UINT *pDataSize,
  1625. /* [annotation][out] */
  1626. _Out_writes_bytes_(*pDataSize) void *pData);
  1627. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  1628. IDXGIOutput1 * This,
  1629. /* [annotation][in] */
  1630. _In_ REFIID riid,
  1631. /* [annotation][retval][out] */
  1632. _COM_Outptr_ void **ppParent);
  1633. HRESULT ( STDMETHODCALLTYPE *GetDesc )(
  1634. IDXGIOutput1 * This,
  1635. /* [annotation][out] */
  1636. _Out_ DXGI_OUTPUT_DESC *pDesc);
  1637. HRESULT ( STDMETHODCALLTYPE *GetDisplayModeList )(
  1638. IDXGIOutput1 * This,
  1639. /* [in] */ DXGI_FORMAT EnumFormat,
  1640. /* [in] */ UINT Flags,
  1641. /* [annotation][out][in] */
  1642. _Inout_ UINT *pNumModes,
  1643. /* [annotation][out] */
  1644. _Out_writes_to_opt_(*pNumModes,*pNumModes) DXGI_MODE_DESC *pDesc);
  1645. HRESULT ( STDMETHODCALLTYPE *FindClosestMatchingMode )(
  1646. IDXGIOutput1 * This,
  1647. /* [annotation][in] */
  1648. _In_ const DXGI_MODE_DESC *pModeToMatch,
  1649. /* [annotation][out] */
  1650. _Out_ DXGI_MODE_DESC *pClosestMatch,
  1651. /* [annotation][in] */
  1652. _In_opt_ IUnknown *pConcernedDevice);
  1653. HRESULT ( STDMETHODCALLTYPE *WaitForVBlank )(
  1654. IDXGIOutput1 * This);
  1655. HRESULT ( STDMETHODCALLTYPE *TakeOwnership )(
  1656. IDXGIOutput1 * This,
  1657. /* [annotation][in] */
  1658. _In_ IUnknown *pDevice,
  1659. BOOL Exclusive);
  1660. void ( STDMETHODCALLTYPE *ReleaseOwnership )(
  1661. IDXGIOutput1 * This);
  1662. HRESULT ( STDMETHODCALLTYPE *GetGammaControlCapabilities )(
  1663. IDXGIOutput1 * This,
  1664. /* [annotation][out] */
  1665. _Out_ DXGI_GAMMA_CONTROL_CAPABILITIES *pGammaCaps);
  1666. HRESULT ( STDMETHODCALLTYPE *SetGammaControl )(
  1667. IDXGIOutput1 * This,
  1668. /* [annotation][in] */
  1669. _In_ const DXGI_GAMMA_CONTROL *pArray);
  1670. HRESULT ( STDMETHODCALLTYPE *GetGammaControl )(
  1671. IDXGIOutput1 * This,
  1672. /* [annotation][out] */
  1673. _Out_ DXGI_GAMMA_CONTROL *pArray);
  1674. HRESULT ( STDMETHODCALLTYPE *SetDisplaySurface )(
  1675. IDXGIOutput1 * This,
  1676. /* [annotation][in] */
  1677. _In_ IDXGISurface *pScanoutSurface);
  1678. HRESULT ( STDMETHODCALLTYPE *GetDisplaySurfaceData )(
  1679. IDXGIOutput1 * This,
  1680. /* [annotation][in] */
  1681. _In_ IDXGISurface *pDestination);
  1682. HRESULT ( STDMETHODCALLTYPE *GetFrameStatistics )(
  1683. IDXGIOutput1 * This,
  1684. /* [annotation][out] */
  1685. _Out_ DXGI_FRAME_STATISTICS *pStats);
  1686. HRESULT ( STDMETHODCALLTYPE *GetDisplayModeList1 )(
  1687. IDXGIOutput1 * This,
  1688. /* [in] */ DXGI_FORMAT EnumFormat,
  1689. /* [in] */ UINT Flags,
  1690. /* [annotation][out][in] */
  1691. _Inout_ UINT *pNumModes,
  1692. /* [annotation][out] */
  1693. _Out_writes_to_opt_(*pNumModes,*pNumModes) DXGI_MODE_DESC1 *pDesc);
  1694. HRESULT ( STDMETHODCALLTYPE *FindClosestMatchingMode1 )(
  1695. IDXGIOutput1 * This,
  1696. /* [annotation][in] */
  1697. _In_ const DXGI_MODE_DESC1 *pModeToMatch,
  1698. /* [annotation][out] */
  1699. _Out_ DXGI_MODE_DESC1 *pClosestMatch,
  1700. /* [annotation][in] */
  1701. _In_opt_ IUnknown *pConcernedDevice);
  1702. HRESULT ( STDMETHODCALLTYPE *GetDisplaySurfaceData1 )(
  1703. IDXGIOutput1 * This,
  1704. /* [annotation][in] */
  1705. _In_ IDXGIResource *pDestination);
  1706. HRESULT ( STDMETHODCALLTYPE *DuplicateOutput )(
  1707. IDXGIOutput1 * This,
  1708. /* [annotation][in] */
  1709. _In_ IUnknown *pDevice,
  1710. /* [annotation][out] */
  1711. _COM_Outptr_ IDXGIOutputDuplication **ppOutputDuplication);
  1712. END_INTERFACE
  1713. } IDXGIOutput1Vtbl;
  1714. interface IDXGIOutput1
  1715. {
  1716. CONST_VTBL struct IDXGIOutput1Vtbl *lpVtbl;
  1717. };
  1718. #ifdef COBJMACROS
  1719. #define IDXGIOutput1_QueryInterface(This,riid,ppvObject) \
  1720. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  1721. #define IDXGIOutput1_AddRef(This) \
  1722. ( (This)->lpVtbl -> AddRef(This) )
  1723. #define IDXGIOutput1_Release(This) \
  1724. ( (This)->lpVtbl -> Release(This) )
  1725. #define IDXGIOutput1_SetPrivateData(This,Name,DataSize,pData) \
  1726. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  1727. #define IDXGIOutput1_SetPrivateDataInterface(This,Name,pUnknown) \
  1728. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  1729. #define IDXGIOutput1_GetPrivateData(This,Name,pDataSize,pData) \
  1730. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  1731. #define IDXGIOutput1_GetParent(This,riid,ppParent) \
  1732. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  1733. #define IDXGIOutput1_GetDesc(This,pDesc) \
  1734. ( (This)->lpVtbl -> GetDesc(This,pDesc) )
  1735. #define IDXGIOutput1_GetDisplayModeList(This,EnumFormat,Flags,pNumModes,pDesc) \
  1736. ( (This)->lpVtbl -> GetDisplayModeList(This,EnumFormat,Flags,pNumModes,pDesc) )
  1737. #define IDXGIOutput1_FindClosestMatchingMode(This,pModeToMatch,pClosestMatch,pConcernedDevice) \
  1738. ( (This)->lpVtbl -> FindClosestMatchingMode(This,pModeToMatch,pClosestMatch,pConcernedDevice) )
  1739. #define IDXGIOutput1_WaitForVBlank(This) \
  1740. ( (This)->lpVtbl -> WaitForVBlank(This) )
  1741. #define IDXGIOutput1_TakeOwnership(This,pDevice,Exclusive) \
  1742. ( (This)->lpVtbl -> TakeOwnership(This,pDevice,Exclusive) )
  1743. #define IDXGIOutput1_ReleaseOwnership(This) \
  1744. ( (This)->lpVtbl -> ReleaseOwnership(This) )
  1745. #define IDXGIOutput1_GetGammaControlCapabilities(This,pGammaCaps) \
  1746. ( (This)->lpVtbl -> GetGammaControlCapabilities(This,pGammaCaps) )
  1747. #define IDXGIOutput1_SetGammaControl(This,pArray) \
  1748. ( (This)->lpVtbl -> SetGammaControl(This,pArray) )
  1749. #define IDXGIOutput1_GetGammaControl(This,pArray) \
  1750. ( (This)->lpVtbl -> GetGammaControl(This,pArray) )
  1751. #define IDXGIOutput1_SetDisplaySurface(This,pScanoutSurface) \
  1752. ( (This)->lpVtbl -> SetDisplaySurface(This,pScanoutSurface) )
  1753. #define IDXGIOutput1_GetDisplaySurfaceData(This,pDestination) \
  1754. ( (This)->lpVtbl -> GetDisplaySurfaceData(This,pDestination) )
  1755. #define IDXGIOutput1_GetFrameStatistics(This,pStats) \
  1756. ( (This)->lpVtbl -> GetFrameStatistics(This,pStats) )
  1757. #define IDXGIOutput1_GetDisplayModeList1(This,EnumFormat,Flags,pNumModes,pDesc) \
  1758. ( (This)->lpVtbl -> GetDisplayModeList1(This,EnumFormat,Flags,pNumModes,pDesc) )
  1759. #define IDXGIOutput1_FindClosestMatchingMode1(This,pModeToMatch,pClosestMatch,pConcernedDevice) \
  1760. ( (This)->lpVtbl -> FindClosestMatchingMode1(This,pModeToMatch,pClosestMatch,pConcernedDevice) )
  1761. #define IDXGIOutput1_GetDisplaySurfaceData1(This,pDestination) \
  1762. ( (This)->lpVtbl -> GetDisplaySurfaceData1(This,pDestination) )
  1763. #define IDXGIOutput1_DuplicateOutput(This,pDevice,ppOutputDuplication) \
  1764. ( (This)->lpVtbl -> DuplicateOutput(This,pDevice,ppOutputDuplication) )
  1765. #endif /* COBJMACROS */
  1766. #endif /* C style interface */
  1767. #endif /* __IDXGIOutput1_INTERFACE_DEFINED__ */
  1768. /* interface __MIDL_itf_dxgi1_2_0000_0009 */
  1769. /* [local] */
  1770. #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
  1771. // BK - pragma endregion
  1772. DEFINE_GUID(IID_IDXGIDisplayControl,0xea9dbf1a,0xc88e,0x4486,0x85,0x4a,0x98,0xaa,0x01,0x38,0xf3,0x0c);
  1773. DEFINE_GUID(IID_IDXGIOutputDuplication,0x191cfac3,0xa341,0x470d,0xb2,0x6e,0xa8,0x64,0xf4,0x28,0x31,0x9c);
  1774. DEFINE_GUID(IID_IDXGISurface2,0xaba496dd,0xb617,0x4cb8,0xa8,0x66,0xbc,0x44,0xd7,0xeb,0x1f,0xa2);
  1775. DEFINE_GUID(IID_IDXGIResource1,0x30961379,0x4609,0x4a41,0x99,0x8e,0x54,0xfe,0x56,0x7e,0xe0,0xc1);
  1776. DEFINE_GUID(IID_IDXGIDevice2,0x05008617,0xfbfd,0x4051,0xa7,0x90,0x14,0x48,0x84,0xb4,0xf6,0xa9);
  1777. DEFINE_GUID(IID_IDXGISwapChain1,0x790a45f7,0x0d42,0x4876,0x98,0x3a,0x0a,0x55,0xcf,0xe6,0xf4,0xaa);
  1778. DEFINE_GUID(IID_IDXGIFactory2,0x50c83a1c,0xe072,0x4c48,0x87,0xb0,0x36,0x30,0xfa,0x36,0xa6,0xd0);
  1779. DEFINE_GUID(IID_IDXGIAdapter2,0x0AA1AE0A,0xFA0E,0x4B84,0x86,0x44,0xE0,0x5F,0xF8,0xE5,0xAC,0xB5);
  1780. DEFINE_GUID(IID_IDXGIOutput1,0x00cddea8,0x939b,0x4b83,0xa3,0x40,0xa6,0x85,0x22,0x66,0x66,0xcc);
  1781. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_2_0000_0009_v0_0_c_ifspec;
  1782. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_2_0000_0009_v0_0_s_ifspec;
  1783. /* Additional Prototypes for ALL interfaces */
  1784. /* end of Additional Prototypes */
  1785. #ifdef __cplusplus
  1786. }
  1787. #endif
  1788. #endif