31#define EXPECT_REF(obj,ref) _expect_ref((IUnknown*)obj, ref, __LINE__)
36 rc = IUnknown_Release(
obj);
37 ok_(__FILE__,
line)(rc ==
ref,
"expected refcount %ld, got %ld\n",
ref, rc);
68 ok(
res != 0,
"couldn't find resource\n");
80 IInspectable *inspect =
NULL;
99 IActivationFactory_Release(
factory);
107 IInspectable_Release(inspect);
113 ok(
hr ==
S_OK,
"WindowsCreateString returned %#lx.\n",
hr);
119 ok(
hr ==
S_OK,
"WindowsCreateString returned %#lx.\n",
hr);
123 "RoGetActivationFactory returned %#lx.\n",
hr);
129 ok(
hr ==
S_OK,
"WindowsCreateString returned %#lx.\n",
hr);
132 "RoGetActivationFactory returned %#lx.\n",
hr);
138 else ref = IActivationFactory_Release(
factory);
139 ok(
ref == 0,
"Release returned %lu\n",
ref);
157#define check_thread_apartment(a) check_thread_apartment_(__LINE__, FALSE, a)
158#define check_thread_apartment_broken(a) check_thread_apartment_(__LINE__, TRUE, a)
356 IUnknown_AddRef(iface);
369 IUnknown_AddRef(iface);
423 ok(
hr ==
S_OK,
"Got unexpected hr %#lx.\n",
hr);
424 ok(!!
unknown,
"Expected pointer not NULL.\n");
433 ok(
unknown !=
param->unk_obj,
"Expected a different object pointer.\n");
487 ok(
hr ==
S_OK,
"Got unexpected hr %#lx.\n",
hr);
493 hr = IAgileReference_QueryInterface(
agile_reference, &IID_IAgileObject, (
void **)&agile_object);
494 ok(
hr ==
S_OK,
"Got unexpected hr %#lx.\n",
hr);
495 IAgileObject_Release(agile_object);
500 ok(
hr ==
S_OK,
"Got unexpected hr %#lx.\n",
hr);
501 ok(!!
unknown,
"Expected pointer not NULL.\n");
509 ok(
hr ==
S_OK,
"Got unexpected hr %#lx.\n",
hr);
510 ok(!!unknown2,
"Expected pointer not NULL.\n");
519 param.from_type = from_type;
520 param.to_type = to_type;
529 IUnknown_Release(unknown2);
#define CO_E_NOTINITIALIZED
static struct apartment * mta
#define InterlockedIncrement
#define InterlockedDecrement
@ AGILEREFERENCE_DELAYEDMARSHAL
HRESULT WINAPI CoGetApartmentType(APTTYPE *type, APTTYPEQUALIFIER *qualifier)
HRESULT WINAPI DECLSPEC_HOTPATCH CoInitializeEx(void *reserved, DWORD model)
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
HRESULT WINAPI RoActivateInstance(HSTRING classid, IInspectable **instance)
HRESULT WINAPI DECLSPEC_HOTPATCH RoGetActivationFactory(HSTRING classid, REFIID iid, void **class_factory)
HRESULT WINAPI RoInitialize(RO_INIT_TYPE type)
HRESULT WINAPI RoGetAgileReference(enum AgileReferenceOptions option, REFIID riid, IUnknown *obj, IAgileReference **agile_reference)
void WINAPI RoUninitialize(void)
HRESULT WINAPI WindowsCreateString(LPCWSTR ptr, UINT32 len, HSTRING *out)
HRESULT WINAPI WindowsDeleteString(HSTRING str)
static WCHAR unknown[MAX_STRING_RESOURCE_LEN]
#define INVALID_HANDLE_VALUE
#define ERROR_ACCESS_DENIED
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
HRSRC WINAPI FindResourceW(HINSTANCE hModule, LPCWSTR name, LPCWSTR type)
DWORD WINAPI SizeofResource(HINSTANCE hModule, HRSRC hRsrc)
LPVOID WINAPI LockResource(HGLOBAL handle)
HGLOBAL WINAPI LoadResource(HINSTANCE hModule, HRSRC hRsrc)
ULONG WINAPI DECLSPEC_HOTPATCH GetTickCount(void)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
void __cdecl void __cdecl void __cdecl void __cdecl void __cdecl winetest_push_context(const char *fmt,...) __WINE_PRINTF_ATTR(1
#define todo_wine_if(is_todo)
void __cdecl void __cdecl void __cdecl void __cdecl void __cdecl void winetest_pop_context(void)
static struct test_info tests[]
static DWORD CALLBACK test_RoGetAgileReference_thread_proc(void *arg)
static DWORD WINAPI mta_init_implicit_thread(void *dummy)
static void load_resource(const WCHAR *filename)
static HRESULT check_thread_hr
static void test_implicit_mta(void)
#define check_thread_apartment_broken(a)
static void _expect_ref(IUnknown *obj, ULONG ref, int line)
static DWORD WINAPI mta_init_thread(void *dummy)
static HRESULT WINAPI unk_no_marshal_QueryInterface(IUnknown *iface, REFIID riid, void **ppv)
static ULONG WINAPI unk_Release(IUnknown *iface)
static struct unk_impl * impl_from_IUnknown(IUnknown *iface)
static HRESULT WINAPI unk_QueryInterface(IUnknown *iface, REFIID riid, void **ppv)
static HANDLE mta_init_thread_init_done_event
static const IUnknownVtbl unk_no_marshal_vtbl
static void flush_events(void)
static ULONG WINAPI unk_AddRef(IUnknown *iface)
static void test_RoGetAgileReference(void)
static APTTYPEQUALIFIER check_thread_aptqualifier
static void check_thread_apartment_(unsigned int line, BOOL broken_fail, HRESULT expected_hr_thread)
#define EXPECT_REF(obj, ref)
static const IUnknownVtbl unk_vtbl
#define check_thread_apartment(a)
static HANDLE mta_init_thread_done_event
static void test_ActivationFactories(void)
static DWORD WINAPI check_apartment_thread(void *dummy)
static APTTYPE check_thread_apttype
@ COINIT_APARTMENTTHREADED
@ APTTYPEQUALIFIER_IMPLICIT_MTA
enum _APTTYPEQUALIFIER APTTYPEQUALIFIER
#define IsEqualGUID(rguid1, rguid2)
XML_HIDDEN void xmlParserErrors const char const xmlChar const xmlChar * str2
enum AgileReferenceOptions option
IAgileReference * agile_reference
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
TW_UINT32 TW_UINT16 TW_UINT16 MSG
#define CONTAINING_RECORD(address, type, field)
DWORD WINAPI GetLastError(void)
#define REGDB_E_CLASSNOTREG
#define CO_E_NOT_SUPPORTED
LRESULT WINAPI DispatchMessageA(_In_ const MSG *)
DWORD WINAPI MsgWaitForMultipleObjects(_In_ DWORD nCount, _In_reads_opt_(nCount) CONST HANDLE *pHandles, _In_ BOOL fWaitAll, _In_ DWORD dwMilliseconds, _In_ DWORD dwWakeMask)
BOOL WINAPI PeekMessageA(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT, _In_ UINT)