dxgi.h 99 KB

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