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