32DEFINE_GUID(CLSID_WineTestObject, 0xdeadbeef,0xdead,0xbeef,0xde,0xad,0xbe,0xef,0xde,0xad,0xbe,0xef);
33DEFINE_GUID(CLSID_UnknownUnmarshal,0x4c1e39e1,0xe3e3,0x4296,0xaa,0x86,0xec,0x93,0x8d,0x89,0x6e,0x92);
46#define GUID_NAME(guid) \
47 { &IID_##guid, #guid }
57 { &CLSID_UnknownUnmarshal,
"CLSID_UnknownUnmarshal" },
87 IUnknown_AddRef(&
This->IUnknown_iface);
102 trace(
"server: unknown_AddRef: %p, ref %u\n", iface,
ref);
113 trace(
"server: unknown_Release: %p, ref %u\n", iface,
ref);
148 IClassFactory_AddRef(&
This->IClassFactory_iface);
149 *
ppv = &
This->IClassFactory_iface;
164 trace(
"server: factory_AddRef: %p, ref %u\n", iface,
ref);
175 trace(
"server: factory_Release: %p, ref %u\n", iface,
ref);
194 IUnknown_AddRef(&
unknown->IUnknown_iface);
196 hr = IUnknown_QueryInterface(&
unknown->IUnknown_iface, iid,
ppv);
197 IUnknown_Release(&
unknown->IUnknown_iface);
206 trace(
"server: factory_LockServer: %p,%d, ref %u\n", iface,
lock,
ref);
231 trace(
"server: registering class object\n");
236 HANDLE done_event, init_done_event;
239 ok(done_event != 0,
"server: OpenEvent error %d\n",
GetLastError());
241 ok(init_done_event != 0,
"server: OpenEvent error %d\n",
GetLastError());
245 trace(
"server: waiting for requests\n");
258 trace(
"call CoRevokeClassObject\n");
260 trace(
"ret CoRevokeClassObject\n");
263 trace(
"server: call CoUninitialize\n");
265 trace(
"server: ret CoUninitialize\n");
274 static const WCHAR clsidW[] = {
'C',
'L',
'S',
'I',
'D',
'\\',0};
281 lstrcatA(server_path,
" ole_server");
307 static const WCHAR clsidW[] = {
'C',
'L',
'S',
'I',
'D',
'\\',0};
337 memset(&si, 0,
sizeof(si));
344 sa.nLength =
sizeof(
sa);
345 sa.lpSecurityDescriptor =
NULL;
372 ok(
mapping != 0,
"CreateFileMapping failed\n");
380 ok(init_done_event != 0,
"CreateEvent error %d\n",
GetLastError());
386 trace(
"server: Refusing to be run by ole32\n");
392 info->child_failures = 0;
398 trace(
"server: Unknown parameter: %s\n",
argv[2]);
404 win_skip(
"not enough permissions to create a server CLSID key\n");
416 ok(
hr ==
S_OK,
"OleInitialize error %#x\n",
hr);
423 win_skip(
"not enough permissions to create a server CLSID key\n");
428 trace(
"call CoCreateInstance(&IID_NULL)\n");
430 trace(
"ret CoCreateInstance(&IID_NULL)\n");
434 trace(
"call CoCreateInstance(&IID_IUnknown)\n");
436 trace(
"ret CoCreateInstance(&IID_IUnknown)\n");
440 win_skip(
"In-process handler doesn't support IID_IUnknown on this platform\n");
444 trace(
"call CoCreateInstance(&IID_IOleObject)\n");
446 trace(
"ret CoCreateInstance(&IID_IOleObject)\n");
449 trace(
"call IUnknown_QueryInterface(&IID_IRunnableObject)\n");
451 trace(
"ret IUnknown_QueryInterface(&IID_IRunnableObject)\n");
452 ok(
hr ==
S_OK,
"QueryInterface(&IID_IRunnableObject) error %#x\n",
hr);
454 ret = IRunnableObject_IsRunning(runobj);
455 ok(!
ret,
"expected 0, got %d\n",
ret);
457 trace(
"call OleRun\n");
459 trace(
"ret OleRun\n");
463 ret = IRunnableObject_IsRunning(runobj);
465 ok(
ret == 1,
"expected 1, got %d\n",
ret);
467 trace(
"call IRunnableObject_Release\n");
468 ret = IRunnableObject_Release(runobj);
469 trace(
"ret IRunnableObject_Release\n");
470 ok(
ret == 1,
"expected ref 1, got %u\n",
ret);
472 trace(
"call IUnknown_QueryInterface(&IID_IOleObject)\n");
474 trace(
"ret IUnknown_QueryInterface(&IID_IOleObject)\n");
475 ok(
hr ==
S_OK,
"QueryInterface(&IID_IOleObject) error %#x\n",
hr);
477 trace(
"call IOleObject_Release\n");
478 ret = IOleObject_Release(oleobj);
479 trace(
"ret IOleObject_Release\n");
480 ok(
ret == 1,
"expected ref 1, got %u\n",
ret);
482 trace(
"call IUnknown_Release\n");
484 trace(
"ret IUnknown_Release\n");
485 ok(!
ret,
"expected ref 0, got %u\n",
ret);
489 trace(
"call CoCreateInstance(&IID_IUnknown)\n");
491 trace(
"ret CoCreateInstance(&IID_IUnknown)\n");
492 ok(
hr ==
S_OK,
"CoCreateInstance(IID_IUnknown) error %#x\n",
hr);
494 trace(
"call IUnknown_QueryInterface(&IID_IRunnableObject)\n");
496 trace(
"ret IUnknown_QueryInterface(&IID_IRunnableObject)\n");
499 trace(
"call OleRun\n");
501 trace(
"ret OleRun\n");
504 trace(
"call IUnknown_QueryInterface(&IID_IOleObject)\n");
506 trace(
"ret IUnknown_QueryInterface(&IID_IOleObject)\n");
509 trace(
"call IUnknown_Release\n");
511 trace(
"ret IUnknown_Release\n");
512 ok(!
ret,
"expected ref 0, got %u\n",
ret);
514 trace(
"call CoGetClassObject(&IID_IClassFactory)\n");
516 trace(
"ret CoGetClassObject(&IID_IClassFactory)\n");
517 ok(
hr ==
S_OK,
"CoGetClassObject error %#x\n",
hr);
519 trace(
"call IClassFactory_CreateInstance(&IID_NULL)\n");
521 trace(
"ret IClassFactory_CreateInstance(&IID_NULL)\n");
524 trace(
"call IClassFactory_CreateInstance(&IID_IOleObject)\n");
526 trace(
"ret IClassFactory_CreateInstance(&IID_IOleObject)\n");
529 trace(
"call IClassFactory_Release\n");
531 trace(
"ret IClassFactory_Release\n");
532 ok(!
ret,
"expected ref 0, got %u\n",
ret);
534 trace(
"signalling termination\n");
543 if (
info->child_failures)
545 trace(
"%d failures in child process\n",
info->child_failures);
ACPI_SIZE strlen(const char *String)
static struct sockaddr_in sa
#define InterlockedIncrement
#define InterlockedDecrement
HANDLE WINAPI GetStdHandle(IN DWORD nStdHandle)
const GUID IID_IClassFactory
#define RegCloseKey(hKey)
const CLSID CLSID_IdentityUnmarshal
static const WCHAR clsidW[]
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
LONG WINAPI RegSetValueA(HKEY hKeyOriginal, LPCSTR lpSubKey, DWORD dwType, LPCSTR lpData, DWORD cbData)
LONG WINAPI RegDeleteKeyA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey)
static WCHAR unknown[MAX_STRING_RESOURCE_LEN]
#define INVALID_HANDLE_VALUE
#define HeapFree(x, y, z)
BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessA(LPCSTR lpApplicationName, LPSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCSTR lpCurrentDirectory, LPSTARTUPINFOA lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation)
int WINAPI lstrcmpiA(LPCSTR str1, LPCSTR str2)
HRESULT WINAPI CoRegisterClassObject(REFCLSID rclsid, LPUNKNOWN pUnk, DWORD dwClsContext, DWORD flags, LPDWORD lpdwRegister)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
HRESULT WINAPI DECLSPEC_HOTPATCH CoRevokeClassObject(DWORD dwRegister)
HRESULT WINAPI DECLSPEC_HOTPATCH CoInitializeEx(LPVOID lpReserved, DWORD dwCoInit)
HRESULT WINAPI DECLSPEC_HOTPATCH CoGetClassObject(REFCLSID rclsid, DWORD dwClsContext, COSERVERINFO *pServerInfo, REFIID iid, LPVOID *ppv)
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
INT WINAPI StringFromGUID2(REFGUID id, LPOLESTR str, INT cmax)
HRESULT WINAPI DECLSPEC_HOTPATCH OleRun(LPUNKNOWN pUnknown)
void WINAPI DECLSPEC_HOTPATCH OleUninitialize(void)
HANDLE NTAPI CreateFileMappingA(IN HANDLE hFile, IN LPSECURITY_ATTRIBUTES lpFileMappingAttributes, IN DWORD flProtect, IN DWORD dwMaximumSizeHigh, IN DWORD dwMaximumSizeLow, IN LPCSTR lpName)
GLenum GLuint GLenum GLsizei const GLchar * buf
GLenum GLenum GLenum GLenum mapping
LPSTR WINAPI lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
LPSTR WINAPI lstrcatA(LPSTR lpString1, LPCSTR lpString2)
LONG winetest_get_failures(void)
void winetest_add_failures(LONG new_failures)
static void test_local_server(void)
#define KEY_CREATE_SUB_KEY
static UnknownImpl * impl_from_IUnknown(IUnknown *iface)
static const IUnknownVtbl UnknownImpl_Vtbl
static ULONG WINAPI ClassFactoryImpl_Release(IClassFactory *iface)
static ULONG WINAPI UnknownImpl_AddRef(IUnknown *iface)
static ClassFactoryImpl factory
static HRESULT WINAPI ClassFactoryImpl_LockServer(IClassFactory *iface, BOOL lock)
static ULONG WINAPI ClassFactoryImpl_AddRef(IClassFactory *iface)
static void ole_server(void)
static HRESULT WINAPI ClassFactoryImpl_CreateInstance(IClassFactory *iface, IUnknown *punkouter, REFIID iid, void **ppv)
static void unregister_server(void)
static ClassFactoryImpl * impl_from_IClassFactory(IClassFactory *iface)
static HRESULT WINAPI ClassFactoryImpl_QueryInterface(IClassFactory *iface, REFIID iid, void **ppv)
static ULONG WINAPI UnknownImpl_Release(IUnknown *iface)
static const IClassFactoryVtbl ClassFactoryImpl_Vtbl
static HRESULT WINAPI UnknownImpl_QueryInterface(IUnknown *iface, REFIID iid, void **ppv)
static const struct @1823 guid_name[]
static BOOL register_server(const char *server, BOOL inproc_handler)
static HANDLE start_server(const char *argv0)
const GUID IID_IRunnableObject
const GUID IID_IOleObject
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
#define IsEqualIID(riid1, riid2)
int winetest_get_mainargs(char ***pargv)
static char argv0[MAX_PATH]
IClassFactory IClassFactory_iface
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventA(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCSTR lpName OPTIONAL)
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
HANDLE WINAPI DECLSPEC_HOTPATCH OpenEventA(IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN LPCSTR lpName)
#define CONTAINING_RECORD(address, type, field)
static rfbScreenInfoPtr server
#define STD_OUTPUT_HANDLE
DWORD WINAPI GetLastError(void)
#define EVENT_MODIFY_STATE
DWORD WINAPI GetCurrentProcessId(void)
#define STARTF_USESTDHANDLES
#define REGDB_E_CLASSNOTREG
#define CLASS_E_NOAGGREGATION
#define HKEY_CLASSES_ROOT