dxgi.h 90 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958
  1. /* this ALWAYS GENERATED file contains the definitions for the interfaces */
  2. /* File created by MIDL compiler version 8.01.0622 */
  3. /* @@MIDL_FILE_HEADING( ) */
  4. /* verify that the <rpcndr.h> version is high enough to compile this file*/
  5. #ifndef __REQUIRED_RPCNDR_H_VERSION__
  6. #define __REQUIRED_RPCNDR_H_VERSION__ 500
  7. #endif
  8. /* verify that the <rpcsal.h> version is high enough to compile this file*/
  9. #ifndef __REQUIRED_RPCSAL_H_VERSION__
  10. #define __REQUIRED_RPCSAL_H_VERSION__ 100
  11. #endif
  12. #include "rpc.h"
  13. #include "rpcndr.h"
  14. #ifndef __RPCNDR_H_VERSION__
  15. #error this stub requires an updated version of <rpcndr.h>
  16. #endif /* __RPCNDR_H_VERSION__ */
  17. #ifndef COM_NO_WINDOWS_H
  18. #include "windows.h"
  19. #include "ole2.h"
  20. #endif /*COM_NO_WINDOWS_H*/
  21. #ifndef __dxgi_h__
  22. #define __dxgi_h__
  23. #if defined(_MSC_VER) && (_MSC_VER >= 1020)
  24. #pragma once
  25. #endif
  26. /* Forward Declarations */
  27. #ifndef __IDXGIObject_FWD_DEFINED__
  28. #define __IDXGIObject_FWD_DEFINED__
  29. typedef interface IDXGIObject IDXGIObject;
  30. #endif /* __IDXGIObject_FWD_DEFINED__ */
  31. #ifndef __IDXGIDeviceSubObject_FWD_DEFINED__
  32. #define __IDXGIDeviceSubObject_FWD_DEFINED__
  33. typedef interface IDXGIDeviceSubObject IDXGIDeviceSubObject;
  34. #endif /* __IDXGIDeviceSubObject_FWD_DEFINED__ */
  35. #ifndef __IDXGIResource_FWD_DEFINED__
  36. #define __IDXGIResource_FWD_DEFINED__
  37. typedef interface IDXGIResource IDXGIResource;
  38. #endif /* __IDXGIResource_FWD_DEFINED__ */
  39. #ifndef __IDXGIKeyedMutex_FWD_DEFINED__
  40. #define __IDXGIKeyedMutex_FWD_DEFINED__
  41. typedef interface IDXGIKeyedMutex IDXGIKeyedMutex;
  42. #endif /* __IDXGIKeyedMutex_FWD_DEFINED__ */
  43. #ifndef __IDXGISurface_FWD_DEFINED__
  44. #define __IDXGISurface_FWD_DEFINED__
  45. typedef interface IDXGISurface IDXGISurface;
  46. #endif /* __IDXGISurface_FWD_DEFINED__ */
  47. #ifndef __IDXGISurface1_FWD_DEFINED__
  48. #define __IDXGISurface1_FWD_DEFINED__
  49. typedef interface IDXGISurface1 IDXGISurface1;
  50. #endif /* __IDXGISurface1_FWD_DEFINED__ */
  51. #ifndef __IDXGIAdapter_FWD_DEFINED__
  52. #define __IDXGIAdapter_FWD_DEFINED__
  53. typedef interface IDXGIAdapter IDXGIAdapter;
  54. #endif /* __IDXGIAdapter_FWD_DEFINED__ */
  55. #ifndef __IDXGIOutput_FWD_DEFINED__
  56. #define __IDXGIOutput_FWD_DEFINED__
  57. typedef interface IDXGIOutput IDXGIOutput;
  58. #endif /* __IDXGIOutput_FWD_DEFINED__ */
  59. #ifndef __IDXGISwapChain_FWD_DEFINED__
  60. #define __IDXGISwapChain_FWD_DEFINED__
  61. typedef interface IDXGISwapChain IDXGISwapChain;
  62. #endif /* __IDXGISwapChain_FWD_DEFINED__ */
  63. #ifndef __IDXGIFactory_FWD_DEFINED__
  64. #define __IDXGIFactory_FWD_DEFINED__
  65. typedef interface IDXGIFactory IDXGIFactory;
  66. #endif /* __IDXGIFactory_FWD_DEFINED__ */
  67. #ifndef __IDXGIDevice_FWD_DEFINED__
  68. #define __IDXGIDevice_FWD_DEFINED__
  69. typedef interface IDXGIDevice IDXGIDevice;
  70. #endif /* __IDXGIDevice_FWD_DEFINED__ */
  71. #ifndef __IDXGIFactory1_FWD_DEFINED__
  72. #define __IDXGIFactory1_FWD_DEFINED__
  73. typedef interface IDXGIFactory1 IDXGIFactory1;
  74. #endif /* __IDXGIFactory1_FWD_DEFINED__ */
  75. #ifndef __IDXGIAdapter1_FWD_DEFINED__
  76. #define __IDXGIAdapter1_FWD_DEFINED__
  77. typedef interface IDXGIAdapter1 IDXGIAdapter1;
  78. #endif /* __IDXGIAdapter1_FWD_DEFINED__ */
  79. #ifndef __IDXGIDevice1_FWD_DEFINED__
  80. #define __IDXGIDevice1_FWD_DEFINED__
  81. typedef interface IDXGIDevice1 IDXGIDevice1;
  82. #endif /* __IDXGIDevice1_FWD_DEFINED__ */
  83. /* header files for imported files */
  84. #include "oaidl.h"
  85. #include "ocidl.h"
  86. #include "dxgicommon.h"
  87. #include "dxgitype.h"
  88. #ifdef __cplusplus
  89. extern "C"{
  90. #endif
  91. /* interface __MIDL_itf_dxgi_0000_0000 */
  92. /* [local] */
  93. #include <winapifamily.h>
  94. #define DXGI_CPU_ACCESS_NONE ( 0 )
  95. #define DXGI_CPU_ACCESS_DYNAMIC ( 1 )
  96. #define DXGI_CPU_ACCESS_READ_WRITE ( 2 )
  97. #define DXGI_CPU_ACCESS_SCRATCH ( 3 )
  98. #define DXGI_CPU_ACCESS_FIELD 15
  99. #define DXGI_USAGE_SHADER_INPUT 0x00000010UL
  100. #define DXGI_USAGE_RENDER_TARGET_OUTPUT 0x00000020UL
  101. #define DXGI_USAGE_BACK_BUFFER 0x00000040UL
  102. #define DXGI_USAGE_SHARED 0x00000080UL
  103. #define DXGI_USAGE_READ_ONLY 0x00000100UL
  104. #define DXGI_USAGE_DISCARD_ON_PRESENT 0x00000200UL
  105. #define DXGI_USAGE_UNORDERED_ACCESS 0x00000400UL
  106. typedef UINT DXGI_USAGE;
  107. typedef struct DXGI_FRAME_STATISTICS
  108. {
  109. UINT PresentCount;
  110. UINT PresentRefreshCount;
  111. UINT SyncRefreshCount;
  112. LARGE_INTEGER SyncQPCTime;
  113. LARGE_INTEGER SyncGPUTime;
  114. } DXGI_FRAME_STATISTICS;
  115. typedef struct DXGI_MAPPED_RECT
  116. {
  117. INT Pitch;
  118. BYTE *pBits;
  119. } DXGI_MAPPED_RECT;
  120. #ifdef __midl
  121. #ifndef LUID_DEFINED
  122. #define LUID_DEFINED 1
  123. typedef struct _LUID
  124. {
  125. DWORD LowPart;
  126. LONG HighPart;
  127. } LUID;
  128. typedef struct _LUID *PLUID;
  129. #endif
  130. #endif
  131. typedef struct DXGI_ADAPTER_DESC
  132. {
  133. WCHAR Description[ 128 ];
  134. UINT VendorId;
  135. UINT DeviceId;
  136. UINT SubSysId;
  137. UINT Revision;
  138. SIZE_T DedicatedVideoMemory;
  139. SIZE_T DedicatedSystemMemory;
  140. SIZE_T SharedSystemMemory;
  141. LUID AdapterLuid;
  142. } DXGI_ADAPTER_DESC;
  143. #if !defined(HMONITOR_DECLARED) && !defined(HMONITOR) && (WINVER < 0x0500)
  144. #define HMONITOR_DECLARED
  145. #if 0
  146. typedef HANDLE HMONITOR;
  147. #endif
  148. DECLARE_HANDLE(HMONITOR);
  149. #endif
  150. typedef struct DXGI_OUTPUT_DESC
  151. {
  152. WCHAR DeviceName[ 32 ];
  153. RECT DesktopCoordinates;
  154. BOOL AttachedToDesktop;
  155. DXGI_MODE_ROTATION Rotation;
  156. HMONITOR Monitor;
  157. } DXGI_OUTPUT_DESC;
  158. typedef struct DXGI_SHARED_RESOURCE
  159. {
  160. HANDLE Handle;
  161. } DXGI_SHARED_RESOURCE;
  162. #define DXGI_RESOURCE_PRIORITY_MINIMUM ( 0x28000000 )
  163. #define DXGI_RESOURCE_PRIORITY_LOW ( 0x50000000 )
  164. #define DXGI_RESOURCE_PRIORITY_NORMAL ( 0x78000000 )
  165. #define DXGI_RESOURCE_PRIORITY_HIGH ( 0xa0000000 )
  166. #define DXGI_RESOURCE_PRIORITY_MAXIMUM ( 0xc8000000 )
  167. typedef
  168. enum DXGI_RESIDENCY
  169. {
  170. DXGI_RESIDENCY_FULLY_RESIDENT = 1,
  171. DXGI_RESIDENCY_RESIDENT_IN_SHARED_MEMORY = 2,
  172. DXGI_RESIDENCY_EVICTED_TO_DISK = 3
  173. } DXGI_RESIDENCY;
  174. typedef struct DXGI_SURFACE_DESC
  175. {
  176. UINT Width;
  177. UINT Height;
  178. DXGI_FORMAT Format;
  179. DXGI_SAMPLE_DESC SampleDesc;
  180. } DXGI_SURFACE_DESC;
  181. typedef
  182. enum DXGI_SWAP_EFFECT
  183. {
  184. DXGI_SWAP_EFFECT_DISCARD = 0,
  185. DXGI_SWAP_EFFECT_SEQUENTIAL = 1,
  186. DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL = 3,
  187. DXGI_SWAP_EFFECT_FLIP_DISCARD = 4
  188. } DXGI_SWAP_EFFECT;
  189. typedef
  190. enum DXGI_SWAP_CHAIN_FLAG
  191. {
  192. DXGI_SWAP_CHAIN_FLAG_NONPREROTATED = 1,
  193. DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH = 2,
  194. DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE = 4,
  195. DXGI_SWAP_CHAIN_FLAG_RESTRICTED_CONTENT = 8,
  196. DXGI_SWAP_CHAIN_FLAG_RESTRICT_SHARED_RESOURCE_DRIVER = 16,
  197. DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY = 32,
  198. DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT = 64,
  199. DXGI_SWAP_CHAIN_FLAG_FOREGROUND_LAYER = 128,
  200. DXGI_SWAP_CHAIN_FLAG_FULLSCREEN_VIDEO = 256,
  201. DXGI_SWAP_CHAIN_FLAG_YUV_VIDEO = 512,
  202. DXGI_SWAP_CHAIN_FLAG_HW_PROTECTED = 1024,
  203. DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING = 2048,
  204. DXGI_SWAP_CHAIN_FLAG_RESTRICTED_TO_ALL_HOLOGRAPHIC_DISPLAYS = 4096
  205. } DXGI_SWAP_CHAIN_FLAG;
  206. typedef struct DXGI_SWAP_CHAIN_DESC
  207. {
  208. DXGI_MODE_DESC BufferDesc;
  209. DXGI_SAMPLE_DESC SampleDesc;
  210. DXGI_USAGE BufferUsage;
  211. UINT BufferCount;
  212. HWND OutputWindow;
  213. BOOL Windowed;
  214. DXGI_SWAP_EFFECT SwapEffect;
  215. UINT Flags;
  216. } DXGI_SWAP_CHAIN_DESC;
  217. extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0000_v0_0_c_ifspec;
  218. extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0000_v0_0_s_ifspec;
  219. #ifndef __IDXGIObject_INTERFACE_DEFINED__
  220. #define __IDXGIObject_INTERFACE_DEFINED__
  221. /* interface IDXGIObject */
  222. /* [unique][local][uuid][object] */
  223. EXTERN_C const IID IID_IDXGIObject;
  224. #if defined(__cplusplus) && !defined(CINTERFACE)
  225. MIDL_INTERFACE("aec22fb8-76f3-4639-9be0-28eb43a67a2e")
  226. IDXGIObject : public IUnknown
  227. {
  228. public:
  229. virtual HRESULT STDMETHODCALLTYPE SetPrivateData(
  230. /* [annotation][in] */
  231. _In_ REFGUID Name,
  232. /* [in] */ UINT DataSize,
  233. /* [annotation][in] */
  234. _In_reads_bytes_(DataSize) const void *pData) = 0;
  235. virtual HRESULT STDMETHODCALLTYPE SetPrivateDataInterface(
  236. /* [annotation][in] */
  237. _In_ REFGUID Name,
  238. /* [annotation][in] */
  239. _In_opt_ const IUnknown *pUnknown) = 0;
  240. virtual HRESULT STDMETHODCALLTYPE GetPrivateData(
  241. /* [annotation][in] */
  242. _In_ REFGUID Name,
  243. /* [annotation][out][in] */
  244. _Inout_ UINT *pDataSize,
  245. /* [annotation][out] */
  246. _Out_writes_bytes_(*pDataSize) void *pData) = 0;
  247. virtual HRESULT STDMETHODCALLTYPE GetParent(
  248. /* [annotation][in] */
  249. _In_ REFIID riid,
  250. /* [annotation][retval][out] */
  251. _COM_Outptr_ void **ppParent) = 0;
  252. };
  253. #else /* C style interface */
  254. typedef struct IDXGIObjectVtbl
  255. {
  256. BEGIN_INTERFACE
  257. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  258. IDXGIObject * This,
  259. /* [in] */ REFIID riid,
  260. /* [annotation][iid_is][out] */
  261. _COM_Outptr_ void **ppvObject);
  262. ULONG ( STDMETHODCALLTYPE *AddRef )(
  263. IDXGIObject * This);
  264. ULONG ( STDMETHODCALLTYPE *Release )(
  265. IDXGIObject * This);
  266. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  267. IDXGIObject * This,
  268. /* [annotation][in] */
  269. _In_ REFGUID Name,
  270. /* [in] */ UINT DataSize,
  271. /* [annotation][in] */
  272. _In_reads_bytes_(DataSize) const void *pData);
  273. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  274. IDXGIObject * This,
  275. /* [annotation][in] */
  276. _In_ REFGUID Name,
  277. /* [annotation][in] */
  278. _In_opt_ const IUnknown *pUnknown);
  279. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  280. IDXGIObject * This,
  281. /* [annotation][in] */
  282. _In_ REFGUID Name,
  283. /* [annotation][out][in] */
  284. _Inout_ UINT *pDataSize,
  285. /* [annotation][out] */
  286. _Out_writes_bytes_(*pDataSize) void *pData);
  287. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  288. IDXGIObject * This,
  289. /* [annotation][in] */
  290. _In_ REFIID riid,
  291. /* [annotation][retval][out] */
  292. _COM_Outptr_ void **ppParent);
  293. END_INTERFACE
  294. } IDXGIObjectVtbl;
  295. interface IDXGIObject
  296. {
  297. CONST_VTBL struct IDXGIObjectVtbl *lpVtbl;
  298. };
  299. #ifdef COBJMACROS
  300. #define IDXGIObject_QueryInterface(This,riid,ppvObject) \
  301. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  302. #define IDXGIObject_AddRef(This) \
  303. ( (This)->lpVtbl -> AddRef(This) )
  304. #define IDXGIObject_Release(This) \
  305. ( (This)->lpVtbl -> Release(This) )
  306. #define IDXGIObject_SetPrivateData(This,Name,DataSize,pData) \
  307. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  308. #define IDXGIObject_SetPrivateDataInterface(This,Name,pUnknown) \
  309. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  310. #define IDXGIObject_GetPrivateData(This,Name,pDataSize,pData) \
  311. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  312. #define IDXGIObject_GetParent(This,riid,ppParent) \
  313. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  314. #endif /* COBJMACROS */
  315. #endif /* C style interface */
  316. #endif /* __IDXGIObject_INTERFACE_DEFINED__ */
  317. #ifndef __IDXGIDeviceSubObject_INTERFACE_DEFINED__
  318. #define __IDXGIDeviceSubObject_INTERFACE_DEFINED__
  319. /* interface IDXGIDeviceSubObject */
  320. /* [unique][local][uuid][object] */
  321. EXTERN_C const IID IID_IDXGIDeviceSubObject;
  322. #if defined(__cplusplus) && !defined(CINTERFACE)
  323. MIDL_INTERFACE("3d3e0379-f9de-4d58-bb6c-18d62992f1a6")
  324. IDXGIDeviceSubObject : public IDXGIObject
  325. {
  326. public:
  327. virtual HRESULT STDMETHODCALLTYPE GetDevice(
  328. /* [annotation][in] */
  329. _In_ REFIID riid,
  330. /* [annotation][retval][out] */
  331. _COM_Outptr_ void **ppDevice) = 0;
  332. };
  333. #else /* C style interface */
  334. typedef struct IDXGIDeviceSubObjectVtbl
  335. {
  336. BEGIN_INTERFACE
  337. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  338. IDXGIDeviceSubObject * This,
  339. /* [in] */ REFIID riid,
  340. /* [annotation][iid_is][out] */
  341. _COM_Outptr_ void **ppvObject);
  342. ULONG ( STDMETHODCALLTYPE *AddRef )(
  343. IDXGIDeviceSubObject * This);
  344. ULONG ( STDMETHODCALLTYPE *Release )(
  345. IDXGIDeviceSubObject * This);
  346. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  347. IDXGIDeviceSubObject * This,
  348. /* [annotation][in] */
  349. _In_ REFGUID Name,
  350. /* [in] */ UINT DataSize,
  351. /* [annotation][in] */
  352. _In_reads_bytes_(DataSize) const void *pData);
  353. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  354. IDXGIDeviceSubObject * This,
  355. /* [annotation][in] */
  356. _In_ REFGUID Name,
  357. /* [annotation][in] */
  358. _In_opt_ const IUnknown *pUnknown);
  359. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  360. IDXGIDeviceSubObject * This,
  361. /* [annotation][in] */
  362. _In_ REFGUID Name,
  363. /* [annotation][out][in] */
  364. _Inout_ UINT *pDataSize,
  365. /* [annotation][out] */
  366. _Out_writes_bytes_(*pDataSize) void *pData);
  367. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  368. IDXGIDeviceSubObject * This,
  369. /* [annotation][in] */
  370. _In_ REFIID riid,
  371. /* [annotation][retval][out] */
  372. _COM_Outptr_ void **ppParent);
  373. HRESULT ( STDMETHODCALLTYPE *GetDevice )(
  374. IDXGIDeviceSubObject * This,
  375. /* [annotation][in] */
  376. _In_ REFIID riid,
  377. /* [annotation][retval][out] */
  378. _COM_Outptr_ void **ppDevice);
  379. END_INTERFACE
  380. } IDXGIDeviceSubObjectVtbl;
  381. interface IDXGIDeviceSubObject
  382. {
  383. CONST_VTBL struct IDXGIDeviceSubObjectVtbl *lpVtbl;
  384. };
  385. #ifdef COBJMACROS
  386. #define IDXGIDeviceSubObject_QueryInterface(This,riid,ppvObject) \
  387. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  388. #define IDXGIDeviceSubObject_AddRef(This) \
  389. ( (This)->lpVtbl -> AddRef(This) )
  390. #define IDXGIDeviceSubObject_Release(This) \
  391. ( (This)->lpVtbl -> Release(This) )
  392. #define IDXGIDeviceSubObject_SetPrivateData(This,Name,DataSize,pData) \
  393. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  394. #define IDXGIDeviceSubObject_SetPrivateDataInterface(This,Name,pUnknown) \
  395. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  396. #define IDXGIDeviceSubObject_GetPrivateData(This,Name,pDataSize,pData) \
  397. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  398. #define IDXGIDeviceSubObject_GetParent(This,riid,ppParent) \
  399. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  400. #define IDXGIDeviceSubObject_GetDevice(This,riid,ppDevice) \
  401. ( (This)->lpVtbl -> GetDevice(This,riid,ppDevice) )
  402. #endif /* COBJMACROS */
  403. #endif /* C style interface */
  404. #endif /* __IDXGIDeviceSubObject_INTERFACE_DEFINED__ */
  405. #ifndef __IDXGIResource_INTERFACE_DEFINED__
  406. #define __IDXGIResource_INTERFACE_DEFINED__
  407. /* interface IDXGIResource */
  408. /* [unique][local][uuid][object] */
  409. EXTERN_C const IID IID_IDXGIResource;
  410. #if defined(__cplusplus) && !defined(CINTERFACE)
  411. MIDL_INTERFACE("035f3ab4-482e-4e50-b41f-8a7f8bd8960b")
  412. IDXGIResource : public IDXGIDeviceSubObject
  413. {
  414. public:
  415. virtual HRESULT STDMETHODCALLTYPE GetSharedHandle(
  416. /* [annotation][out] */
  417. _Out_ HANDLE *pSharedHandle) = 0;
  418. virtual HRESULT STDMETHODCALLTYPE GetUsage(
  419. /* [out] */ DXGI_USAGE *pUsage) = 0;
  420. virtual HRESULT STDMETHODCALLTYPE SetEvictionPriority(
  421. /* [in] */ UINT EvictionPriority) = 0;
  422. virtual HRESULT STDMETHODCALLTYPE GetEvictionPriority(
  423. /* [annotation][retval][out] */
  424. _Out_ UINT *pEvictionPriority) = 0;
  425. };
  426. #else /* C style interface */
  427. typedef struct IDXGIResourceVtbl
  428. {
  429. BEGIN_INTERFACE
  430. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  431. IDXGIResource * This,
  432. /* [in] */ REFIID riid,
  433. /* [annotation][iid_is][out] */
  434. _COM_Outptr_ void **ppvObject);
  435. ULONG ( STDMETHODCALLTYPE *AddRef )(
  436. IDXGIResource * This);
  437. ULONG ( STDMETHODCALLTYPE *Release )(
  438. IDXGIResource * This);
  439. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  440. IDXGIResource * This,
  441. /* [annotation][in] */
  442. _In_ REFGUID Name,
  443. /* [in] */ UINT DataSize,
  444. /* [annotation][in] */
  445. _In_reads_bytes_(DataSize) const void *pData);
  446. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  447. IDXGIResource * This,
  448. /* [annotation][in] */
  449. _In_ REFGUID Name,
  450. /* [annotation][in] */
  451. _In_opt_ const IUnknown *pUnknown);
  452. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  453. IDXGIResource * This,
  454. /* [annotation][in] */
  455. _In_ REFGUID Name,
  456. /* [annotation][out][in] */
  457. _Inout_ UINT *pDataSize,
  458. /* [annotation][out] */
  459. _Out_writes_bytes_(*pDataSize) void *pData);
  460. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  461. IDXGIResource * This,
  462. /* [annotation][in] */
  463. _In_ REFIID riid,
  464. /* [annotation][retval][out] */
  465. _COM_Outptr_ void **ppParent);
  466. HRESULT ( STDMETHODCALLTYPE *GetDevice )(
  467. IDXGIResource * This,
  468. /* [annotation][in] */
  469. _In_ REFIID riid,
  470. /* [annotation][retval][out] */
  471. _COM_Outptr_ void **ppDevice);
  472. HRESULT ( STDMETHODCALLTYPE *GetSharedHandle )(
  473. IDXGIResource * This,
  474. /* [annotation][out] */
  475. _Out_ HANDLE *pSharedHandle);
  476. HRESULT ( STDMETHODCALLTYPE *GetUsage )(
  477. IDXGIResource * This,
  478. /* [out] */ DXGI_USAGE *pUsage);
  479. HRESULT ( STDMETHODCALLTYPE *SetEvictionPriority )(
  480. IDXGIResource * This,
  481. /* [in] */ UINT EvictionPriority);
  482. HRESULT ( STDMETHODCALLTYPE *GetEvictionPriority )(
  483. IDXGIResource * This,
  484. /* [annotation][retval][out] */
  485. _Out_ UINT *pEvictionPriority);
  486. END_INTERFACE
  487. } IDXGIResourceVtbl;
  488. interface IDXGIResource
  489. {
  490. CONST_VTBL struct IDXGIResourceVtbl *lpVtbl;
  491. };
  492. #ifdef COBJMACROS
  493. #define IDXGIResource_QueryInterface(This,riid,ppvObject) \
  494. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  495. #define IDXGIResource_AddRef(This) \
  496. ( (This)->lpVtbl -> AddRef(This) )
  497. #define IDXGIResource_Release(This) \
  498. ( (This)->lpVtbl -> Release(This) )
  499. #define IDXGIResource_SetPrivateData(This,Name,DataSize,pData) \
  500. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  501. #define IDXGIResource_SetPrivateDataInterface(This,Name,pUnknown) \
  502. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  503. #define IDXGIResource_GetPrivateData(This,Name,pDataSize,pData) \
  504. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  505. #define IDXGIResource_GetParent(This,riid,ppParent) \
  506. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  507. #define IDXGIResource_GetDevice(This,riid,ppDevice) \
  508. ( (This)->lpVtbl -> GetDevice(This,riid,ppDevice) )
  509. #define IDXGIResource_GetSharedHandle(This,pSharedHandle) \
  510. ( (This)->lpVtbl -> GetSharedHandle(This,pSharedHandle) )
  511. #define IDXGIResource_GetUsage(This,pUsage) \
  512. ( (This)->lpVtbl -> GetUsage(This,pUsage) )
  513. #define IDXGIResource_SetEvictionPriority(This,EvictionPriority) \
  514. ( (This)->lpVtbl -> SetEvictionPriority(This,EvictionPriority) )
  515. #define IDXGIResource_GetEvictionPriority(This,pEvictionPriority) \
  516. ( (This)->lpVtbl -> GetEvictionPriority(This,pEvictionPriority) )
  517. #endif /* COBJMACROS */
  518. #endif /* C style interface */
  519. #endif /* __IDXGIResource_INTERFACE_DEFINED__ */
  520. #ifndef __IDXGIKeyedMutex_INTERFACE_DEFINED__
  521. #define __IDXGIKeyedMutex_INTERFACE_DEFINED__
  522. /* interface IDXGIKeyedMutex */
  523. /* [unique][local][uuid][object] */
  524. EXTERN_C const IID IID_IDXGIKeyedMutex;
  525. #if defined(__cplusplus) && !defined(CINTERFACE)
  526. MIDL_INTERFACE("9d8e1289-d7b3-465f-8126-250e349af85d")
  527. IDXGIKeyedMutex : public IDXGIDeviceSubObject
  528. {
  529. public:
  530. virtual HRESULT STDMETHODCALLTYPE AcquireSync(
  531. /* [in] */ UINT64 Key,
  532. /* [in] */ DWORD dwMilliseconds) = 0;
  533. virtual HRESULT STDMETHODCALLTYPE ReleaseSync(
  534. /* [in] */ UINT64 Key) = 0;
  535. };
  536. #else /* C style interface */
  537. typedef struct IDXGIKeyedMutexVtbl
  538. {
  539. BEGIN_INTERFACE
  540. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  541. IDXGIKeyedMutex * This,
  542. /* [in] */ REFIID riid,
  543. /* [annotation][iid_is][out] */
  544. _COM_Outptr_ void **ppvObject);
  545. ULONG ( STDMETHODCALLTYPE *AddRef )(
  546. IDXGIKeyedMutex * This);
  547. ULONG ( STDMETHODCALLTYPE *Release )(
  548. IDXGIKeyedMutex * This);
  549. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  550. IDXGIKeyedMutex * This,
  551. /* [annotation][in] */
  552. _In_ REFGUID Name,
  553. /* [in] */ UINT DataSize,
  554. /* [annotation][in] */
  555. _In_reads_bytes_(DataSize) const void *pData);
  556. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  557. IDXGIKeyedMutex * This,
  558. /* [annotation][in] */
  559. _In_ REFGUID Name,
  560. /* [annotation][in] */
  561. _In_opt_ const IUnknown *pUnknown);
  562. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  563. IDXGIKeyedMutex * This,
  564. /* [annotation][in] */
  565. _In_ REFGUID Name,
  566. /* [annotation][out][in] */
  567. _Inout_ UINT *pDataSize,
  568. /* [annotation][out] */
  569. _Out_writes_bytes_(*pDataSize) void *pData);
  570. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  571. IDXGIKeyedMutex * This,
  572. /* [annotation][in] */
  573. _In_ REFIID riid,
  574. /* [annotation][retval][out] */
  575. _COM_Outptr_ void **ppParent);
  576. HRESULT ( STDMETHODCALLTYPE *GetDevice )(
  577. IDXGIKeyedMutex * This,
  578. /* [annotation][in] */
  579. _In_ REFIID riid,
  580. /* [annotation][retval][out] */
  581. _COM_Outptr_ void **ppDevice);
  582. HRESULT ( STDMETHODCALLTYPE *AcquireSync )(
  583. IDXGIKeyedMutex * This,
  584. /* [in] */ UINT64 Key,
  585. /* [in] */ DWORD dwMilliseconds);
  586. HRESULT ( STDMETHODCALLTYPE *ReleaseSync )(
  587. IDXGIKeyedMutex * This,
  588. /* [in] */ UINT64 Key);
  589. END_INTERFACE
  590. } IDXGIKeyedMutexVtbl;
  591. interface IDXGIKeyedMutex
  592. {
  593. CONST_VTBL struct IDXGIKeyedMutexVtbl *lpVtbl;
  594. };
  595. #ifdef COBJMACROS
  596. #define IDXGIKeyedMutex_QueryInterface(This,riid,ppvObject) \
  597. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  598. #define IDXGIKeyedMutex_AddRef(This) \
  599. ( (This)->lpVtbl -> AddRef(This) )
  600. #define IDXGIKeyedMutex_Release(This) \
  601. ( (This)->lpVtbl -> Release(This) )
  602. #define IDXGIKeyedMutex_SetPrivateData(This,Name,DataSize,pData) \
  603. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  604. #define IDXGIKeyedMutex_SetPrivateDataInterface(This,Name,pUnknown) \
  605. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  606. #define IDXGIKeyedMutex_GetPrivateData(This,Name,pDataSize,pData) \
  607. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  608. #define IDXGIKeyedMutex_GetParent(This,riid,ppParent) \
  609. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  610. #define IDXGIKeyedMutex_GetDevice(This,riid,ppDevice) \
  611. ( (This)->lpVtbl -> GetDevice(This,riid,ppDevice) )
  612. #define IDXGIKeyedMutex_AcquireSync(This,Key,dwMilliseconds) \
  613. ( (This)->lpVtbl -> AcquireSync(This,Key,dwMilliseconds) )
  614. #define IDXGIKeyedMutex_ReleaseSync(This,Key) \
  615. ( (This)->lpVtbl -> ReleaseSync(This,Key) )
  616. #endif /* COBJMACROS */
  617. #endif /* C style interface */
  618. #endif /* __IDXGIKeyedMutex_INTERFACE_DEFINED__ */
  619. /* interface __MIDL_itf_dxgi_0000_0004 */
  620. /* [local] */
  621. #define DXGI_MAP_READ ( 1UL )
  622. #define DXGI_MAP_WRITE ( 2UL )
  623. #define DXGI_MAP_DISCARD ( 4UL )
  624. extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0004_v0_0_c_ifspec;
  625. extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0004_v0_0_s_ifspec;
  626. #ifndef __IDXGISurface_INTERFACE_DEFINED__
  627. #define __IDXGISurface_INTERFACE_DEFINED__
  628. /* interface IDXGISurface */
  629. /* [unique][local][uuid][object] */
  630. EXTERN_C const IID IID_IDXGISurface;
  631. #if defined(__cplusplus) && !defined(CINTERFACE)
  632. MIDL_INTERFACE("cafcb56c-6ac3-4889-bf47-9e23bbd260ec")
  633. IDXGISurface : public IDXGIDeviceSubObject
  634. {
  635. public:
  636. virtual HRESULT STDMETHODCALLTYPE GetDesc(
  637. /* [annotation][out] */
  638. _Out_ DXGI_SURFACE_DESC *pDesc) = 0;
  639. virtual HRESULT STDMETHODCALLTYPE Map(
  640. /* [annotation][out] */
  641. _Out_ DXGI_MAPPED_RECT *pLockedRect,
  642. /* [in] */ UINT MapFlags) = 0;
  643. virtual HRESULT STDMETHODCALLTYPE Unmap( void) = 0;
  644. };
  645. #else /* C style interface */
  646. typedef struct IDXGISurfaceVtbl
  647. {
  648. BEGIN_INTERFACE
  649. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  650. IDXGISurface * This,
  651. /* [in] */ REFIID riid,
  652. /* [annotation][iid_is][out] */
  653. _COM_Outptr_ void **ppvObject);
  654. ULONG ( STDMETHODCALLTYPE *AddRef )(
  655. IDXGISurface * This);
  656. ULONG ( STDMETHODCALLTYPE *Release )(
  657. IDXGISurface * This);
  658. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  659. IDXGISurface * This,
  660. /* [annotation][in] */
  661. _In_ REFGUID Name,
  662. /* [in] */ UINT DataSize,
  663. /* [annotation][in] */
  664. _In_reads_bytes_(DataSize) const void *pData);
  665. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  666. IDXGISurface * This,
  667. /* [annotation][in] */
  668. _In_ REFGUID Name,
  669. /* [annotation][in] */
  670. _In_opt_ const IUnknown *pUnknown);
  671. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  672. IDXGISurface * This,
  673. /* [annotation][in] */
  674. _In_ REFGUID Name,
  675. /* [annotation][out][in] */
  676. _Inout_ UINT *pDataSize,
  677. /* [annotation][out] */
  678. _Out_writes_bytes_(*pDataSize) void *pData);
  679. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  680. IDXGISurface * This,
  681. /* [annotation][in] */
  682. _In_ REFIID riid,
  683. /* [annotation][retval][out] */
  684. _COM_Outptr_ void **ppParent);
  685. HRESULT ( STDMETHODCALLTYPE *GetDevice )(
  686. IDXGISurface * This,
  687. /* [annotation][in] */
  688. _In_ REFIID riid,
  689. /* [annotation][retval][out] */
  690. _COM_Outptr_ void **ppDevice);
  691. HRESULT ( STDMETHODCALLTYPE *GetDesc )(
  692. IDXGISurface * This,
  693. /* [annotation][out] */
  694. _Out_ DXGI_SURFACE_DESC *pDesc);
  695. HRESULT ( STDMETHODCALLTYPE *Map )(
  696. IDXGISurface * This,
  697. /* [annotation][out] */
  698. _Out_ DXGI_MAPPED_RECT *pLockedRect,
  699. /* [in] */ UINT MapFlags);
  700. HRESULT ( STDMETHODCALLTYPE *Unmap )(
  701. IDXGISurface * This);
  702. END_INTERFACE
  703. } IDXGISurfaceVtbl;
  704. interface IDXGISurface
  705. {
  706. CONST_VTBL struct IDXGISurfaceVtbl *lpVtbl;
  707. };
  708. #ifdef COBJMACROS
  709. #define IDXGISurface_QueryInterface(This,riid,ppvObject) \
  710. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  711. #define IDXGISurface_AddRef(This) \
  712. ( (This)->lpVtbl -> AddRef(This) )
  713. #define IDXGISurface_Release(This) \
  714. ( (This)->lpVtbl -> Release(This) )
  715. #define IDXGISurface_SetPrivateData(This,Name,DataSize,pData) \
  716. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  717. #define IDXGISurface_SetPrivateDataInterface(This,Name,pUnknown) \
  718. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  719. #define IDXGISurface_GetPrivateData(This,Name,pDataSize,pData) \
  720. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  721. #define IDXGISurface_GetParent(This,riid,ppParent) \
  722. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  723. #define IDXGISurface_GetDevice(This,riid,ppDevice) \
  724. ( (This)->lpVtbl -> GetDevice(This,riid,ppDevice) )
  725. #define IDXGISurface_GetDesc(This,pDesc) \
  726. ( (This)->lpVtbl -> GetDesc(This,pDesc) )
  727. #define IDXGISurface_Map(This,pLockedRect,MapFlags) \
  728. ( (This)->lpVtbl -> Map(This,pLockedRect,MapFlags) )
  729. #define IDXGISurface_Unmap(This) \
  730. ( (This)->lpVtbl -> Unmap(This) )
  731. #endif /* COBJMACROS */
  732. #endif /* C style interface */
  733. #endif /* __IDXGISurface_INTERFACE_DEFINED__ */
  734. #ifndef __IDXGISurface1_INTERFACE_DEFINED__
  735. #define __IDXGISurface1_INTERFACE_DEFINED__
  736. /* interface IDXGISurface1 */
  737. /* [unique][local][uuid][object] */
  738. EXTERN_C const IID IID_IDXGISurface1;
  739. #if defined(__cplusplus) && !defined(CINTERFACE)
  740. MIDL_INTERFACE("4AE63092-6327-4c1b-80AE-BFE12EA32B86")
  741. IDXGISurface1 : public IDXGISurface
  742. {
  743. public:
  744. virtual HRESULT STDMETHODCALLTYPE GetDC(
  745. /* [in] */ BOOL Discard,
  746. /* [annotation][out] */
  747. _Out_ HDC *phdc) = 0;
  748. virtual HRESULT STDMETHODCALLTYPE ReleaseDC(
  749. /* [annotation][in] */
  750. _In_opt_ RECT *pDirtyRect) = 0;
  751. };
  752. #else /* C style interface */
  753. typedef struct IDXGISurface1Vtbl
  754. {
  755. BEGIN_INTERFACE
  756. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  757. IDXGISurface1 * This,
  758. /* [in] */ REFIID riid,
  759. /* [annotation][iid_is][out] */
  760. _COM_Outptr_ void **ppvObject);
  761. ULONG ( STDMETHODCALLTYPE *AddRef )(
  762. IDXGISurface1 * This);
  763. ULONG ( STDMETHODCALLTYPE *Release )(
  764. IDXGISurface1 * This);
  765. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  766. IDXGISurface1 * This,
  767. /* [annotation][in] */
  768. _In_ REFGUID Name,
  769. /* [in] */ UINT DataSize,
  770. /* [annotation][in] */
  771. _In_reads_bytes_(DataSize) const void *pData);
  772. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  773. IDXGISurface1 * This,
  774. /* [annotation][in] */
  775. _In_ REFGUID Name,
  776. /* [annotation][in] */
  777. _In_opt_ const IUnknown *pUnknown);
  778. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  779. IDXGISurface1 * This,
  780. /* [annotation][in] */
  781. _In_ REFGUID Name,
  782. /* [annotation][out][in] */
  783. _Inout_ UINT *pDataSize,
  784. /* [annotation][out] */
  785. _Out_writes_bytes_(*pDataSize) void *pData);
  786. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  787. IDXGISurface1 * This,
  788. /* [annotation][in] */
  789. _In_ REFIID riid,
  790. /* [annotation][retval][out] */
  791. _COM_Outptr_ void **ppParent);
  792. HRESULT ( STDMETHODCALLTYPE *GetDevice )(
  793. IDXGISurface1 * This,
  794. /* [annotation][in] */
  795. _In_ REFIID riid,
  796. /* [annotation][retval][out] */
  797. _COM_Outptr_ void **ppDevice);
  798. HRESULT ( STDMETHODCALLTYPE *GetDesc )(
  799. IDXGISurface1 * This,
  800. /* [annotation][out] */
  801. _Out_ DXGI_SURFACE_DESC *pDesc);
  802. HRESULT ( STDMETHODCALLTYPE *Map )(
  803. IDXGISurface1 * This,
  804. /* [annotation][out] */
  805. _Out_ DXGI_MAPPED_RECT *pLockedRect,
  806. /* [in] */ UINT MapFlags);
  807. HRESULT ( STDMETHODCALLTYPE *Unmap )(
  808. IDXGISurface1 * This);
  809. HRESULT ( STDMETHODCALLTYPE *GetDC )(
  810. IDXGISurface1 * This,
  811. /* [in] */ BOOL Discard,
  812. /* [annotation][out] */
  813. _Out_ HDC *phdc);
  814. HRESULT ( STDMETHODCALLTYPE *ReleaseDC )(
  815. IDXGISurface1 * This,
  816. /* [annotation][in] */
  817. _In_opt_ RECT *pDirtyRect);
  818. END_INTERFACE
  819. } IDXGISurface1Vtbl;
  820. interface IDXGISurface1
  821. {
  822. CONST_VTBL struct IDXGISurface1Vtbl *lpVtbl;
  823. };
  824. #ifdef COBJMACROS
  825. #define IDXGISurface1_QueryInterface(This,riid,ppvObject) \
  826. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  827. #define IDXGISurface1_AddRef(This) \
  828. ( (This)->lpVtbl -> AddRef(This) )
  829. #define IDXGISurface1_Release(This) \
  830. ( (This)->lpVtbl -> Release(This) )
  831. #define IDXGISurface1_SetPrivateData(This,Name,DataSize,pData) \
  832. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  833. #define IDXGISurface1_SetPrivateDataInterface(This,Name,pUnknown) \
  834. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  835. #define IDXGISurface1_GetPrivateData(This,Name,pDataSize,pData) \
  836. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  837. #define IDXGISurface1_GetParent(This,riid,ppParent) \
  838. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  839. #define IDXGISurface1_GetDevice(This,riid,ppDevice) \
  840. ( (This)->lpVtbl -> GetDevice(This,riid,ppDevice) )
  841. #define IDXGISurface1_GetDesc(This,pDesc) \
  842. ( (This)->lpVtbl -> GetDesc(This,pDesc) )
  843. #define IDXGISurface1_Map(This,pLockedRect,MapFlags) \
  844. ( (This)->lpVtbl -> Map(This,pLockedRect,MapFlags) )
  845. #define IDXGISurface1_Unmap(This) \
  846. ( (This)->lpVtbl -> Unmap(This) )
  847. #define IDXGISurface1_GetDC(This,Discard,phdc) \
  848. ( (This)->lpVtbl -> GetDC(This,Discard,phdc) )
  849. #define IDXGISurface1_ReleaseDC(This,pDirtyRect) \
  850. ( (This)->lpVtbl -> ReleaseDC(This,pDirtyRect) )
  851. #endif /* COBJMACROS */
  852. #endif /* C style interface */
  853. #endif /* __IDXGISurface1_INTERFACE_DEFINED__ */
  854. /* interface __MIDL_itf_dxgi_0000_0006 */
  855. /* [local] */
  856. extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0006_v0_0_c_ifspec;
  857. extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0006_v0_0_s_ifspec;
  858. #ifndef __IDXGIAdapter_INTERFACE_DEFINED__
  859. #define __IDXGIAdapter_INTERFACE_DEFINED__
  860. /* interface IDXGIAdapter */
  861. /* [unique][local][uuid][object] */
  862. EXTERN_C const IID IID_IDXGIAdapter;
  863. #if defined(__cplusplus) && !defined(CINTERFACE)
  864. MIDL_INTERFACE("2411e7e1-12ac-4ccf-bd14-9798e8534dc0")
  865. IDXGIAdapter : public IDXGIObject
  866. {
  867. public:
  868. virtual HRESULT STDMETHODCALLTYPE EnumOutputs(
  869. /* [in] */ UINT Output,
  870. /* [annotation][out][in] */
  871. _COM_Outptr_ IDXGIOutput **ppOutput) = 0;
  872. virtual HRESULT STDMETHODCALLTYPE GetDesc(
  873. /* [annotation][out] */
  874. _Out_ DXGI_ADAPTER_DESC *pDesc) = 0;
  875. virtual HRESULT STDMETHODCALLTYPE CheckInterfaceSupport(
  876. /* [annotation][in] */
  877. _In_ REFGUID InterfaceName,
  878. /* [annotation][out] */
  879. _Out_ LARGE_INTEGER *pUMDVersion) = 0;
  880. };
  881. #else /* C style interface */
  882. typedef struct IDXGIAdapterVtbl
  883. {
  884. BEGIN_INTERFACE
  885. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  886. IDXGIAdapter * This,
  887. /* [in] */ REFIID riid,
  888. /* [annotation][iid_is][out] */
  889. _COM_Outptr_ void **ppvObject);
  890. ULONG ( STDMETHODCALLTYPE *AddRef )(
  891. IDXGIAdapter * This);
  892. ULONG ( STDMETHODCALLTYPE *Release )(
  893. IDXGIAdapter * This);
  894. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  895. IDXGIAdapter * This,
  896. /* [annotation][in] */
  897. _In_ REFGUID Name,
  898. /* [in] */ UINT DataSize,
  899. /* [annotation][in] */
  900. _In_reads_bytes_(DataSize) const void *pData);
  901. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  902. IDXGIAdapter * This,
  903. /* [annotation][in] */
  904. _In_ REFGUID Name,
  905. /* [annotation][in] */
  906. _In_opt_ const IUnknown *pUnknown);
  907. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  908. IDXGIAdapter * This,
  909. /* [annotation][in] */
  910. _In_ REFGUID Name,
  911. /* [annotation][out][in] */
  912. _Inout_ UINT *pDataSize,
  913. /* [annotation][out] */
  914. _Out_writes_bytes_(*pDataSize) void *pData);
  915. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  916. IDXGIAdapter * This,
  917. /* [annotation][in] */
  918. _In_ REFIID riid,
  919. /* [annotation][retval][out] */
  920. _COM_Outptr_ void **ppParent);
  921. HRESULT ( STDMETHODCALLTYPE *EnumOutputs )(
  922. IDXGIAdapter * This,
  923. /* [in] */ UINT Output,
  924. /* [annotation][out][in] */
  925. _COM_Outptr_ IDXGIOutput **ppOutput);
  926. HRESULT ( STDMETHODCALLTYPE *GetDesc )(
  927. IDXGIAdapter * This,
  928. /* [annotation][out] */
  929. _Out_ DXGI_ADAPTER_DESC *pDesc);
  930. HRESULT ( STDMETHODCALLTYPE *CheckInterfaceSupport )(
  931. IDXGIAdapter * This,
  932. /* [annotation][in] */
  933. _In_ REFGUID InterfaceName,
  934. /* [annotation][out] */
  935. _Out_ LARGE_INTEGER *pUMDVersion);
  936. END_INTERFACE
  937. } IDXGIAdapterVtbl;
  938. interface IDXGIAdapter
  939. {
  940. CONST_VTBL struct IDXGIAdapterVtbl *lpVtbl;
  941. };
  942. #ifdef COBJMACROS
  943. #define IDXGIAdapter_QueryInterface(This,riid,ppvObject) \
  944. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  945. #define IDXGIAdapter_AddRef(This) \
  946. ( (This)->lpVtbl -> AddRef(This) )
  947. #define IDXGIAdapter_Release(This) \
  948. ( (This)->lpVtbl -> Release(This) )
  949. #define IDXGIAdapter_SetPrivateData(This,Name,DataSize,pData) \
  950. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  951. #define IDXGIAdapter_SetPrivateDataInterface(This,Name,pUnknown) \
  952. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  953. #define IDXGIAdapter_GetPrivateData(This,Name,pDataSize,pData) \
  954. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  955. #define IDXGIAdapter_GetParent(This,riid,ppParent) \
  956. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  957. #define IDXGIAdapter_EnumOutputs(This,Output,ppOutput) \
  958. ( (This)->lpVtbl -> EnumOutputs(This,Output,ppOutput) )
  959. #define IDXGIAdapter_GetDesc(This,pDesc) \
  960. ( (This)->lpVtbl -> GetDesc(This,pDesc) )
  961. #define IDXGIAdapter_CheckInterfaceSupport(This,InterfaceName,pUMDVersion) \
  962. ( (This)->lpVtbl -> CheckInterfaceSupport(This,InterfaceName,pUMDVersion) )
  963. #endif /* COBJMACROS */
  964. #endif /* C style interface */
  965. #endif /* __IDXGIAdapter_INTERFACE_DEFINED__ */
  966. /* interface __MIDL_itf_dxgi_0000_0007 */
  967. /* [local] */
  968. #define DXGI_ENUM_MODES_INTERLACED ( 1UL )
  969. #define DXGI_ENUM_MODES_SCALING ( 2UL )
  970. extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0007_v0_0_c_ifspec;
  971. extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0007_v0_0_s_ifspec;
  972. #ifndef __IDXGIOutput_INTERFACE_DEFINED__
  973. #define __IDXGIOutput_INTERFACE_DEFINED__
  974. /* interface IDXGIOutput */
  975. /* [unique][local][uuid][object] */
  976. EXTERN_C const IID IID_IDXGIOutput;
  977. #if defined(__cplusplus) && !defined(CINTERFACE)
  978. MIDL_INTERFACE("ae02eedb-c735-4690-8d52-5a8dc20213aa")
  979. IDXGIOutput : public IDXGIObject
  980. {
  981. public:
  982. virtual HRESULT STDMETHODCALLTYPE GetDesc(
  983. /* [annotation][out] */
  984. _Out_ DXGI_OUTPUT_DESC *pDesc) = 0;
  985. virtual HRESULT STDMETHODCALLTYPE GetDisplayModeList(
  986. /* [in] */ DXGI_FORMAT EnumFormat,
  987. /* [in] */ UINT Flags,
  988. /* [annotation][out][in] */
  989. _Inout_ UINT *pNumModes,
  990. /* [annotation][out] */
  991. _Out_writes_to_opt_(*pNumModes,*pNumModes) DXGI_MODE_DESC *pDesc) = 0;
  992. virtual HRESULT STDMETHODCALLTYPE FindClosestMatchingMode(
  993. /* [annotation][in] */
  994. _In_ const DXGI_MODE_DESC *pModeToMatch,
  995. /* [annotation][out] */
  996. _Out_ DXGI_MODE_DESC *pClosestMatch,
  997. /* [annotation][in] */
  998. _In_opt_ IUnknown *pConcernedDevice) = 0;
  999. virtual HRESULT STDMETHODCALLTYPE WaitForVBlank( void) = 0;
  1000. virtual HRESULT STDMETHODCALLTYPE TakeOwnership(
  1001. /* [annotation][in] */
  1002. _In_ IUnknown *pDevice,
  1003. BOOL Exclusive) = 0;
  1004. virtual void STDMETHODCALLTYPE ReleaseOwnership( void) = 0;
  1005. virtual HRESULT STDMETHODCALLTYPE GetGammaControlCapabilities(
  1006. /* [annotation][out] */
  1007. _Out_ DXGI_GAMMA_CONTROL_CAPABILITIES *pGammaCaps) = 0;
  1008. virtual HRESULT STDMETHODCALLTYPE SetGammaControl(
  1009. /* [annotation][in] */
  1010. _In_ const DXGI_GAMMA_CONTROL *pArray) = 0;
  1011. virtual HRESULT STDMETHODCALLTYPE GetGammaControl(
  1012. /* [annotation][out] */
  1013. _Out_ DXGI_GAMMA_CONTROL *pArray) = 0;
  1014. virtual HRESULT STDMETHODCALLTYPE SetDisplaySurface(
  1015. /* [annotation][in] */
  1016. _In_ IDXGISurface *pScanoutSurface) = 0;
  1017. virtual HRESULT STDMETHODCALLTYPE GetDisplaySurfaceData(
  1018. /* [annotation][in] */
  1019. _In_ IDXGISurface *pDestination) = 0;
  1020. virtual HRESULT STDMETHODCALLTYPE GetFrameStatistics(
  1021. /* [annotation][out] */
  1022. _Out_ DXGI_FRAME_STATISTICS *pStats) = 0;
  1023. };
  1024. #else /* C style interface */
  1025. typedef struct IDXGIOutputVtbl
  1026. {
  1027. BEGIN_INTERFACE
  1028. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  1029. IDXGIOutput * This,
  1030. /* [in] */ REFIID riid,
  1031. /* [annotation][iid_is][out] */
  1032. _COM_Outptr_ void **ppvObject);
  1033. ULONG ( STDMETHODCALLTYPE *AddRef )(
  1034. IDXGIOutput * This);
  1035. ULONG ( STDMETHODCALLTYPE *Release )(
  1036. IDXGIOutput * This);
  1037. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  1038. IDXGIOutput * This,
  1039. /* [annotation][in] */
  1040. _In_ REFGUID Name,
  1041. /* [in] */ UINT DataSize,
  1042. /* [annotation][in] */
  1043. _In_reads_bytes_(DataSize) const void *pData);
  1044. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  1045. IDXGIOutput * This,
  1046. /* [annotation][in] */
  1047. _In_ REFGUID Name,
  1048. /* [annotation][in] */
  1049. _In_opt_ const IUnknown *pUnknown);
  1050. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  1051. IDXGIOutput * This,
  1052. /* [annotation][in] */
  1053. _In_ REFGUID Name,
  1054. /* [annotation][out][in] */
  1055. _Inout_ UINT *pDataSize,
  1056. /* [annotation][out] */
  1057. _Out_writes_bytes_(*pDataSize) void *pData);
  1058. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  1059. IDXGIOutput * This,
  1060. /* [annotation][in] */
  1061. _In_ REFIID riid,
  1062. /* [annotation][retval][out] */
  1063. _COM_Outptr_ void **ppParent);
  1064. HRESULT ( STDMETHODCALLTYPE *GetDesc )(
  1065. IDXGIOutput * This,
  1066. /* [annotation][out] */
  1067. _Out_ DXGI_OUTPUT_DESC *pDesc);
  1068. HRESULT ( STDMETHODCALLTYPE *GetDisplayModeList )(
  1069. IDXGIOutput * This,
  1070. /* [in] */ DXGI_FORMAT EnumFormat,
  1071. /* [in] */ UINT Flags,
  1072. /* [annotation][out][in] */
  1073. _Inout_ UINT *pNumModes,
  1074. /* [annotation][out] */
  1075. _Out_writes_to_opt_(*pNumModes,*pNumModes) DXGI_MODE_DESC *pDesc);
  1076. HRESULT ( STDMETHODCALLTYPE *FindClosestMatchingMode )(
  1077. IDXGIOutput * This,
  1078. /* [annotation][in] */
  1079. _In_ const DXGI_MODE_DESC *pModeToMatch,
  1080. /* [annotation][out] */
  1081. _Out_ DXGI_MODE_DESC *pClosestMatch,
  1082. /* [annotation][in] */
  1083. _In_opt_ IUnknown *pConcernedDevice);
  1084. HRESULT ( STDMETHODCALLTYPE *WaitForVBlank )(
  1085. IDXGIOutput * This);
  1086. HRESULT ( STDMETHODCALLTYPE *TakeOwnership )(
  1087. IDXGIOutput * This,
  1088. /* [annotation][in] */
  1089. _In_ IUnknown *pDevice,
  1090. BOOL Exclusive);
  1091. void ( STDMETHODCALLTYPE *ReleaseOwnership )(
  1092. IDXGIOutput * This);
  1093. HRESULT ( STDMETHODCALLTYPE *GetGammaControlCapabilities )(
  1094. IDXGIOutput * This,
  1095. /* [annotation][out] */
  1096. _Out_ DXGI_GAMMA_CONTROL_CAPABILITIES *pGammaCaps);
  1097. HRESULT ( STDMETHODCALLTYPE *SetGammaControl )(
  1098. IDXGIOutput * This,
  1099. /* [annotation][in] */
  1100. _In_ const DXGI_GAMMA_CONTROL *pArray);
  1101. HRESULT ( STDMETHODCALLTYPE *GetGammaControl )(
  1102. IDXGIOutput * This,
  1103. /* [annotation][out] */
  1104. _Out_ DXGI_GAMMA_CONTROL *pArray);
  1105. HRESULT ( STDMETHODCALLTYPE *SetDisplaySurface )(
  1106. IDXGIOutput * This,
  1107. /* [annotation][in] */
  1108. _In_ IDXGISurface *pScanoutSurface);
  1109. HRESULT ( STDMETHODCALLTYPE *GetDisplaySurfaceData )(
  1110. IDXGIOutput * This,
  1111. /* [annotation][in] */
  1112. _In_ IDXGISurface *pDestination);
  1113. HRESULT ( STDMETHODCALLTYPE *GetFrameStatistics )(
  1114. IDXGIOutput * This,
  1115. /* [annotation][out] */
  1116. _Out_ DXGI_FRAME_STATISTICS *pStats);
  1117. END_INTERFACE
  1118. } IDXGIOutputVtbl;
  1119. interface IDXGIOutput
  1120. {
  1121. CONST_VTBL struct IDXGIOutputVtbl *lpVtbl;
  1122. };
  1123. #ifdef COBJMACROS
  1124. #define IDXGIOutput_QueryInterface(This,riid,ppvObject) \
  1125. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  1126. #define IDXGIOutput_AddRef(This) \
  1127. ( (This)->lpVtbl -> AddRef(This) )
  1128. #define IDXGIOutput_Release(This) \
  1129. ( (This)->lpVtbl -> Release(This) )
  1130. #define IDXGIOutput_SetPrivateData(This,Name,DataSize,pData) \
  1131. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  1132. #define IDXGIOutput_SetPrivateDataInterface(This,Name,pUnknown) \
  1133. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  1134. #define IDXGIOutput_GetPrivateData(This,Name,pDataSize,pData) \
  1135. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  1136. #define IDXGIOutput_GetParent(This,riid,ppParent) \
  1137. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  1138. #define IDXGIOutput_GetDesc(This,pDesc) \
  1139. ( (This)->lpVtbl -> GetDesc(This,pDesc) )
  1140. #define IDXGIOutput_GetDisplayModeList(This,EnumFormat,Flags,pNumModes,pDesc) \
  1141. ( (This)->lpVtbl -> GetDisplayModeList(This,EnumFormat,Flags,pNumModes,pDesc) )
  1142. #define IDXGIOutput_FindClosestMatchingMode(This,pModeToMatch,pClosestMatch,pConcernedDevice) \
  1143. ( (This)->lpVtbl -> FindClosestMatchingMode(This,pModeToMatch,pClosestMatch,pConcernedDevice) )
  1144. #define IDXGIOutput_WaitForVBlank(This) \
  1145. ( (This)->lpVtbl -> WaitForVBlank(This) )
  1146. #define IDXGIOutput_TakeOwnership(This,pDevice,Exclusive) \
  1147. ( (This)->lpVtbl -> TakeOwnership(This,pDevice,Exclusive) )
  1148. #define IDXGIOutput_ReleaseOwnership(This) \
  1149. ( (This)->lpVtbl -> ReleaseOwnership(This) )
  1150. #define IDXGIOutput_GetGammaControlCapabilities(This,pGammaCaps) \
  1151. ( (This)->lpVtbl -> GetGammaControlCapabilities(This,pGammaCaps) )
  1152. #define IDXGIOutput_SetGammaControl(This,pArray) \
  1153. ( (This)->lpVtbl -> SetGammaControl(This,pArray) )
  1154. #define IDXGIOutput_GetGammaControl(This,pArray) \
  1155. ( (This)->lpVtbl -> GetGammaControl(This,pArray) )
  1156. #define IDXGIOutput_SetDisplaySurface(This,pScanoutSurface) \
  1157. ( (This)->lpVtbl -> SetDisplaySurface(This,pScanoutSurface) )
  1158. #define IDXGIOutput_GetDisplaySurfaceData(This,pDestination) \
  1159. ( (This)->lpVtbl -> GetDisplaySurfaceData(This,pDestination) )
  1160. #define IDXGIOutput_GetFrameStatistics(This,pStats) \
  1161. ( (This)->lpVtbl -> GetFrameStatistics(This,pStats) )
  1162. #endif /* COBJMACROS */
  1163. #endif /* C style interface */
  1164. #endif /* __IDXGIOutput_INTERFACE_DEFINED__ */
  1165. /* interface __MIDL_itf_dxgi_0000_0008 */
  1166. /* [local] */
  1167. #define DXGI_MAX_SWAP_CHAIN_BUFFERS ( 16 )
  1168. #define DXGI_PRESENT_TEST 0x00000001UL
  1169. #define DXGI_PRESENT_DO_NOT_SEQUENCE 0x00000002UL
  1170. #define DXGI_PRESENT_RESTART 0x00000004UL
  1171. #define DXGI_PRESENT_DO_NOT_WAIT 0x00000008UL
  1172. #define DXGI_PRESENT_STEREO_PREFER_RIGHT 0x00000010UL
  1173. #define DXGI_PRESENT_STEREO_TEMPORARY_MONO 0x00000020UL
  1174. #define DXGI_PRESENT_RESTRICT_TO_OUTPUT 0x00000040UL
  1175. #define DXGI_PRESENT_USE_DURATION 0x00000100UL
  1176. #define DXGI_PRESENT_ALLOW_TEARING 0x00000200UL
  1177. extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0008_v0_0_c_ifspec;
  1178. extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0008_v0_0_s_ifspec;
  1179. #ifndef __IDXGISwapChain_INTERFACE_DEFINED__
  1180. #define __IDXGISwapChain_INTERFACE_DEFINED__
  1181. /* interface IDXGISwapChain */
  1182. /* [unique][local][uuid][object] */
  1183. EXTERN_C const IID IID_IDXGISwapChain;
  1184. #if defined(__cplusplus) && !defined(CINTERFACE)
  1185. MIDL_INTERFACE("310d36a0-d2e7-4c0a-aa04-6a9d23b8886a")
  1186. IDXGISwapChain : public IDXGIDeviceSubObject
  1187. {
  1188. public:
  1189. virtual HRESULT STDMETHODCALLTYPE Present(
  1190. /* [in] */ UINT SyncInterval,
  1191. /* [in] */ UINT Flags) = 0;
  1192. virtual HRESULT STDMETHODCALLTYPE GetBuffer(
  1193. /* [in] */ UINT Buffer,
  1194. /* [annotation][in] */
  1195. _In_ REFIID riid,
  1196. /* [annotation][out][in] */
  1197. _COM_Outptr_ void **ppSurface) = 0;
  1198. virtual HRESULT STDMETHODCALLTYPE SetFullscreenState(
  1199. /* [in] */ BOOL Fullscreen,
  1200. /* [annotation][in] */
  1201. _In_opt_ IDXGIOutput *pTarget) = 0;
  1202. virtual HRESULT STDMETHODCALLTYPE GetFullscreenState(
  1203. /* [annotation][out] */
  1204. _Out_opt_ BOOL *pFullscreen,
  1205. /* [annotation][out] */
  1206. _COM_Outptr_opt_result_maybenull_ IDXGIOutput **ppTarget) = 0;
  1207. virtual HRESULT STDMETHODCALLTYPE GetDesc(
  1208. /* [annotation][out] */
  1209. _Out_ DXGI_SWAP_CHAIN_DESC *pDesc) = 0;
  1210. virtual HRESULT STDMETHODCALLTYPE ResizeBuffers(
  1211. /* [in] */ UINT BufferCount,
  1212. /* [in] */ UINT Width,
  1213. /* [in] */ UINT Height,
  1214. /* [in] */ DXGI_FORMAT NewFormat,
  1215. /* [in] */ UINT SwapChainFlags) = 0;
  1216. virtual HRESULT STDMETHODCALLTYPE ResizeTarget(
  1217. /* [annotation][in] */
  1218. _In_ const DXGI_MODE_DESC *pNewTargetParameters) = 0;
  1219. virtual HRESULT STDMETHODCALLTYPE GetContainingOutput(
  1220. /* [annotation][out] */
  1221. _COM_Outptr_ IDXGIOutput **ppOutput) = 0;
  1222. virtual HRESULT STDMETHODCALLTYPE GetFrameStatistics(
  1223. /* [annotation][out] */
  1224. _Out_ DXGI_FRAME_STATISTICS *pStats) = 0;
  1225. virtual HRESULT STDMETHODCALLTYPE GetLastPresentCount(
  1226. /* [annotation][out] */
  1227. _Out_ UINT *pLastPresentCount) = 0;
  1228. };
  1229. #else /* C style interface */
  1230. typedef struct IDXGISwapChainVtbl
  1231. {
  1232. BEGIN_INTERFACE
  1233. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  1234. IDXGISwapChain * This,
  1235. /* [in] */ REFIID riid,
  1236. /* [annotation][iid_is][out] */
  1237. _COM_Outptr_ void **ppvObject);
  1238. ULONG ( STDMETHODCALLTYPE *AddRef )(
  1239. IDXGISwapChain * This);
  1240. ULONG ( STDMETHODCALLTYPE *Release )(
  1241. IDXGISwapChain * This);
  1242. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  1243. IDXGISwapChain * This,
  1244. /* [annotation][in] */
  1245. _In_ REFGUID Name,
  1246. /* [in] */ UINT DataSize,
  1247. /* [annotation][in] */
  1248. _In_reads_bytes_(DataSize) const void *pData);
  1249. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  1250. IDXGISwapChain * This,
  1251. /* [annotation][in] */
  1252. _In_ REFGUID Name,
  1253. /* [annotation][in] */
  1254. _In_opt_ const IUnknown *pUnknown);
  1255. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  1256. IDXGISwapChain * This,
  1257. /* [annotation][in] */
  1258. _In_ REFGUID Name,
  1259. /* [annotation][out][in] */
  1260. _Inout_ UINT *pDataSize,
  1261. /* [annotation][out] */
  1262. _Out_writes_bytes_(*pDataSize) void *pData);
  1263. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  1264. IDXGISwapChain * This,
  1265. /* [annotation][in] */
  1266. _In_ REFIID riid,
  1267. /* [annotation][retval][out] */
  1268. _COM_Outptr_ void **ppParent);
  1269. HRESULT ( STDMETHODCALLTYPE *GetDevice )(
  1270. IDXGISwapChain * This,
  1271. /* [annotation][in] */
  1272. _In_ REFIID riid,
  1273. /* [annotation][retval][out] */
  1274. _COM_Outptr_ void **ppDevice);
  1275. HRESULT ( STDMETHODCALLTYPE *Present )(
  1276. IDXGISwapChain * This,
  1277. /* [in] */ UINT SyncInterval,
  1278. /* [in] */ UINT Flags);
  1279. HRESULT ( STDMETHODCALLTYPE *GetBuffer )(
  1280. IDXGISwapChain * This,
  1281. /* [in] */ UINT Buffer,
  1282. /* [annotation][in] */
  1283. _In_ REFIID riid,
  1284. /* [annotation][out][in] */
  1285. _COM_Outptr_ void **ppSurface);
  1286. HRESULT ( STDMETHODCALLTYPE *SetFullscreenState )(
  1287. IDXGISwapChain * This,
  1288. /* [in] */ BOOL Fullscreen,
  1289. /* [annotation][in] */
  1290. _In_opt_ IDXGIOutput *pTarget);
  1291. HRESULT ( STDMETHODCALLTYPE *GetFullscreenState )(
  1292. IDXGISwapChain * This,
  1293. /* [annotation][out] */
  1294. _Out_opt_ BOOL *pFullscreen,
  1295. /* [annotation][out] */
  1296. _COM_Outptr_opt_result_maybenull_ IDXGIOutput **ppTarget);
  1297. HRESULT ( STDMETHODCALLTYPE *GetDesc )(
  1298. IDXGISwapChain * This,
  1299. /* [annotation][out] */
  1300. _Out_ DXGI_SWAP_CHAIN_DESC *pDesc);
  1301. HRESULT ( STDMETHODCALLTYPE *ResizeBuffers )(
  1302. IDXGISwapChain * This,
  1303. /* [in] */ UINT BufferCount,
  1304. /* [in] */ UINT Width,
  1305. /* [in] */ UINT Height,
  1306. /* [in] */ DXGI_FORMAT NewFormat,
  1307. /* [in] */ UINT SwapChainFlags);
  1308. HRESULT ( STDMETHODCALLTYPE *ResizeTarget )(
  1309. IDXGISwapChain * This,
  1310. /* [annotation][in] */
  1311. _In_ const DXGI_MODE_DESC *pNewTargetParameters);
  1312. HRESULT ( STDMETHODCALLTYPE *GetContainingOutput )(
  1313. IDXGISwapChain * This,
  1314. /* [annotation][out] */
  1315. _COM_Outptr_ IDXGIOutput **ppOutput);
  1316. HRESULT ( STDMETHODCALLTYPE *GetFrameStatistics )(
  1317. IDXGISwapChain * This,
  1318. /* [annotation][out] */
  1319. _Out_ DXGI_FRAME_STATISTICS *pStats);
  1320. HRESULT ( STDMETHODCALLTYPE *GetLastPresentCount )(
  1321. IDXGISwapChain * This,
  1322. /* [annotation][out] */
  1323. _Out_ UINT *pLastPresentCount);
  1324. END_INTERFACE
  1325. } IDXGISwapChainVtbl;
  1326. interface IDXGISwapChain
  1327. {
  1328. CONST_VTBL struct IDXGISwapChainVtbl *lpVtbl;
  1329. };
  1330. #ifdef COBJMACROS
  1331. #define IDXGISwapChain_QueryInterface(This,riid,ppvObject) \
  1332. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  1333. #define IDXGISwapChain_AddRef(This) \
  1334. ( (This)->lpVtbl -> AddRef(This) )
  1335. #define IDXGISwapChain_Release(This) \
  1336. ( (This)->lpVtbl -> Release(This) )
  1337. #define IDXGISwapChain_SetPrivateData(This,Name,DataSize,pData) \
  1338. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  1339. #define IDXGISwapChain_SetPrivateDataInterface(This,Name,pUnknown) \
  1340. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  1341. #define IDXGISwapChain_GetPrivateData(This,Name,pDataSize,pData) \
  1342. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  1343. #define IDXGISwapChain_GetParent(This,riid,ppParent) \
  1344. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  1345. #define IDXGISwapChain_GetDevice(This,riid,ppDevice) \
  1346. ( (This)->lpVtbl -> GetDevice(This,riid,ppDevice) )
  1347. #define IDXGISwapChain_Present(This,SyncInterval,Flags) \
  1348. ( (This)->lpVtbl -> Present(This,SyncInterval,Flags) )
  1349. #define IDXGISwapChain_GetBuffer(This,Buffer,riid,ppSurface) \
  1350. ( (This)->lpVtbl -> GetBuffer(This,Buffer,riid,ppSurface) )
  1351. #define IDXGISwapChain_SetFullscreenState(This,Fullscreen,pTarget) \
  1352. ( (This)->lpVtbl -> SetFullscreenState(This,Fullscreen,pTarget) )
  1353. #define IDXGISwapChain_GetFullscreenState(This,pFullscreen,ppTarget) \
  1354. ( (This)->lpVtbl -> GetFullscreenState(This,pFullscreen,ppTarget) )
  1355. #define IDXGISwapChain_GetDesc(This,pDesc) \
  1356. ( (This)->lpVtbl -> GetDesc(This,pDesc) )
  1357. #define IDXGISwapChain_ResizeBuffers(This,BufferCount,Width,Height,NewFormat,SwapChainFlags) \
  1358. ( (This)->lpVtbl -> ResizeBuffers(This,BufferCount,Width,Height,NewFormat,SwapChainFlags) )
  1359. #define IDXGISwapChain_ResizeTarget(This,pNewTargetParameters) \
  1360. ( (This)->lpVtbl -> ResizeTarget(This,pNewTargetParameters) )
  1361. #define IDXGISwapChain_GetContainingOutput(This,ppOutput) \
  1362. ( (This)->lpVtbl -> GetContainingOutput(This,ppOutput) )
  1363. #define IDXGISwapChain_GetFrameStatistics(This,pStats) \
  1364. ( (This)->lpVtbl -> GetFrameStatistics(This,pStats) )
  1365. #define IDXGISwapChain_GetLastPresentCount(This,pLastPresentCount) \
  1366. ( (This)->lpVtbl -> GetLastPresentCount(This,pLastPresentCount) )
  1367. #endif /* COBJMACROS */
  1368. #endif /* C style interface */
  1369. #endif /* __IDXGISwapChain_INTERFACE_DEFINED__ */
  1370. /* interface __MIDL_itf_dxgi_0000_0009 */
  1371. /* [local] */
  1372. #define DXGI_MWA_NO_WINDOW_CHANGES ( 1 << 0 )
  1373. #define DXGI_MWA_NO_ALT_ENTER ( 1 << 1 )
  1374. #define DXGI_MWA_NO_PRINT_SCREEN ( 1 << 2 )
  1375. #define DXGI_MWA_VALID ( 0x7 )
  1376. extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0009_v0_0_c_ifspec;
  1377. extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0009_v0_0_s_ifspec;
  1378. #ifndef __IDXGIFactory_INTERFACE_DEFINED__
  1379. #define __IDXGIFactory_INTERFACE_DEFINED__
  1380. /* interface IDXGIFactory */
  1381. /* [unique][local][uuid][object] */
  1382. EXTERN_C const IID IID_IDXGIFactory;
  1383. #if defined(__cplusplus) && !defined(CINTERFACE)
  1384. MIDL_INTERFACE("7b7166ec-21c7-44ae-b21a-c9ae321ae369")
  1385. IDXGIFactory : public IDXGIObject
  1386. {
  1387. public:
  1388. virtual HRESULT STDMETHODCALLTYPE EnumAdapters(
  1389. /* [in] */ UINT Adapter,
  1390. /* [annotation][out] */
  1391. _COM_Outptr_ IDXGIAdapter **ppAdapter) = 0;
  1392. virtual HRESULT STDMETHODCALLTYPE MakeWindowAssociation(
  1393. HWND WindowHandle,
  1394. UINT Flags) = 0;
  1395. virtual HRESULT STDMETHODCALLTYPE GetWindowAssociation(
  1396. /* [annotation][out] */
  1397. _Out_ HWND *pWindowHandle) = 0;
  1398. virtual HRESULT STDMETHODCALLTYPE CreateSwapChain(
  1399. /* [annotation][in] */
  1400. _In_ IUnknown *pDevice,
  1401. /* [annotation][in] */
  1402. _In_ DXGI_SWAP_CHAIN_DESC *pDesc,
  1403. /* [annotation][out] */
  1404. _COM_Outptr_ IDXGISwapChain **ppSwapChain) = 0;
  1405. virtual HRESULT STDMETHODCALLTYPE CreateSoftwareAdapter(
  1406. /* [in] */ HMODULE Module,
  1407. /* [annotation][out] */
  1408. _COM_Outptr_ IDXGIAdapter **ppAdapter) = 0;
  1409. };
  1410. #else /* C style interface */
  1411. typedef struct IDXGIFactoryVtbl
  1412. {
  1413. BEGIN_INTERFACE
  1414. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  1415. IDXGIFactory * This,
  1416. /* [in] */ REFIID riid,
  1417. /* [annotation][iid_is][out] */
  1418. _COM_Outptr_ void **ppvObject);
  1419. ULONG ( STDMETHODCALLTYPE *AddRef )(
  1420. IDXGIFactory * This);
  1421. ULONG ( STDMETHODCALLTYPE *Release )(
  1422. IDXGIFactory * This);
  1423. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  1424. IDXGIFactory * This,
  1425. /* [annotation][in] */
  1426. _In_ REFGUID Name,
  1427. /* [in] */ UINT DataSize,
  1428. /* [annotation][in] */
  1429. _In_reads_bytes_(DataSize) const void *pData);
  1430. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  1431. IDXGIFactory * This,
  1432. /* [annotation][in] */
  1433. _In_ REFGUID Name,
  1434. /* [annotation][in] */
  1435. _In_opt_ const IUnknown *pUnknown);
  1436. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  1437. IDXGIFactory * This,
  1438. /* [annotation][in] */
  1439. _In_ REFGUID Name,
  1440. /* [annotation][out][in] */
  1441. _Inout_ UINT *pDataSize,
  1442. /* [annotation][out] */
  1443. _Out_writes_bytes_(*pDataSize) void *pData);
  1444. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  1445. IDXGIFactory * This,
  1446. /* [annotation][in] */
  1447. _In_ REFIID riid,
  1448. /* [annotation][retval][out] */
  1449. _COM_Outptr_ void **ppParent);
  1450. HRESULT ( STDMETHODCALLTYPE *EnumAdapters )(
  1451. IDXGIFactory * This,
  1452. /* [in] */ UINT Adapter,
  1453. /* [annotation][out] */
  1454. _COM_Outptr_ IDXGIAdapter **ppAdapter);
  1455. HRESULT ( STDMETHODCALLTYPE *MakeWindowAssociation )(
  1456. IDXGIFactory * This,
  1457. HWND WindowHandle,
  1458. UINT Flags);
  1459. HRESULT ( STDMETHODCALLTYPE *GetWindowAssociation )(
  1460. IDXGIFactory * This,
  1461. /* [annotation][out] */
  1462. _Out_ HWND *pWindowHandle);
  1463. HRESULT ( STDMETHODCALLTYPE *CreateSwapChain )(
  1464. IDXGIFactory * This,
  1465. /* [annotation][in] */
  1466. _In_ IUnknown *pDevice,
  1467. /* [annotation][in] */
  1468. _In_ DXGI_SWAP_CHAIN_DESC *pDesc,
  1469. /* [annotation][out] */
  1470. _COM_Outptr_ IDXGISwapChain **ppSwapChain);
  1471. HRESULT ( STDMETHODCALLTYPE *CreateSoftwareAdapter )(
  1472. IDXGIFactory * This,
  1473. /* [in] */ HMODULE Module,
  1474. /* [annotation][out] */
  1475. _COM_Outptr_ IDXGIAdapter **ppAdapter);
  1476. END_INTERFACE
  1477. } IDXGIFactoryVtbl;
  1478. interface IDXGIFactory
  1479. {
  1480. CONST_VTBL struct IDXGIFactoryVtbl *lpVtbl;
  1481. };
  1482. #ifdef COBJMACROS
  1483. #define IDXGIFactory_QueryInterface(This,riid,ppvObject) \
  1484. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  1485. #define IDXGIFactory_AddRef(This) \
  1486. ( (This)->lpVtbl -> AddRef(This) )
  1487. #define IDXGIFactory_Release(This) \
  1488. ( (This)->lpVtbl -> Release(This) )
  1489. #define IDXGIFactory_SetPrivateData(This,Name,DataSize,pData) \
  1490. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  1491. #define IDXGIFactory_SetPrivateDataInterface(This,Name,pUnknown) \
  1492. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  1493. #define IDXGIFactory_GetPrivateData(This,Name,pDataSize,pData) \
  1494. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  1495. #define IDXGIFactory_GetParent(This,riid,ppParent) \
  1496. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  1497. #define IDXGIFactory_EnumAdapters(This,Adapter,ppAdapter) \
  1498. ( (This)->lpVtbl -> EnumAdapters(This,Adapter,ppAdapter) )
  1499. #define IDXGIFactory_MakeWindowAssociation(This,WindowHandle,Flags) \
  1500. ( (This)->lpVtbl -> MakeWindowAssociation(This,WindowHandle,Flags) )
  1501. #define IDXGIFactory_GetWindowAssociation(This,pWindowHandle) \
  1502. ( (This)->lpVtbl -> GetWindowAssociation(This,pWindowHandle) )
  1503. #define IDXGIFactory_CreateSwapChain(This,pDevice,pDesc,ppSwapChain) \
  1504. ( (This)->lpVtbl -> CreateSwapChain(This,pDevice,pDesc,ppSwapChain) )
  1505. #define IDXGIFactory_CreateSoftwareAdapter(This,Module,ppAdapter) \
  1506. ( (This)->lpVtbl -> CreateSoftwareAdapter(This,Module,ppAdapter) )
  1507. #endif /* COBJMACROS */
  1508. #endif /* C style interface */
  1509. #endif /* __IDXGIFactory_INTERFACE_DEFINED__ */
  1510. /* interface __MIDL_itf_dxgi_0000_0010 */
  1511. /* [local] */
  1512. #pragma region Desktop Family
  1513. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
  1514. HRESULT WINAPI CreateDXGIFactory(REFIID riid, _COM_Outptr_ void **ppFactory);
  1515. #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
  1516. #pragma endregion
  1517. HRESULT WINAPI CreateDXGIFactory1(REFIID riid, _COM_Outptr_ void **ppFactory);
  1518. extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0010_v0_0_c_ifspec;
  1519. extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0010_v0_0_s_ifspec;
  1520. #ifndef __IDXGIDevice_INTERFACE_DEFINED__
  1521. #define __IDXGIDevice_INTERFACE_DEFINED__
  1522. /* interface IDXGIDevice */
  1523. /* [unique][local][uuid][object] */
  1524. EXTERN_C const IID IID_IDXGIDevice;
  1525. #if defined(__cplusplus) && !defined(CINTERFACE)
  1526. MIDL_INTERFACE("54ec77fa-1377-44e6-8c32-88fd5f44c84c")
  1527. IDXGIDevice : public IDXGIObject
  1528. {
  1529. public:
  1530. virtual HRESULT STDMETHODCALLTYPE GetAdapter(
  1531. /* [annotation][out] */
  1532. _COM_Outptr_ IDXGIAdapter **pAdapter) = 0;
  1533. virtual HRESULT STDMETHODCALLTYPE CreateSurface(
  1534. /* [annotation][in] */
  1535. _In_ const DXGI_SURFACE_DESC *pDesc,
  1536. /* [in] */ UINT NumSurfaces,
  1537. /* [in] */ DXGI_USAGE Usage,
  1538. /* [annotation][in] */
  1539. _In_opt_ const DXGI_SHARED_RESOURCE *pSharedResource,
  1540. /* [annotation][out] */
  1541. _COM_Outptr_ IDXGISurface **ppSurface) = 0;
  1542. virtual HRESULT STDMETHODCALLTYPE QueryResourceResidency(
  1543. /* [annotation][size_is][in] */
  1544. _In_reads_(NumResources) IUnknown *const *ppResources,
  1545. /* [annotation][size_is][out] */
  1546. _Out_writes_(NumResources) DXGI_RESIDENCY *pResidencyStatus,
  1547. /* [in] */ UINT NumResources) = 0;
  1548. virtual HRESULT STDMETHODCALLTYPE SetGPUThreadPriority(
  1549. /* [in] */ INT Priority) = 0;
  1550. virtual HRESULT STDMETHODCALLTYPE GetGPUThreadPriority(
  1551. /* [annotation][retval][out] */
  1552. _Out_ INT *pPriority) = 0;
  1553. };
  1554. #else /* C style interface */
  1555. typedef struct IDXGIDeviceVtbl
  1556. {
  1557. BEGIN_INTERFACE
  1558. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  1559. IDXGIDevice * This,
  1560. /* [in] */ REFIID riid,
  1561. /* [annotation][iid_is][out] */
  1562. _COM_Outptr_ void **ppvObject);
  1563. ULONG ( STDMETHODCALLTYPE *AddRef )(
  1564. IDXGIDevice * This);
  1565. ULONG ( STDMETHODCALLTYPE *Release )(
  1566. IDXGIDevice * This);
  1567. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  1568. IDXGIDevice * This,
  1569. /* [annotation][in] */
  1570. _In_ REFGUID Name,
  1571. /* [in] */ UINT DataSize,
  1572. /* [annotation][in] */
  1573. _In_reads_bytes_(DataSize) const void *pData);
  1574. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  1575. IDXGIDevice * This,
  1576. /* [annotation][in] */
  1577. _In_ REFGUID Name,
  1578. /* [annotation][in] */
  1579. _In_opt_ const IUnknown *pUnknown);
  1580. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  1581. IDXGIDevice * This,
  1582. /* [annotation][in] */
  1583. _In_ REFGUID Name,
  1584. /* [annotation][out][in] */
  1585. _Inout_ UINT *pDataSize,
  1586. /* [annotation][out] */
  1587. _Out_writes_bytes_(*pDataSize) void *pData);
  1588. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  1589. IDXGIDevice * This,
  1590. /* [annotation][in] */
  1591. _In_ REFIID riid,
  1592. /* [annotation][retval][out] */
  1593. _COM_Outptr_ void **ppParent);
  1594. HRESULT ( STDMETHODCALLTYPE *GetAdapter )(
  1595. IDXGIDevice * This,
  1596. /* [annotation][out] */
  1597. _COM_Outptr_ IDXGIAdapter **pAdapter);
  1598. HRESULT ( STDMETHODCALLTYPE *CreateSurface )(
  1599. IDXGIDevice * This,
  1600. /* [annotation][in] */
  1601. _In_ const DXGI_SURFACE_DESC *pDesc,
  1602. /* [in] */ UINT NumSurfaces,
  1603. /* [in] */ DXGI_USAGE Usage,
  1604. /* [annotation][in] */
  1605. _In_opt_ const DXGI_SHARED_RESOURCE *pSharedResource,
  1606. /* [annotation][out] */
  1607. _COM_Outptr_ IDXGISurface **ppSurface);
  1608. HRESULT ( STDMETHODCALLTYPE *QueryResourceResidency )(
  1609. IDXGIDevice * This,
  1610. /* [annotation][size_is][in] */
  1611. _In_reads_(NumResources) IUnknown *const *ppResources,
  1612. /* [annotation][size_is][out] */
  1613. _Out_writes_(NumResources) DXGI_RESIDENCY *pResidencyStatus,
  1614. /* [in] */ UINT NumResources);
  1615. HRESULT ( STDMETHODCALLTYPE *SetGPUThreadPriority )(
  1616. IDXGIDevice * This,
  1617. /* [in] */ INT Priority);
  1618. HRESULT ( STDMETHODCALLTYPE *GetGPUThreadPriority )(
  1619. IDXGIDevice * This,
  1620. /* [annotation][retval][out] */
  1621. _Out_ INT *pPriority);
  1622. END_INTERFACE
  1623. } IDXGIDeviceVtbl;
  1624. interface IDXGIDevice
  1625. {
  1626. CONST_VTBL struct IDXGIDeviceVtbl *lpVtbl;
  1627. };
  1628. #ifdef COBJMACROS
  1629. #define IDXGIDevice_QueryInterface(This,riid,ppvObject) \
  1630. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  1631. #define IDXGIDevice_AddRef(This) \
  1632. ( (This)->lpVtbl -> AddRef(This) )
  1633. #define IDXGIDevice_Release(This) \
  1634. ( (This)->lpVtbl -> Release(This) )
  1635. #define IDXGIDevice_SetPrivateData(This,Name,DataSize,pData) \
  1636. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  1637. #define IDXGIDevice_SetPrivateDataInterface(This,Name,pUnknown) \
  1638. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  1639. #define IDXGIDevice_GetPrivateData(This,Name,pDataSize,pData) \
  1640. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  1641. #define IDXGIDevice_GetParent(This,riid,ppParent) \
  1642. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  1643. #define IDXGIDevice_GetAdapter(This,pAdapter) \
  1644. ( (This)->lpVtbl -> GetAdapter(This,pAdapter) )
  1645. #define IDXGIDevice_CreateSurface(This,pDesc,NumSurfaces,Usage,pSharedResource,ppSurface) \
  1646. ( (This)->lpVtbl -> CreateSurface(This,pDesc,NumSurfaces,Usage,pSharedResource,ppSurface) )
  1647. #define IDXGIDevice_QueryResourceResidency(This,ppResources,pResidencyStatus,NumResources) \
  1648. ( (This)->lpVtbl -> QueryResourceResidency(This,ppResources,pResidencyStatus,NumResources) )
  1649. #define IDXGIDevice_SetGPUThreadPriority(This,Priority) \
  1650. ( (This)->lpVtbl -> SetGPUThreadPriority(This,Priority) )
  1651. #define IDXGIDevice_GetGPUThreadPriority(This,pPriority) \
  1652. ( (This)->lpVtbl -> GetGPUThreadPriority(This,pPriority) )
  1653. #endif /* COBJMACROS */
  1654. #endif /* C style interface */
  1655. #endif /* __IDXGIDevice_INTERFACE_DEFINED__ */
  1656. /* interface __MIDL_itf_dxgi_0000_0011 */
  1657. /* [local] */
  1658. typedef
  1659. enum DXGI_ADAPTER_FLAG
  1660. {
  1661. DXGI_ADAPTER_FLAG_NONE = 0,
  1662. DXGI_ADAPTER_FLAG_REMOTE = 1,
  1663. DXGI_ADAPTER_FLAG_SOFTWARE = 2,
  1664. DXGI_ADAPTER_FLAG_FORCE_DWORD = 0xffffffff
  1665. } DXGI_ADAPTER_FLAG;
  1666. typedef struct DXGI_ADAPTER_DESC1
  1667. {
  1668. WCHAR Description[ 128 ];
  1669. UINT VendorId;
  1670. UINT DeviceId;
  1671. UINT SubSysId;
  1672. UINT Revision;
  1673. SIZE_T DedicatedVideoMemory;
  1674. SIZE_T DedicatedSystemMemory;
  1675. SIZE_T SharedSystemMemory;
  1676. LUID AdapterLuid;
  1677. UINT Flags;
  1678. } DXGI_ADAPTER_DESC1;
  1679. typedef struct DXGI_DISPLAY_COLOR_SPACE
  1680. {
  1681. FLOAT PrimaryCoordinates[ 8 ][ 2 ];
  1682. FLOAT WhitePoints[ 16 ][ 2 ];
  1683. } DXGI_DISPLAY_COLOR_SPACE;
  1684. extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0011_v0_0_c_ifspec;
  1685. extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0011_v0_0_s_ifspec;
  1686. #ifndef __IDXGIFactory1_INTERFACE_DEFINED__
  1687. #define __IDXGIFactory1_INTERFACE_DEFINED__
  1688. /* interface IDXGIFactory1 */
  1689. /* [unique][local][uuid][object] */
  1690. EXTERN_C const IID IID_IDXGIFactory1;
  1691. #if defined(__cplusplus) && !defined(CINTERFACE)
  1692. MIDL_INTERFACE("770aae78-f26f-4dba-a829-253c83d1b387")
  1693. IDXGIFactory1 : public IDXGIFactory
  1694. {
  1695. public:
  1696. virtual HRESULT STDMETHODCALLTYPE EnumAdapters1(
  1697. /* [in] */ UINT Adapter,
  1698. /* [annotation][out] */
  1699. _COM_Outptr_ IDXGIAdapter1 **ppAdapter) = 0;
  1700. virtual BOOL STDMETHODCALLTYPE IsCurrent( void) = 0;
  1701. };
  1702. #else /* C style interface */
  1703. typedef struct IDXGIFactory1Vtbl
  1704. {
  1705. BEGIN_INTERFACE
  1706. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  1707. IDXGIFactory1 * This,
  1708. /* [in] */ REFIID riid,
  1709. /* [annotation][iid_is][out] */
  1710. _COM_Outptr_ void **ppvObject);
  1711. ULONG ( STDMETHODCALLTYPE *AddRef )(
  1712. IDXGIFactory1 * This);
  1713. ULONG ( STDMETHODCALLTYPE *Release )(
  1714. IDXGIFactory1 * This);
  1715. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  1716. IDXGIFactory1 * This,
  1717. /* [annotation][in] */
  1718. _In_ REFGUID Name,
  1719. /* [in] */ UINT DataSize,
  1720. /* [annotation][in] */
  1721. _In_reads_bytes_(DataSize) const void *pData);
  1722. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  1723. IDXGIFactory1 * This,
  1724. /* [annotation][in] */
  1725. _In_ REFGUID Name,
  1726. /* [annotation][in] */
  1727. _In_opt_ const IUnknown *pUnknown);
  1728. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  1729. IDXGIFactory1 * This,
  1730. /* [annotation][in] */
  1731. _In_ REFGUID Name,
  1732. /* [annotation][out][in] */
  1733. _Inout_ UINT *pDataSize,
  1734. /* [annotation][out] */
  1735. _Out_writes_bytes_(*pDataSize) void *pData);
  1736. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  1737. IDXGIFactory1 * This,
  1738. /* [annotation][in] */
  1739. _In_ REFIID riid,
  1740. /* [annotation][retval][out] */
  1741. _COM_Outptr_ void **ppParent);
  1742. HRESULT ( STDMETHODCALLTYPE *EnumAdapters )(
  1743. IDXGIFactory1 * This,
  1744. /* [in] */ UINT Adapter,
  1745. /* [annotation][out] */
  1746. _COM_Outptr_ IDXGIAdapter **ppAdapter);
  1747. HRESULT ( STDMETHODCALLTYPE *MakeWindowAssociation )(
  1748. IDXGIFactory1 * This,
  1749. HWND WindowHandle,
  1750. UINT Flags);
  1751. HRESULT ( STDMETHODCALLTYPE *GetWindowAssociation )(
  1752. IDXGIFactory1 * This,
  1753. /* [annotation][out] */
  1754. _Out_ HWND *pWindowHandle);
  1755. HRESULT ( STDMETHODCALLTYPE *CreateSwapChain )(
  1756. IDXGIFactory1 * This,
  1757. /* [annotation][in] */
  1758. _In_ IUnknown *pDevice,
  1759. /* [annotation][in] */
  1760. _In_ DXGI_SWAP_CHAIN_DESC *pDesc,
  1761. /* [annotation][out] */
  1762. _COM_Outptr_ IDXGISwapChain **ppSwapChain);
  1763. HRESULT ( STDMETHODCALLTYPE *CreateSoftwareAdapter )(
  1764. IDXGIFactory1 * This,
  1765. /* [in] */ HMODULE Module,
  1766. /* [annotation][out] */
  1767. _COM_Outptr_ IDXGIAdapter **ppAdapter);
  1768. HRESULT ( STDMETHODCALLTYPE *EnumAdapters1 )(
  1769. IDXGIFactory1 * This,
  1770. /* [in] */ UINT Adapter,
  1771. /* [annotation][out] */
  1772. _COM_Outptr_ IDXGIAdapter1 **ppAdapter);
  1773. BOOL ( STDMETHODCALLTYPE *IsCurrent )(
  1774. IDXGIFactory1 * This);
  1775. END_INTERFACE
  1776. } IDXGIFactory1Vtbl;
  1777. interface IDXGIFactory1
  1778. {
  1779. CONST_VTBL struct IDXGIFactory1Vtbl *lpVtbl;
  1780. };
  1781. #ifdef COBJMACROS
  1782. #define IDXGIFactory1_QueryInterface(This,riid,ppvObject) \
  1783. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  1784. #define IDXGIFactory1_AddRef(This) \
  1785. ( (This)->lpVtbl -> AddRef(This) )
  1786. #define IDXGIFactory1_Release(This) \
  1787. ( (This)->lpVtbl -> Release(This) )
  1788. #define IDXGIFactory1_SetPrivateData(This,Name,DataSize,pData) \
  1789. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  1790. #define IDXGIFactory1_SetPrivateDataInterface(This,Name,pUnknown) \
  1791. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  1792. #define IDXGIFactory1_GetPrivateData(This,Name,pDataSize,pData) \
  1793. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  1794. #define IDXGIFactory1_GetParent(This,riid,ppParent) \
  1795. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  1796. #define IDXGIFactory1_EnumAdapters(This,Adapter,ppAdapter) \
  1797. ( (This)->lpVtbl -> EnumAdapters(This,Adapter,ppAdapter) )
  1798. #define IDXGIFactory1_MakeWindowAssociation(This,WindowHandle,Flags) \
  1799. ( (This)->lpVtbl -> MakeWindowAssociation(This,WindowHandle,Flags) )
  1800. #define IDXGIFactory1_GetWindowAssociation(This,pWindowHandle) \
  1801. ( (This)->lpVtbl -> GetWindowAssociation(This,pWindowHandle) )
  1802. #define IDXGIFactory1_CreateSwapChain(This,pDevice,pDesc,ppSwapChain) \
  1803. ( (This)->lpVtbl -> CreateSwapChain(This,pDevice,pDesc,ppSwapChain) )
  1804. #define IDXGIFactory1_CreateSoftwareAdapter(This,Module,ppAdapter) \
  1805. ( (This)->lpVtbl -> CreateSoftwareAdapter(This,Module,ppAdapter) )
  1806. #define IDXGIFactory1_EnumAdapters1(This,Adapter,ppAdapter) \
  1807. ( (This)->lpVtbl -> EnumAdapters1(This,Adapter,ppAdapter) )
  1808. #define IDXGIFactory1_IsCurrent(This) \
  1809. ( (This)->lpVtbl -> IsCurrent(This) )
  1810. #endif /* COBJMACROS */
  1811. #endif /* C style interface */
  1812. #endif /* __IDXGIFactory1_INTERFACE_DEFINED__ */
  1813. #ifndef __IDXGIAdapter1_INTERFACE_DEFINED__
  1814. #define __IDXGIAdapter1_INTERFACE_DEFINED__
  1815. /* interface IDXGIAdapter1 */
  1816. /* [unique][local][uuid][object] */
  1817. EXTERN_C const IID IID_IDXGIAdapter1;
  1818. #if defined(__cplusplus) && !defined(CINTERFACE)
  1819. MIDL_INTERFACE("29038f61-3839-4626-91fd-086879011a05")
  1820. IDXGIAdapter1 : public IDXGIAdapter
  1821. {
  1822. public:
  1823. virtual HRESULT STDMETHODCALLTYPE GetDesc1(
  1824. /* [annotation][out] */
  1825. _Out_ DXGI_ADAPTER_DESC1 *pDesc) = 0;
  1826. };
  1827. #else /* C style interface */
  1828. typedef struct IDXGIAdapter1Vtbl
  1829. {
  1830. BEGIN_INTERFACE
  1831. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  1832. IDXGIAdapter1 * This,
  1833. /* [in] */ REFIID riid,
  1834. /* [annotation][iid_is][out] */
  1835. _COM_Outptr_ void **ppvObject);
  1836. ULONG ( STDMETHODCALLTYPE *AddRef )(
  1837. IDXGIAdapter1 * This);
  1838. ULONG ( STDMETHODCALLTYPE *Release )(
  1839. IDXGIAdapter1 * This);
  1840. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  1841. IDXGIAdapter1 * This,
  1842. /* [annotation][in] */
  1843. _In_ REFGUID Name,
  1844. /* [in] */ UINT DataSize,
  1845. /* [annotation][in] */
  1846. _In_reads_bytes_(DataSize) const void *pData);
  1847. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  1848. IDXGIAdapter1 * This,
  1849. /* [annotation][in] */
  1850. _In_ REFGUID Name,
  1851. /* [annotation][in] */
  1852. _In_opt_ const IUnknown *pUnknown);
  1853. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  1854. IDXGIAdapter1 * This,
  1855. /* [annotation][in] */
  1856. _In_ REFGUID Name,
  1857. /* [annotation][out][in] */
  1858. _Inout_ UINT *pDataSize,
  1859. /* [annotation][out] */
  1860. _Out_writes_bytes_(*pDataSize) void *pData);
  1861. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  1862. IDXGIAdapter1 * This,
  1863. /* [annotation][in] */
  1864. _In_ REFIID riid,
  1865. /* [annotation][retval][out] */
  1866. _COM_Outptr_ void **ppParent);
  1867. HRESULT ( STDMETHODCALLTYPE *EnumOutputs )(
  1868. IDXGIAdapter1 * This,
  1869. /* [in] */ UINT Output,
  1870. /* [annotation][out][in] */
  1871. _COM_Outptr_ IDXGIOutput **ppOutput);
  1872. HRESULT ( STDMETHODCALLTYPE *GetDesc )(
  1873. IDXGIAdapter1 * This,
  1874. /* [annotation][out] */
  1875. _Out_ DXGI_ADAPTER_DESC *pDesc);
  1876. HRESULT ( STDMETHODCALLTYPE *CheckInterfaceSupport )(
  1877. IDXGIAdapter1 * This,
  1878. /* [annotation][in] */
  1879. _In_ REFGUID InterfaceName,
  1880. /* [annotation][out] */
  1881. _Out_ LARGE_INTEGER *pUMDVersion);
  1882. HRESULT ( STDMETHODCALLTYPE *GetDesc1 )(
  1883. IDXGIAdapter1 * This,
  1884. /* [annotation][out] */
  1885. _Out_ DXGI_ADAPTER_DESC1 *pDesc);
  1886. END_INTERFACE
  1887. } IDXGIAdapter1Vtbl;
  1888. interface IDXGIAdapter1
  1889. {
  1890. CONST_VTBL struct IDXGIAdapter1Vtbl *lpVtbl;
  1891. };
  1892. #ifdef COBJMACROS
  1893. #define IDXGIAdapter1_QueryInterface(This,riid,ppvObject) \
  1894. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  1895. #define IDXGIAdapter1_AddRef(This) \
  1896. ( (This)->lpVtbl -> AddRef(This) )
  1897. #define IDXGIAdapter1_Release(This) \
  1898. ( (This)->lpVtbl -> Release(This) )
  1899. #define IDXGIAdapter1_SetPrivateData(This,Name,DataSize,pData) \
  1900. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  1901. #define IDXGIAdapter1_SetPrivateDataInterface(This,Name,pUnknown) \
  1902. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  1903. #define IDXGIAdapter1_GetPrivateData(This,Name,pDataSize,pData) \
  1904. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  1905. #define IDXGIAdapter1_GetParent(This,riid,ppParent) \
  1906. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  1907. #define IDXGIAdapter1_EnumOutputs(This,Output,ppOutput) \
  1908. ( (This)->lpVtbl -> EnumOutputs(This,Output,ppOutput) )
  1909. #define IDXGIAdapter1_GetDesc(This,pDesc) \
  1910. ( (This)->lpVtbl -> GetDesc(This,pDesc) )
  1911. #define IDXGIAdapter1_CheckInterfaceSupport(This,InterfaceName,pUMDVersion) \
  1912. ( (This)->lpVtbl -> CheckInterfaceSupport(This,InterfaceName,pUMDVersion) )
  1913. #define IDXGIAdapter1_GetDesc1(This,pDesc) \
  1914. ( (This)->lpVtbl -> GetDesc1(This,pDesc) )
  1915. #endif /* COBJMACROS */
  1916. #endif /* C style interface */
  1917. #endif /* __IDXGIAdapter1_INTERFACE_DEFINED__ */
  1918. #ifndef __IDXGIDevice1_INTERFACE_DEFINED__
  1919. #define __IDXGIDevice1_INTERFACE_DEFINED__
  1920. /* interface IDXGIDevice1 */
  1921. /* [unique][local][uuid][object] */
  1922. EXTERN_C const IID IID_IDXGIDevice1;
  1923. #if defined(__cplusplus) && !defined(CINTERFACE)
  1924. MIDL_INTERFACE("77db970f-6276-48ba-ba28-070143b4392c")
  1925. IDXGIDevice1 : public IDXGIDevice
  1926. {
  1927. public:
  1928. virtual HRESULT STDMETHODCALLTYPE SetMaximumFrameLatency(
  1929. /* [in] */ UINT MaxLatency) = 0;
  1930. virtual HRESULT STDMETHODCALLTYPE GetMaximumFrameLatency(
  1931. /* [annotation][out] */
  1932. _Out_ UINT *pMaxLatency) = 0;
  1933. };
  1934. #else /* C style interface */
  1935. typedef struct IDXGIDevice1Vtbl
  1936. {
  1937. BEGIN_INTERFACE
  1938. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  1939. IDXGIDevice1 * This,
  1940. /* [in] */ REFIID riid,
  1941. /* [annotation][iid_is][out] */
  1942. _COM_Outptr_ void **ppvObject);
  1943. ULONG ( STDMETHODCALLTYPE *AddRef )(
  1944. IDXGIDevice1 * This);
  1945. ULONG ( STDMETHODCALLTYPE *Release )(
  1946. IDXGIDevice1 * This);
  1947. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  1948. IDXGIDevice1 * This,
  1949. /* [annotation][in] */
  1950. _In_ REFGUID Name,
  1951. /* [in] */ UINT DataSize,
  1952. /* [annotation][in] */
  1953. _In_reads_bytes_(DataSize) const void *pData);
  1954. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  1955. IDXGIDevice1 * This,
  1956. /* [annotation][in] */
  1957. _In_ REFGUID Name,
  1958. /* [annotation][in] */
  1959. _In_opt_ const IUnknown *pUnknown);
  1960. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  1961. IDXGIDevice1 * This,
  1962. /* [annotation][in] */
  1963. _In_ REFGUID Name,
  1964. /* [annotation][out][in] */
  1965. _Inout_ UINT *pDataSize,
  1966. /* [annotation][out] */
  1967. _Out_writes_bytes_(*pDataSize) void *pData);
  1968. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  1969. IDXGIDevice1 * This,
  1970. /* [annotation][in] */
  1971. _In_ REFIID riid,
  1972. /* [annotation][retval][out] */
  1973. _COM_Outptr_ void **ppParent);
  1974. HRESULT ( STDMETHODCALLTYPE *GetAdapter )(
  1975. IDXGIDevice1 * This,
  1976. /* [annotation][out] */
  1977. _COM_Outptr_ IDXGIAdapter **pAdapter);
  1978. HRESULT ( STDMETHODCALLTYPE *CreateSurface )(
  1979. IDXGIDevice1 * This,
  1980. /* [annotation][in] */
  1981. _In_ const DXGI_SURFACE_DESC *pDesc,
  1982. /* [in] */ UINT NumSurfaces,
  1983. /* [in] */ DXGI_USAGE Usage,
  1984. /* [annotation][in] */
  1985. _In_opt_ const DXGI_SHARED_RESOURCE *pSharedResource,
  1986. /* [annotation][out] */
  1987. _COM_Outptr_ IDXGISurface **ppSurface);
  1988. HRESULT ( STDMETHODCALLTYPE *QueryResourceResidency )(
  1989. IDXGIDevice1 * This,
  1990. /* [annotation][size_is][in] */
  1991. _In_reads_(NumResources) IUnknown *const *ppResources,
  1992. /* [annotation][size_is][out] */
  1993. _Out_writes_(NumResources) DXGI_RESIDENCY *pResidencyStatus,
  1994. /* [in] */ UINT NumResources);
  1995. HRESULT ( STDMETHODCALLTYPE *SetGPUThreadPriority )(
  1996. IDXGIDevice1 * This,
  1997. /* [in] */ INT Priority);
  1998. HRESULT ( STDMETHODCALLTYPE *GetGPUThreadPriority )(
  1999. IDXGIDevice1 * This,
  2000. /* [annotation][retval][out] */
  2001. _Out_ INT *pPriority);
  2002. HRESULT ( STDMETHODCALLTYPE *SetMaximumFrameLatency )(
  2003. IDXGIDevice1 * This,
  2004. /* [in] */ UINT MaxLatency);
  2005. HRESULT ( STDMETHODCALLTYPE *GetMaximumFrameLatency )(
  2006. IDXGIDevice1 * This,
  2007. /* [annotation][out] */
  2008. _Out_ UINT *pMaxLatency);
  2009. END_INTERFACE
  2010. } IDXGIDevice1Vtbl;
  2011. interface IDXGIDevice1
  2012. {
  2013. CONST_VTBL struct IDXGIDevice1Vtbl *lpVtbl;
  2014. };
  2015. #ifdef COBJMACROS
  2016. #define IDXGIDevice1_QueryInterface(This,riid,ppvObject) \
  2017. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  2018. #define IDXGIDevice1_AddRef(This) \
  2019. ( (This)->lpVtbl -> AddRef(This) )
  2020. #define IDXGIDevice1_Release(This) \
  2021. ( (This)->lpVtbl -> Release(This) )
  2022. #define IDXGIDevice1_SetPrivateData(This,Name,DataSize,pData) \
  2023. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  2024. #define IDXGIDevice1_SetPrivateDataInterface(This,Name,pUnknown) \
  2025. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  2026. #define IDXGIDevice1_GetPrivateData(This,Name,pDataSize,pData) \
  2027. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  2028. #define IDXGIDevice1_GetParent(This,riid,ppParent) \
  2029. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  2030. #define IDXGIDevice1_GetAdapter(This,pAdapter) \
  2031. ( (This)->lpVtbl -> GetAdapter(This,pAdapter) )
  2032. #define IDXGIDevice1_CreateSurface(This,pDesc,NumSurfaces,Usage,pSharedResource,ppSurface) \
  2033. ( (This)->lpVtbl -> CreateSurface(This,pDesc,NumSurfaces,Usage,pSharedResource,ppSurface) )
  2034. #define IDXGIDevice1_QueryResourceResidency(This,ppResources,pResidencyStatus,NumResources) \
  2035. ( (This)->lpVtbl -> QueryResourceResidency(This,ppResources,pResidencyStatus,NumResources) )
  2036. #define IDXGIDevice1_SetGPUThreadPriority(This,Priority) \
  2037. ( (This)->lpVtbl -> SetGPUThreadPriority(This,Priority) )
  2038. #define IDXGIDevice1_GetGPUThreadPriority(This,pPriority) \
  2039. ( (This)->lpVtbl -> GetGPUThreadPriority(This,pPriority) )
  2040. #define IDXGIDevice1_SetMaximumFrameLatency(This,MaxLatency) \
  2041. ( (This)->lpVtbl -> SetMaximumFrameLatency(This,MaxLatency) )
  2042. #define IDXGIDevice1_GetMaximumFrameLatency(This,pMaxLatency) \
  2043. ( (This)->lpVtbl -> GetMaximumFrameLatency(This,pMaxLatency) )
  2044. #endif /* COBJMACROS */
  2045. #endif /* C style interface */
  2046. #endif /* __IDXGIDevice1_INTERFACE_DEFINED__ */
  2047. /* interface __MIDL_itf_dxgi_0000_0014 */
  2048. /* [local] */
  2049. #ifdef __cplusplus
  2050. #endif /*__cplusplus*/
  2051. DEFINE_GUID(IID_IDXGIObject,0xaec22fb8,0x76f3,0x4639,0x9b,0xe0,0x28,0xeb,0x43,0xa6,0x7a,0x2e);
  2052. DEFINE_GUID(IID_IDXGIDeviceSubObject,0x3d3e0379,0xf9de,0x4d58,0xbb,0x6c,0x18,0xd6,0x29,0x92,0xf1,0xa6);
  2053. DEFINE_GUID(IID_IDXGIResource,0x035f3ab4,0x482e,0x4e50,0xb4,0x1f,0x8a,0x7f,0x8b,0xd8,0x96,0x0b);
  2054. DEFINE_GUID(IID_IDXGIKeyedMutex,0x9d8e1289,0xd7b3,0x465f,0x81,0x26,0x25,0x0e,0x34,0x9a,0xf8,0x5d);
  2055. DEFINE_GUID(IID_IDXGISurface,0xcafcb56c,0x6ac3,0x4889,0xbf,0x47,0x9e,0x23,0xbb,0xd2,0x60,0xec);
  2056. DEFINE_GUID(IID_IDXGISurface1,0x4AE63092,0x6327,0x4c1b,0x80,0xAE,0xBF,0xE1,0x2E,0xA3,0x2B,0x86);
  2057. DEFINE_GUID(IID_IDXGIAdapter,0x2411e7e1,0x12ac,0x4ccf,0xbd,0x14,0x97,0x98,0xe8,0x53,0x4d,0xc0);
  2058. DEFINE_GUID(IID_IDXGIOutput,0xae02eedb,0xc735,0x4690,0x8d,0x52,0x5a,0x8d,0xc2,0x02,0x13,0xaa);
  2059. DEFINE_GUID(IID_IDXGISwapChain,0x310d36a0,0xd2e7,0x4c0a,0xaa,0x04,0x6a,0x9d,0x23,0xb8,0x88,0x6a);
  2060. DEFINE_GUID(IID_IDXGIFactory,0x7b7166ec,0x21c7,0x44ae,0xb2,0x1a,0xc9,0xae,0x32,0x1a,0xe3,0x69);
  2061. DEFINE_GUID(IID_IDXGIDevice,0x54ec77fa,0x1377,0x44e6,0x8c,0x32,0x88,0xfd,0x5f,0x44,0xc8,0x4c);
  2062. DEFINE_GUID(IID_IDXGIFactory1,0x770aae78,0xf26f,0x4dba,0xa8,0x29,0x25,0x3c,0x83,0xd1,0xb3,0x87);
  2063. DEFINE_GUID(IID_IDXGIAdapter1,0x29038f61,0x3839,0x4626,0x91,0xfd,0x08,0x68,0x79,0x01,0x1a,0x05);
  2064. DEFINE_GUID(IID_IDXGIDevice1,0x77db970f,0x6276,0x48ba,0xba,0x28,0x07,0x01,0x43,0xb4,0x39,0x2c);
  2065. extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0014_v0_0_c_ifspec;
  2066. extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0014_v0_0_s_ifspec;
  2067. /* Additional Prototypes for ALL interfaces */
  2068. /* end of Additional Prototypes */
  2069. #ifdef __cplusplus
  2070. }
  2071. #endif
  2072. #endif