VirtualBox

source: vbox/trunk/src/libs/dxvk-2.3.1/include/native/windows/unknwn.h@ 106527

Last change on this file since 106527 was 105107, checked in by vboxsync, 11 months ago

libs/dxvk-2.3.1: Make it build, bugref:10716

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 1.2 KB
Line 
1#pragma once
2
3#include "windows_base.h"
4
5typedef interface IUnknown IUnknown;
6
7DEFINE_GUID(IID_IUnknown, 0x00000000,0x0000,0x0000,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46)
8
9#ifdef __cplusplus
10struct IUnknown {
11
12public:
13
14 virtual HRESULT QueryInterface(REFIID riid, void** ppvObject) = 0;
15 template<class Q>
16 HRESULT STDMETHODCALLTYPE QueryInterface(Q **pp) {
17 return QueryInterface(__uuidof(Q), (void **)pp);
18 }
19
20 virtual ULONG AddRef() = 0;
21 virtual ULONG Release() = 0;
22
23};
24#else
25typedef struct IUnknownVtbl
26{
27BEGIN_INTERFACE
28
29 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
30 IUnknown *This,
31 REFIID riid,
32 void **ppvObject
33 );
34 ULONG (STDMETHODCALLTYPE *AddRef)(IUnknown *This);
35 ULONG (STDMETHODCALLTYPE *Release)(IUnknown *This);
36
37END_INTERFACE
38} IUnknownVtbl;
39
40interface IUnknown
41{
42 CONST_VTBL struct IUnknownVtbl *lpVtbl;
43};
44
45#define IUnknown_AddRef(This) ((This)->lpVtbl->AddRef(This))
46#define IUnknown_Release(This) ((This)->lpVtbl->Release(This))
47
48#endif // __cplusplus
49
50DECLARE_UUIDOF_HELPER(IUnknown, 0x00000000,0x0000,0x0000,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46)
51
52#define IID_PPV_ARGS(ppType) __uuidof(decltype(**(ppType))), [](auto** pp) { (void)static_cast<IUnknown*>(*pp); return reinterpret_cast<void**>(pp); }(ppType)
Note: See TracBrowser for help on using the repository browser.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette