test case for QueueUserWorkItem from bug 1609

by w3seek

svn path=/trunk/; revision=22810
This commit is contained in:
Magnus Olsen 2006-07-03 21:29:32 +00:00
parent ac9badbafc
commit 3bd0205d06
3 changed files with 42 additions and 0 deletions

View file

@ -2,6 +2,9 @@
<directory name="kmtloader">
<xi:include href="kmtloader/kmtloader.rbuild" />
</directory>
<directory name="queuetest">
<xi:include href="queuetest/queuetest.rbuild" />
</directory>
<directory name="regtests">
<xi:include href="regtests/regtests.rbuild" />
</directory>

View file

@ -0,0 +1,35 @@
/* Compile with gcc -o queuetest.exe queuetest.c */
#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;
}

View file

@ -0,0 +1,4 @@
<module name="queuetest" type="win32cui" installbase="system32" installname="queuetest.exe" allowwarnings="true">
<define name="__USE_W32API" />
<file>queuetest.c</file>
</module>