Nikolay Sivov : ole32: Implement CoGetCurrentLogicalThreadId().

Alexandre Julliard julliard at wine.codeweavers.com
Fri Mar 11 07:55:45 CST 2016


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

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Thu Mar 10 12:51:33 2016 +0300

ole32: Implement CoGetCurrentLogicalThreadId().

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ole32/compobj.c       | 14 ++++++++++++++
 dlls/ole32/ole2stubs.c     |  9 ---------
 dlls/ole32/tests/compobj.c | 15 +++++++++++++++
 include/objbase.h          |  1 +
 4 files changed, 30 insertions(+), 9 deletions(-)

diff --git a/dlls/ole32/compobj.c b/dlls/ole32/compobj.c
index de7438c..91f11f6 100644
--- a/dlls/ole32/compobj.c
+++ b/dlls/ole32/compobj.c
@@ -3850,6 +3850,20 @@ DWORD WINAPI CoGetCurrentProcess(void)
 	return GetCurrentProcessId();
 }
 
+/***********************************************************************
+ *              CoGetCurrentLogicalThreadId        [OLE32.@]
+ */
+HRESULT WINAPI CoGetCurrentLogicalThreadId(GUID *id)
+{
+    TRACE("(%p)\n", id);
+
+    if (!id)
+        return E_INVALIDARG;
+
+    *id = COM_CurrentCausalityId();
+    return S_OK;
+}
+
 /******************************************************************************
  *		CoRegisterMessageFilter	[OLE32.@]
  *
diff --git a/dlls/ole32/ole2stubs.c b/dlls/ole32/ole2stubs.c
index 1f8b9f8..90862d0 100644
--- a/dlls/ole32/ole2stubs.c
+++ b/dlls/ole32/ole2stubs.c
@@ -83,12 +83,3 @@ HRESULT WINAPI CoGetCallerTID(LPDWORD lpdwTID)
   FIXME("stub!\n");
   return E_NOTIMPL;
 }
-
-/***********************************************************************
- *              CoGetCurrentLogicalThreadId        [OLE32.@]
- */
-HRESULT WINAPI CoGetCurrentLogicalThreadId(GUID *pguid)
-{
-  FIXME(": stub\n");
-  return E_NOTIMPL;
-}
diff --git a/dlls/ole32/tests/compobj.c b/dlls/ole32/tests/compobj.c
index 183d8a0..0f562a2 100644
--- a/dlls/ole32/tests/compobj.c
+++ b/dlls/ole32/tests/compobj.c
@@ -3093,6 +3093,20 @@ static void test_IMallocSpy(void)
     ok(hr == CO_E_OBJNOTREG, "got 0x%08x\n", hr);
 }
 
+static void test_CoGetCurrentLogicalThreadId(void)
+{
+    HRESULT hr;
+    GUID id;
+
+    hr = CoGetCurrentLogicalThreadId(NULL);
+    ok(hr == E_INVALIDARG, "got 0x%08x\n", hr);
+
+    id = GUID_NULL;
+    hr = CoGetCurrentLogicalThreadId(&id);
+    ok(hr == S_OK, "got 0x%08x\n", hr);
+    ok(!IsEqualGUID(&id, &GUID_NULL), "got null id\n");
+}
+
 static void init_funcs(void)
 {
     HMODULE hOle32 = GetModuleHandleA("ole32");
@@ -3161,4 +3175,5 @@ START_TEST(compobj)
     test_OleRegGetUserType();
     test_CoGetApartmentType();
     test_IMallocSpy();
+    test_CoGetCurrentLogicalThreadId();
 }
diff --git a/include/objbase.h b/include/objbase.h
index 02656d1..43f3357 100644
--- a/include/objbase.h
+++ b/include/objbase.h
@@ -285,6 +285,7 @@ HRESULT WINAPI CoInitialize(LPVOID lpReserved);
 HRESULT WINAPI CoInitializeEx(LPVOID lpReserved, DWORD dwCoInit);
 void WINAPI CoUninitialize(void);
 DWORD WINAPI CoGetCurrentProcess(void);
+HRESULT WINAPI CoGetCurrentLogicalThreadId(GUID *id);
 HRESULT WINAPI CoGetApartmentType(APTTYPE *type, APTTYPEQUALIFIER *qualifier);
 
 HINSTANCE WINAPI CoLoadLibrary(LPOLESTR lpszLibName, BOOL bAutoFree);




More information about the wine-cvs mailing list