Rob Shearman : ole32: Add a test for the retrieved local class object in another thread being a proxy .

Alexandre Julliard julliard at wine.codeweavers.com
Tue May 8 06:59:41 CDT 2007


Module: wine
Branch: master
Commit: 71ada5c65472ce16ac5cd9bcf317bec0b49ae027
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=71ada5c65472ce16ac5cd9bcf317bec0b49ae027

Author: Rob Shearman <rob at codeweavers.com>
Date:   Tue May  8 00:03:18 2007 +0100

ole32: Add a test for the retrieved local class object in another thread being a proxy.

---

 dlls/ole32/tests/compobj.c |   27 ++++++++++++++++++++++++++-
 1 files changed, 26 insertions(+), 1 deletions(-)

diff --git a/dlls/ole32/tests/compobj.c b/dlls/ole32/tests/compobj.c
index 739dec1..12fe4f6 100644
--- a/dlls/ole32/tests/compobj.c
+++ b/dlls/ole32/tests/compobj.c
@@ -747,6 +747,31 @@ static DWORD CALLBACK get_class_object_thread(LPVOID pv)
     return hr;
 }
 
+static DWORD CALLBACK get_class_object_proxy_thread(LPVOID pv)
+{
+    CLSCTX clsctx = (CLSCTX)(DWORD_PTR)pv;
+    HRESULT hr;
+    IClassFactory *pcf;
+    IMultiQI *pMQI;
+
+    pCoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
+
+    hr = CoGetClassObject(&CLSID_WineOOPTest, clsctx, NULL, &IID_IClassFactory,
+                          (void **)&pcf);
+
+    if (SUCCEEDED(hr))
+    {
+        hr = IClassFactory_QueryInterface(pcf, &IID_IMultiQI, (void **)&pMQI);
+        if (SUCCEEDED(hr))
+            IMultiQI_Release(pMQI);
+        IClassFactory_Release(pcf);
+    }
+
+    CoUninitialize();
+
+    return hr;
+}
+
 static DWORD CALLBACK register_class_object_thread(LPVOID pv)
 {
     HRESULT hr;
@@ -821,7 +846,7 @@ static void test_registered_object_thread_affinity(void)
                                CLSCTX_LOCAL_SERVER, REGCLS_MULTIPLEUSE, &cookie);
     ok_ole_success(hr, "CoRegisterClassObject");
 
-    thread = CreateThread(NULL, 0, get_class_object_thread, (LPVOID)CLSCTX_LOCAL_SERVER, 0, &tid);
+    thread = CreateThread(NULL, 0, get_class_object_proxy_thread, (LPVOID)CLSCTX_LOCAL_SERVER, 0, &tid);
     ok(thread != NULL, "CreateThread failed with error %d\n", GetLastError());
     while (MsgWaitForMultipleObjects(1, &thread, FALSE, INFINITE, QS_ALLINPUT) == WAIT_OBJECT_0 + 1)
     {




More information about the wine-cvs mailing list