--- /dev/null
+/*
+ * PROJECT: ReactOS Tests
+ * LICENSE: GPL - See COPYING in the top level directory
+ * FILE: queuetest.c
+ * PURPOSE: Usermode QueueUserWorkItem() testing
+ * PROGRAMMERS: Thomas Weidenmueller (w3seek@reactos.org)
+ */
+
+#include <windows.h>
+#include <stdio.h>
+
+#define WT_EXECUTEINPERSISTENTIOTHREAD 0x00000040
+BOOL WINAPI QueueUserWorkItem(LPTHREAD_START_ROUTINE,PVOID,ULONG);
+
+#define TestProc(n) \
+DWORD CALLBACK TestProc##n(void *ctx)\
+{\
+ printf("TestProc%d thread 0x%x context 0x%p\n", n, GetCurrentThreadId(), ctx);\
+ return 0;\
+}
+
+TestProc(1)
+TestProc(2)
+TestProc(3)
+TestProc(4)
+TestProc(5)
+TestProc(6)
+
+int __cdecl
+main(int argc, char* argv[])
+{
+ PVOID x = (PVOID)0x12345;
+ QueueUserWorkItem(TestProc1, x, 0);
+ QueueUserWorkItem(TestProc2, x, WT_EXECUTELONGFUNCTION);
+ QueueUserWorkItem(TestProc3, x, WT_EXECUTEINIOTHREAD);
+ QueueUserWorkItem(TestProc4, x, WT_EXECUTEINIOTHREAD | WT_EXECUTELONGFUNCTION);
+ QueueUserWorkItem(TestProc5, x, WT_EXECUTEINPERSISTENTTHREAD);
+ QueueUserWorkItem(TestProc6, x, WT_EXECUTEINPERSISTENTIOTHREAD);
+ Sleep(INFINITE);
+ return 0;
+}