From cef12abd4f7496ee6c21e80b6bf58b981876135f Mon Sep 17 00:00:00 2001 From: Marcus Meissner Date: Wed, 29 Jan 2014 20:13:27 +0100 Subject: [PATCH] kernel32: Thread pool definitions and prototypes. --- include/winbase.h | 5 ++++ include/winnt.h | 65 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) diff --git a/include/winbase.h b/include/winbase.h index 2d01c45dfd4..889f018f900 100644 --- a/include/winbase.h +++ b/include/winbase.h @@ -1572,6 +1572,8 @@ WINADVAPI BOOL WINAPI ClearEventLogW(HANDLE,LPCWSTR); #define ClearEventLog WINELIB_NAME_AW(ClearEventLog) WINADVAPI BOOL WINAPI CloseEventLog(HANDLE); WINBASEAPI BOOL WINAPI CloseHandle(HANDLE); +WINBASEAPI VOID WINAPI CloseThreadpool(PTP_POOL); +WINBASEAPI VOID WINAPI CloseThreadpoolWork(PTP_WORK); WINBASEAPI BOOL WINAPI CommConfigDialogA(LPCSTR,HWND,LPCOMMCONFIG); WINBASEAPI BOOL WINAPI CommConfigDialogW(LPCWSTR,HWND,LPCOMMCONFIG); #define CommConfigDialog WINELIB_NAME_AW(CommConfigDialog) @@ -1633,6 +1635,8 @@ WINBASEAPI HANDLE WINAPI CreateNamedPipeW(LPCWSTR,DWORD,DWORD,DWORD,DWORD,D #define CreateNamedPipe WINELIB_NAME_AW(CreateNamedPipe) WINBASEAPI BOOL WINAPI CreatePipe(PHANDLE,PHANDLE,LPSECURITY_ATTRIBUTES,DWORD); WINADVAPI BOOL WINAPI CreatePrivateObjectSecurity(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR*,BOOL,HANDLE,PGENERIC_MAPPING); +WINBASEAPI PTP_POOL WINAPI CreateThreadpool(PVOID); +WINBASEAPI PTP_WORK WINAPI CreateThreadpoolWork(PTP_WORK_CALLBACK,PVOID,PTP_CALLBACK_ENVIRON); WINBASEAPI BOOL WINAPI CreateProcessA(LPCSTR,LPSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,LPVOID,LPCSTR,LPSTARTUPINFOA,LPPROCESS_INFORMATION); WINBASEAPI BOOL WINAPI CreateProcessW(LPCWSTR,LPWSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,LPVOID,LPCWSTR,LPSTARTUPINFOW,LPPROCESS_INFORMATION); #define CreateProcess WINELIB_NAME_AW(CreateProcess) @@ -2365,6 +2369,7 @@ WINBASEAPI VOID WINAPI Sleep(DWORD); WINBASEAPI BOOL WINAPI SleepConditionVariableCS(PCONDITION_VARIABLE,PCRITICAL_SECTION,DWORD); WINBASEAPI BOOL WINAPI SleepConditionVariableSRW(PCONDITION_VARIABLE,PSRWLOCK,DWORD,ULONG); WINBASEAPI DWORD WINAPI SleepEx(DWORD,BOOL); +WINBASEAPI VOID WINAPI SubmitThreadpoolWork(PTP_WORK); WINBASEAPI DWORD WINAPI SuspendThread(HANDLE); WINBASEAPI void WINAPI SwitchToFiber(LPVOID); WINBASEAPI BOOL WINAPI SwitchToThread(void); diff --git a/include/winnt.h b/include/winnt.h index f55f2feddce..dd4ef6306b8 100644 --- a/include/winnt.h +++ b/include/winnt.h @@ -5699,6 +5699,71 @@ typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX } DUMMYUNIONNAME; } SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX, *PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX; +/* Threadpool things */ +typedef DWORD TP_VERSION,*PTP_VERSION; + +typedef struct _TP_CALLBACK_INSTANCE TP_CALLBACK_INSTANCE,*PTP_CALLBACK_INSTANCE; + +typedef VOID (CALLBACK *PTP_SIMPLE_CALLBACK)(PTP_CALLBACK_INSTANCE,PVOID); + +typedef struct _TP_POOL TP_POOL,*PTP_POOL; + +typedef enum _TP_CALLBACK_PRIORITY +{ + TP_CALLBACK_PRIORITY_HIGH, + TP_CALLBACK_PRIORITY_NORMAL, + TP_CALLBACK_PRIORITY_LOW, + TP_CALLBACK_PRIORITY_INVALID, + TP_CALLBACK_PRIORITY_COUNT = TP_CALLBACK_PRIORITY_INVALID +} TP_CALLBACK_PRIORITY; + +typedef struct _TP_POOL_STACK_INFORMATION +{ + SIZE_T StackReserve; + SIZE_T StackCommit; +} TP_POOL_STACK_INFORMATION,*PTP_POOL_STACK_INFORMATION; + +typedef struct _TP_CLEANUP_GROUP TP_CLEANUP_GROUP,*PTP_CLEANUP_GROUP; + +typedef VOID (CALLBACK *PTP_CLEANUP_GROUP_CANCEL_CALLBACK)(PVOID,PVOID); + +typedef struct _TP_CALLBACK_ENVIRON_V1 +{ + TP_VERSION Version; + PTP_POOL Pool; + PTP_CLEANUP_GROUP CleanupGroup; + PTP_CLEANUP_GROUP_CANCEL_CALLBACK CleanupGroupCancelCallback; + PVOID RaceDll; + struct _ACTIVATION_CONTEXT* ActivationContext; + PTP_SIMPLE_CALLBACK FinalizationCallback; + union + { + DWORD Flags; + struct + { + DWORD LongFunction:1; + DWORD Persistent:1; + DWORD Private:30; + } s; + } u; +} TP_CALLBACK_ENVIRON_V1; + +typedef struct _TP_WORK TP_WORK, *PTP_WORK; +typedef struct _TP_TIMER TP_TIMER, *PTP_TIMER; + +typedef DWORD TP_WAIT_RESULT; +typedef struct _TP_WAIT TP_WAIT, *PTP_WAIT; + +typedef struct _TP_IO TP_IO, *PTP_IO; + +typedef TP_CALLBACK_ENVIRON_V1 TP_CALLBACK_ENVIRON, *PTP_CALLBACK_ENVIRON; + +typedef VOID (CALLBACK *PTP_WORK_CALLBACK)(PTP_CALLBACK_INSTANCE,PVOID,PTP_WORK); +typedef VOID (CALLBACK *PTP_TIMER_CALLBACK)(PTP_CALLBACK_INSTANCE,PVOID,PTP_TIMER); +typedef VOID (CALLBACK *PTP_WAIT_CALLBACK)(PTP_CALLBACK_INSTANCE,PVOID,PTP_WAIT,TP_WAIT_RESULT); +typedef VOID (CALLBACK *PTP_WIN32_IO_CALLBACK)(PTP_CALLBACK_INSTANCE,PVOID,PVOID,ULONG,ULONG_PTR,PTP_IO); + + NTSYSAPI BOOLEAN NTAPI RtlGetProductInfo(DWORD,DWORD,DWORD,DWORD,PDWORD); #ifdef __cplusplus