45 return IUnknown_QueryInterface(
This->ref_unk,
riid,
ppv);
66 IUnknown_Release(
This->iface);
67 IUnknown_Release(
This->ref_unk);
77#define DEFINE_WRAPPER_FUNC(n, off, x) HRESULT wrapper_func_##n(IUnknown*);
79#define DEFINE_WRAPPER_FUNC(n, off, x) \
80 HRESULT wrapper_func_##n(IUnknown*); \
81 __ASM_GLOBAL_FUNC(wrapper_func_##n, \
82 "movl 4(%esp), %eax\n\t" \
83 "movl 4(%eax), %eax\n\t" \
84 "movl %eax, 4(%esp)\n\t" \
85 "movl 0(%eax), %eax\n\t" \
86 "jmp *" #off "(%eax)\n\t")
89#elif defined(__x86_64__)
91#define DEFINE_WRAPPER_FUNC(n, x, off) \
92 HRESULT WINAPI wrapper_func_##n(IUnknown*); \
93 __ASM_GLOBAL_FUNC(wrapper_func_##n, \
94 "movq 8(%rcx), %rcx\n\t" \
95 "movq 0(%rcx), %rax\n\t" \
96 "jmp *" #off "(%rax)\n\t")
100#define DEFINE_WRAPPER_FUNC(n, x, off) \
101 static HRESULT WINAPI wrapper_func_##n(IUnknown *iface) { \
102 ERR("Not implemented for this architecture\n"); \
322 IUnknown_AddRef(iface);
323 wrapper->
iface = iface;
325 IUnknown_AddRef(ref_unk);
static void * heap_alloc(size_t len)
static BOOL heap_free(void *mem)
#define InterlockedIncrement
#define InterlockedDecrement
const char * debugstr_mshtml_guid(const GUID *iid)
static HRESULT WINAPI wrapper_AddRef(IUnknown *iface)
#define DEFINE_WRAPPER_FUNC(n, x, off)
static const void * wrapper_vtbl[]
HRESULT wrap_iface(IUnknown *iface, IUnknown *ref_unk, IUnknown **ret)
static HRESULT WINAPI wrapper_Release(IUnknown *iface)
static iface_wrapper_t * impl_from_IUnknown(IUnknown *iface)
static HRESULT WINAPI wrapper_QueryInterface(IUnknown *iface, REFIID riid, void **ppv)
#define CONTAINING_RECORD(address, type, field)