29 return IUnknown_Release(
unknown);
76 &IID_ISeekingPassThru, (
void **)&passthrough);
78 ok(!passthrough,
"Got interface %p.\n", passthrough);
84 ok(unk != &
test_outer,
"Returned IUnknown should not be outer IUnknown.\n");
86 ok(
ref == 1,
"Got unexpected refcount %ld.\n",
ref);
88 ref = IUnknown_AddRef(unk);
89 ok(
ref == 2,
"Got unexpected refcount %ld.\n",
ref);
92 ref = IUnknown_Release(unk);
93 ok(
ref == 1,
"Got unexpected refcount %ld.\n",
ref);
98 ok(unk2 == unk,
"Got unexpected IUnknown %p.\n", unk2);
99 IUnknown_Release(unk2);
101 hr = IUnknown_QueryInterface(unk, &IID_ISeekingPassThru, (
void **)&passthrough);
104 hr = ISeekingPassThru_QueryInterface(passthrough, &
IID_IUnknown, (
void **)&unk2);
106 ok(unk2 == (
IUnknown *)0xdeadbeef,
"Got unexpected IUnknown %p.\n", unk2);
108 hr = ISeekingPassThru_QueryInterface(passthrough, &IID_ISeekingPassThru, (
void **)&passthrough2);
110 ok(passthrough2 == (
ISeekingPassThru *)0xdeadbeef,
"Got unexpected ISeekingPassThru %p.\n", passthrough2);
112 hr = IUnknown_QueryInterface(unk, &
test_iid, (
void **)&unk2);
114 ok(!unk2,
"Got unexpected IUnknown %p.\n", unk2);
116 hr = ISeekingPassThru_QueryInterface(passthrough, &
test_iid, (
void **)&unk2);
118 ok(unk2 == (
IUnknown *)0xdeadbeef,
"Got unexpected IUnknown %p.\n", unk2);
120 ISeekingPassThru_Release(passthrough);
121 ref = IUnknown_Release(unk);
122 ok(!
ref,
"Got unexpected refcount %ld.\n",
ref);
#define InterlockedIncrement
#define InterlockedDecrement
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
static WCHAR unknown[MAX_STRING_RESOURCE_LEN]
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
static const IUnknownVtbl outer_vtbl
static void test_aggregation(void)
static ULONG WINAPI outer_AddRef(IUnknown *iface)
static HRESULT WINAPI outer_QueryInterface(IUnknown *iface, REFIID iid, void **out)
static ULONG get_refcount(void *iface)
static IUnknown test_outer
static const GUID test_iid
static ULONG WINAPI outer_Release(IUnknown *iface)
#define IsEqualGUID(rguid1, rguid2)
static __inline const char * wine_dbgstr_guid(const GUID *id)
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out