Counter Strike : Global Offensive Source Code
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2901 lines
88 KiB

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