Detlef Riekenberg : kernel: Load QueueUserWorkItem function dynamically.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Mar 23 13:50:10 CST 2006


Module: wine
Branch: refs/heads/master
Commit: 213cee62b598331143eb2c7f134bba9a30d7a552
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=213cee62b598331143eb2c7f134bba9a30d7a552

Author: Detlef Riekenberg <wine.dev at web.de>
Date:   Wed Mar 22 23:34:52 2006 +0100

kernel: Load QueueUserWorkItem function dynamically.

---

 dlls/kernel/tests/thread.c |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/dlls/kernel/tests/thread.c b/dlls/kernel/tests/thread.c
index 9788447..3a68175 100644
--- a/dlls/kernel/tests/thread.c
+++ b/dlls/kernel/tests/thread.c
@@ -58,6 +58,9 @@ static GetThreadPriorityBoost_t pGetThre
 typedef HANDLE (WINAPI *OpenThread_t)(DWORD,BOOL,DWORD);
 static OpenThread_t pOpenThread=NULL;
 
+typedef BOOL (WINAPI *QueueUserWorkItem_t)(LPTHREAD_START_ROUTINE,PVOID,ULONG);
+static QueueUserWorkItem_t pQueueUserWorkItem=NULL;
+
 typedef DWORD (WINAPI *SetThreadIdealProcessor_t)(HANDLE,DWORD);
 static SetThreadIdealProcessor_t pSetThreadIdealProcessor=NULL;
 
@@ -695,13 +698,16 @@ static void test_QueueUserWorkItem(void)
     DWORD wait_result;
     DWORD before, after;
 
+    /* QueueUserWorkItem not present on win9x */
+    if (!pQueueUserWorkItem) return;
+
     finish_event = CreateEvent(NULL, TRUE, FALSE, NULL);
 
     before = GetTickCount();
 
     for (i = 0; i < 100; i++)
     {
-        BOOL ret = QueueUserWorkItem(work_function, (void *)i, WT_EXECUTEDEFAULT);
+        BOOL ret = pQueueUserWorkItem(work_function, (void *)i, WT_EXECUTEDEFAULT);
         ok(ret, "QueueUserWorkItem failed with error %ld\n", GetLastError());
     }
 
@@ -724,6 +730,7 @@ START_TEST(thread)
    ok(lib!=NULL,"Couldn't get a handle for kernel32.dll\n");
    pGetThreadPriorityBoost=(GetThreadPriorityBoost_t)GetProcAddress(lib,"GetThreadPriorityBoost");
    pOpenThread=(OpenThread_t)GetProcAddress(lib,"OpenThread");
+   pQueueUserWorkItem=(QueueUserWorkItem_t)GetProcAddress(lib,"QueueUserWorkItem");
    pSetThreadIdealProcessor=(SetThreadIdealProcessor_t)GetProcAddress(lib,"SetThreadIdealProcessor");
    pSetThreadPriorityBoost=(SetThreadPriorityBoost_t)GetProcAddress(lib,"SetThreadPriorityBoost");
    test_CreateThread_basic();




More information about the wine-cvs mailing list