dxgi1_2.h 89 KB

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