2017-04-24 18:08:33 -07:00
|
|
|
From fae902ce5da0baa0675d7a99b36ccb706e20b27c Mon Sep 17 00:00:00 2001
|
2016-06-16 18:44:38 -07:00
|
|
|
From: Dmitry Timoshkov <dmitry@baikal.ru>
|
|
|
|
Date: Thu, 16 Jun 2016 18:56:21 +0800
|
|
|
|
Subject: kernel32: Add a bunch of kernel32 stubs.
|
|
|
|
|
|
|
|
64-bit ACDSee Pro 9.0 on start up queries them with GetProcAddress() and
|
|
|
|
fails to start if any of these APIs is missing.
|
|
|
|
---
|
2016-12-11 19:28:52 -08:00
|
|
|
.../api-ms-win-core-processthreads-l1-1-0.spec | 2 +-
|
|
|
|
.../api-ms-win-core-processthreads-l1-1-1.spec | 2 +-
|
|
|
|
.../api-ms-win-core-processthreads-l1-1-2.spec | 2 +-
|
|
|
|
dlls/kernel32/kernel32.spec | 28 ++--
|
2016-08-20 06:47:12 -07:00
|
|
|
dlls/kernel32/sync.c | 145 +++++++++++++++++++++
|
2016-12-11 19:28:52 -08:00
|
|
|
dlls/kernel32/thread.c | 12 ++
|
|
|
|
dlls/kernelbase/kernelbase.spec | 2 +-
|
2016-12-14 22:29:25 -08:00
|
|
|
include/winbase.h | 18 +++
|
2016-08-20 06:47:12 -07:00
|
|
|
include/winnt.h | 22 +++-
|
2016-12-14 22:29:25 -08:00
|
|
|
9 files changed, 214 insertions(+), 19 deletions(-)
|
2016-06-16 18:44:38 -07:00
|
|
|
|
2016-08-20 06:47:12 -07:00
|
|
|
diff --git a/dlls/api-ms-win-core-processthreads-l1-1-0/api-ms-win-core-processthreads-l1-1-0.spec b/dlls/api-ms-win-core-processthreads-l1-1-0/api-ms-win-core-processthreads-l1-1-0.spec
|
2017-04-24 18:08:33 -07:00
|
|
|
index 77414bc367..6a41d51fd3 100644
|
2016-08-20 06:47:12 -07:00
|
|
|
--- a/dlls/api-ms-win-core-processthreads-l1-1-0/api-ms-win-core-processthreads-l1-1-0.spec
|
|
|
|
+++ b/dlls/api-ms-win-core-processthreads-l1-1-0/api-ms-win-core-processthreads-l1-1-0.spec
|
2016-12-11 19:28:52 -08:00
|
|
|
@@ -2,7 +2,7 @@
|
2017-04-24 18:08:33 -07:00
|
|
|
@ stdcall CreateProcessAsUserW(long wstr wstr ptr ptr long long ptr wstr ptr ptr) advapi32.CreateProcessAsUserW
|
2016-08-20 06:47:12 -07:00
|
|
|
@ stdcall CreateProcessW(wstr wstr ptr ptr long long ptr wstr ptr ptr) kernel32.CreateProcessW
|
|
|
|
@ stdcall CreateRemoteThread(long ptr long ptr long long ptr) kernel32.CreateRemoteThread
|
|
|
|
-@ stub CreateRemoteThreadEx
|
|
|
|
+@ stdcall CreateRemoteThreadEx(long ptr long ptr long long ptr ptr) kernel32.CreateRemoteThreadEx
|
|
|
|
@ stdcall CreateThread(ptr long ptr long long ptr) kernel32.CreateThread
|
2016-12-11 19:28:52 -08:00
|
|
|
@ stdcall DeleteProcThreadAttributeList(ptr) kernel32.DeleteProcThreadAttributeList
|
2016-08-20 06:47:12 -07:00
|
|
|
@ stdcall ExitProcess(long) kernel32.ExitProcess
|
|
|
|
diff --git a/dlls/api-ms-win-core-processthreads-l1-1-1/api-ms-win-core-processthreads-l1-1-1.spec b/dlls/api-ms-win-core-processthreads-l1-1-1/api-ms-win-core-processthreads-l1-1-1.spec
|
2017-04-03 18:59:24 -07:00
|
|
|
index e7e2c02b30..9d321af724 100644
|
2016-08-20 06:47:12 -07:00
|
|
|
--- a/dlls/api-ms-win-core-processthreads-l1-1-1/api-ms-win-core-processthreads-l1-1-1.spec
|
|
|
|
+++ b/dlls/api-ms-win-core-processthreads-l1-1-1/api-ms-win-core-processthreads-l1-1-1.spec
|
2016-12-11 19:28:52 -08:00
|
|
|
@@ -2,7 +2,7 @@
|
2016-08-20 06:47:12 -07:00
|
|
|
@ stdcall CreateProcessAsUserW(long wstr wstr ptr ptr long long ptr wstr ptr ptr) advapi32.CreateProcessAsUserW
|
|
|
|
@ stdcall CreateProcessW(wstr wstr ptr ptr long long ptr wstr ptr ptr) kernel32.CreateProcessW
|
|
|
|
@ stdcall CreateRemoteThread(long ptr long ptr long long ptr) kernel32.CreateRemoteThread
|
|
|
|
-@ stub CreateRemoteThreadEx
|
|
|
|
+@ stdcall CreateRemoteThreadEx(long ptr long ptr long long ptr ptr) kernel32.CreateRemoteThreadEx
|
|
|
|
@ stdcall CreateThread(ptr long ptr long long ptr) kernel32.CreateThread
|
2016-12-11 19:28:52 -08:00
|
|
|
@ stdcall DeleteProcThreadAttributeList(ptr) kernel32.DeleteProcThreadAttributeList
|
2016-08-20 06:47:12 -07:00
|
|
|
@ stdcall ExitProcess(long) kernel32.ExitProcess
|
|
|
|
diff --git a/dlls/api-ms-win-core-processthreads-l1-1-2/api-ms-win-core-processthreads-l1-1-2.spec b/dlls/api-ms-win-core-processthreads-l1-1-2/api-ms-win-core-processthreads-l1-1-2.spec
|
2017-04-03 18:59:24 -07:00
|
|
|
index 968b960a6a..0e30f18e52 100644
|
2016-08-20 06:47:12 -07:00
|
|
|
--- a/dlls/api-ms-win-core-processthreads-l1-1-2/api-ms-win-core-processthreads-l1-1-2.spec
|
|
|
|
+++ b/dlls/api-ms-win-core-processthreads-l1-1-2/api-ms-win-core-processthreads-l1-1-2.spec
|
2016-12-11 19:28:52 -08:00
|
|
|
@@ -2,7 +2,7 @@
|
2016-08-20 06:47:12 -07:00
|
|
|
@ stub CreateProcessAsUserW
|
|
|
|
@ stdcall CreateProcessW(wstr wstr ptr ptr long long ptr wstr ptr ptr) kernel32.CreateProcessW
|
|
|
|
@ stdcall CreateRemoteThread(long ptr long ptr long long ptr) kernel32.CreateRemoteThread
|
|
|
|
-@ stub CreateRemoteThreadEx
|
|
|
|
+@ stdcall CreateRemoteThreadEx(long ptr long ptr long long ptr ptr) kernel32.CreateRemoteThreadEx
|
|
|
|
@ stdcall CreateThread(ptr long ptr long long ptr) kernel32.CreateThread
|
2016-12-11 19:28:52 -08:00
|
|
|
@ stdcall DeleteProcThreadAttributeList(ptr) kernel32.DeleteProcThreadAttributeList
|
2016-08-20 06:47:12 -07:00
|
|
|
@ stdcall ExitProcess(long) kernel32.ExitProcess
|
2016-06-16 18:44:38 -07:00
|
|
|
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
|
2017-04-24 18:08:33 -07:00
|
|
|
index 5ef7cb8172..4dcc40ea5d 100644
|
2016-06-16 18:44:38 -07:00
|
|
|
--- a/dlls/kernel32/kernel32.spec
|
|
|
|
+++ b/dlls/kernel32/kernel32.spec
|
|
|
|
@@ -319,7 +319,7 @@
|
|
|
|
# @ stub CreateProcessInternalWSecure
|
|
|
|
@ stdcall CreateProcessW(wstr wstr ptr ptr long long ptr wstr ptr ptr)
|
|
|
|
@ stdcall CreateRemoteThread(long ptr long ptr long long ptr)
|
|
|
|
-# @ stub CreateRemoteThreadEx
|
|
|
|
+@ stdcall CreateRemoteThreadEx(long ptr long ptr long long ptr ptr)
|
|
|
|
@ stdcall CreateSemaphoreA(ptr long long str)
|
|
|
|
@ stdcall CreateSemaphoreExA(ptr long long str long long)
|
|
|
|
@ stdcall CreateSemaphoreExW(ptr long long wstr long long)
|
|
|
|
@@ -340,8 +340,8 @@
|
|
|
|
@ stdcall CreateTimerQueue ()
|
|
|
|
@ stdcall CreateTimerQueueTimer(ptr long ptr ptr long long long)
|
|
|
|
@ stdcall CreateToolhelp32Snapshot(long long)
|
|
|
|
-# @ stub -arch=x86_64 CreateUmsCompletionList
|
|
|
|
-# @ stub -arch=x86_64 CreateUmsThreadContext
|
|
|
|
+@ stdcall -arch=x86_64 CreateUmsCompletionList(ptr)
|
|
|
|
+@ stdcall -arch=x86_64 CreateUmsThreadContext(ptr)
|
|
|
|
@ stub CreateVirtualBuffer
|
|
|
|
@ stdcall CreateWaitableTimerA(ptr long str)
|
|
|
|
@ stdcall CreateWaitableTimerExA(ptr str long long)
|
2016-12-11 19:28:52 -08:00
|
|
|
@@ -373,11 +373,11 @@
|
2016-06-16 18:44:38 -07:00
|
|
|
@ stdcall DeleteTimerQueue(long)
|
|
|
|
@ stdcall DeleteTimerQueueEx (long long)
|
|
|
|
@ stdcall DeleteTimerQueueTimer(long long long)
|
|
|
|
-# @ stub -arch=x86_64 DeleteUmsCompletionList
|
|
|
|
-# @ stub -arch=x86_64 DeleteUmsThreadContext
|
|
|
|
+@ stdcall -arch=x86_64 DeleteUmsCompletionList(ptr)
|
|
|
|
+@ stdcall -arch=x86_64 DeleteUmsThreadContext(ptr)
|
|
|
|
@ stdcall DeleteVolumeMountPointA(str)
|
|
|
|
@ stdcall DeleteVolumeMountPointW(wstr)
|
|
|
|
-# @ stub -arch=x86_64 DequeueUmsCompletionListItems
|
|
|
|
+@ stdcall -arch=x86_64 DequeueUmsCompletionListItems(ptr long ptr)
|
|
|
|
@ stdcall DeviceIoControl(long long ptr long ptr long ptr ptr)
|
|
|
|
@ stdcall DisableThreadLibraryCalls(long)
|
|
|
|
@ stdcall DisconnectNamedPipe(long)
|
|
|
|
@@ -434,10 +434,10 @@
|
|
|
|
@ stdcall EnumUILanguagesW(ptr long long)
|
|
|
|
# @ stub EnumerateLocalComputerNamesA
|
|
|
|
# @ stub EnumerateLocalComputerNamesW
|
|
|
|
-# @ stub -arch=x86_64 EnterUmsSchedulingMode
|
|
|
|
+@ stdcall -arch=x86_64 EnterUmsSchedulingMode(ptr)
|
|
|
|
@ stdcall EraseTape(ptr long long)
|
|
|
|
@ stdcall EscapeCommFunction(long long)
|
|
|
|
-# @ stub -arch=x86_64 ExecuteUmsThread
|
|
|
|
+@ stdcall -arch=x86_64 ExecuteUmsThread(ptr)
|
|
|
|
@ stdcall ExitProcess(long)
|
|
|
|
@ stdcall ExitThread(long)
|
|
|
|
@ stub ExitVDM
|
2017-04-03 18:59:24 -07:00
|
|
|
@@ -637,7 +637,7 @@
|
2016-06-16 18:44:38 -07:00
|
|
|
@ stdcall GetCurrentProcessorNumberEx(ptr) ntdll.RtlGetCurrentProcessorNumberEx
|
|
|
|
@ stdcall -norelay GetCurrentThread()
|
|
|
|
@ stdcall -norelay GetCurrentThreadId()
|
|
|
|
-# @ stub -arch=x86_64 GetCurrentUmsThread
|
|
|
|
+@ stdcall -arch=x86_64 GetCurrentUmsThread()
|
|
|
|
@ stdcall GetDateFormatA(long long ptr str ptr long)
|
|
|
|
@ stdcall GetDateFormatEx(wstr long ptr wstr ptr long wstr)
|
|
|
|
@ stdcall GetDateFormatW(long long ptr wstr ptr long)
|
2017-04-03 18:59:24 -07:00
|
|
|
@@ -735,7 +735,7 @@
|
2016-06-16 18:44:38 -07:00
|
|
|
# @ stub GetNamedPipeServerProcessId
|
|
|
|
# @ stub GetNamedPipeServerSessionId
|
|
|
|
@ stdcall GetNativeSystemInfo(ptr)
|
|
|
|
-# @ stub -arch=x86_64 GetNextUmsListItem
|
|
|
|
+@ stdcall -arch=x86_64 GetNextUmsListItem(ptr)
|
|
|
|
@ stub GetNextVDMCommand
|
|
|
|
@ stub GetNlsSectionName
|
|
|
|
# @ stub GetNLSVersion
|
2017-04-24 18:08:33 -07:00
|
|
|
@@ -866,7 +866,7 @@
|
2016-06-16 18:44:38 -07:00
|
|
|
@ stdcall GetTimeZoneInformationForYear(long ptr ptr)
|
|
|
|
@ stdcall GetThreadUILanguage()
|
|
|
|
# @ stub GetUILanguageInfo
|
|
|
|
-# @ stub -arch=x86_64 GetUmsCompletionListEvent
|
|
|
|
+@ stdcall -arch=x86_64 GetUmsCompletionListEvent(ptr ptr)
|
|
|
|
# @ stub -arch=x86_64 GetUmsSystemThreadInformation
|
|
|
|
@ stdcall GetUserDefaultLCID()
|
|
|
|
@ stdcall GetUserDefaultLangID()
|
2017-04-24 18:08:33 -07:00
|
|
|
@@ -1175,7 +1175,7 @@
|
2016-06-16 18:44:38 -07:00
|
|
|
@ stdcall QueryThreadCycleTime(long ptr)
|
|
|
|
# @ stub QueryThreadProfiling
|
|
|
|
# @ stub QueryThreadpoolStackInformation
|
|
|
|
-# @ stub -arch=x86_64 QueryUmsThreadInformation
|
|
|
|
+@ stdcall -arch=x86_64 QueryUmsThreadInformation(ptr long ptr long ptr)
|
|
|
|
@ stdcall QueryUnbiasedInterruptTime(ptr)
|
|
|
|
@ stub QueryWin31IniFilesMappedToRegistry
|
|
|
|
@ stdcall QueueUserAPC(ptr long long)
|
2017-04-24 18:08:33 -07:00
|
|
|
@@ -1464,7 +1464,7 @@
|
2016-06-16 18:44:38 -07:00
|
|
|
@ stdcall SetThreadpoolWait(ptr long ptr)
|
|
|
|
@ stdcall SetTimeZoneInformation(ptr)
|
|
|
|
@ stub SetTimerQueueTimer
|
|
|
|
-# @ stub -arch=x86_64 SetUmsThreadInformation
|
|
|
|
+@ stdcall -arch=x86_64 SetUmsThreadInformation(ptr long ptr long)
|
|
|
|
@ stdcall SetUnhandledExceptionFilter(ptr)
|
|
|
|
@ stdcall SetUserGeoID(long)
|
|
|
|
@ stub SetVDMCurrentDirectories
|
2017-04-24 18:08:33 -07:00
|
|
|
@@ -1524,7 +1524,7 @@
|
2016-06-16 18:44:38 -07:00
|
|
|
# @ stub -arch=x86_64 uaw_wcsicmp
|
|
|
|
# @ stub -arch=x86_64 uaw_wcslen
|
|
|
|
# @ stub -arch=x86_64 uaw_wcsrchr
|
|
|
|
-# @ stub -arch=x86_64 UmsThreadYield
|
|
|
|
+@ stdcall -arch=x86_64 UmsThreadYield(ptr)
|
|
|
|
# @ stub -arch=x86_64 __misaligned_access
|
|
|
|
@ stdcall -i386 -private UTRegister(long str str str ptr ptr ptr) krnl386.exe16.UTRegister
|
|
|
|
@ stdcall -i386 -private UTUnRegister(long) krnl386.exe16.UTUnRegister
|
|
|
|
diff --git a/dlls/kernel32/sync.c b/dlls/kernel32/sync.c
|
2017-04-24 18:08:33 -07:00
|
|
|
index ee995f55af..391184af01 100644
|
2016-06-16 18:44:38 -07:00
|
|
|
--- a/dlls/kernel32/sync.c
|
|
|
|
+++ b/dlls/kernel32/sync.c
|
2017-04-24 18:08:33 -07:00
|
|
|
@@ -2454,3 +2454,148 @@ BOOL WINAPI SleepConditionVariableSRW( RTL_CONDITION_VARIABLE *variable, RTL_SRW
|
2016-06-16 18:44:38 -07:00
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+/***********************************************************************
|
|
|
|
+ * CreateUmsCompletionList (KERNEL32.@)
|
|
|
|
+ */
|
|
|
|
+BOOL WINAPI CreateUmsCompletionList( PUMS_COMPLETION_LIST *list )
|
|
|
|
+{
|
|
|
|
+ FIXME( "%p: stub\n", list );
|
|
|
|
+ SetLastError( ERROR_CALL_NOT_IMPLEMENTED );
|
|
|
|
+ return FALSE;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+/***********************************************************************
|
|
|
|
+ * DequeueUmsCompletionListItems (KERNEL32.@)
|
|
|
|
+ */
|
|
|
|
+BOOL WINAPI DequeueUmsCompletionListItems( void *list, DWORD timeout, PUMS_CONTEXT *ctx )
|
|
|
|
+{
|
|
|
|
+ FIXME( "%p,%08x,%p: stub\n", list, timeout, ctx );
|
|
|
|
+ SetLastError( ERROR_CALL_NOT_IMPLEMENTED );
|
|
|
|
+ return FALSE;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+/***********************************************************************
|
|
|
|
+ * DeleteUmsCompletionList (KERNEL32.@)
|
|
|
|
+ */
|
|
|
|
+BOOL WINAPI DeleteUmsCompletionList( PUMS_COMPLETION_LIST list )
|
|
|
|
+{
|
|
|
|
+ FIXME( "%p: stub\n", list );
|
|
|
|
+ SetLastError( ERROR_CALL_NOT_IMPLEMENTED );
|
|
|
|
+ return FALSE;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+/***********************************************************************
|
|
|
|
+ * GetUmsCompletionListEvent (KERNEL32.@)
|
|
|
|
+ */
|
|
|
|
+BOOL WINAPI GetUmsCompletionListEvent( PUMS_COMPLETION_LIST list, HANDLE *event )
|
|
|
|
+{
|
|
|
|
+ FIXME( "%p,%p: stub\n", list, event );
|
|
|
|
+ SetLastError( ERROR_CALL_NOT_IMPLEMENTED );
|
|
|
|
+ return FALSE;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+/***********************************************************************
|
|
|
|
+ * CreateUmsThreadContext (KERNEL32.@)
|
|
|
|
+ */
|
|
|
|
+BOOL WINAPI CreateUmsThreadContext( PUMS_CONTEXT *ctx )
|
|
|
|
+{
|
|
|
|
+ FIXME( "%p: stub\n", ctx );
|
|
|
|
+ SetLastError( ERROR_CALL_NOT_IMPLEMENTED );
|
|
|
|
+ return FALSE;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+/***********************************************************************
|
|
|
|
+ * DeleteUmsThreadContext (KERNEL32.@)
|
|
|
|
+ */
|
|
|
|
+BOOL WINAPI DeleteUmsThreadContext( PUMS_CONTEXT ctx )
|
|
|
|
+{
|
|
|
|
+ FIXME( "%p: stub\n", ctx );
|
|
|
|
+ SetLastError( ERROR_CALL_NOT_IMPLEMENTED );
|
|
|
|
+ return FALSE;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+/***********************************************************************
|
|
|
|
+ * EnterUmsSchedulingMode (KERNEL32.@)
|
|
|
|
+ */
|
|
|
|
+BOOL WINAPI EnterUmsSchedulingMode( UMS_SCHEDULER_STARTUP_INFO *info )
|
|
|
|
+{
|
|
|
|
+ FIXME( "%p: stub\n", info );
|
|
|
|
+ SetLastError( ERROR_CALL_NOT_IMPLEMENTED );
|
|
|
|
+ return FALSE;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+/***********************************************************************
|
|
|
|
+ * ExecuteUmsThread (KERNEL32.@)
|
|
|
|
+ */
|
|
|
|
+BOOL WINAPI ExecuteUmsThread( PUMS_CONTEXT ctx )
|
|
|
|
+{
|
|
|
|
+ FIXME( "%p: stub\n", ctx );
|
|
|
|
+ SetLastError( ERROR_CALL_NOT_IMPLEMENTED );
|
|
|
|
+ return FALSE;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+/***********************************************************************
|
|
|
|
+ * GetCurrentUmsThread (KERNEL32.@)
|
|
|
|
+ */
|
|
|
|
+PUMS_CONTEXT WINAPI GetCurrentUmsThread( void )
|
|
|
|
+{
|
|
|
|
+ FIXME( "stub\n" );
|
|
|
|
+ SetLastError( ERROR_CALL_NOT_IMPLEMENTED );
|
|
|
|
+ return FALSE;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+/***********************************************************************
|
|
|
|
+ * GetNextUmsListItem (KERNEL32.@)
|
|
|
|
+ */
|
|
|
|
+PUMS_CONTEXT WINAPI GetNextUmsListItem( PUMS_CONTEXT ctx )
|
|
|
|
+{
|
|
|
|
+ FIXME( "%p: stub\n", ctx );
|
|
|
|
+ SetLastError( ERROR_CALL_NOT_IMPLEMENTED );
|
|
|
|
+ return NULL;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+/***********************************************************************
|
|
|
|
+ * QueryUmsThreadInformation (KERNEL32.@)
|
|
|
|
+ */
|
|
|
|
+BOOL WINAPI QueryUmsThreadInformation( PUMS_CONTEXT ctx, UMS_THREAD_INFO_CLASS class,
|
|
|
|
+ void *buf, ULONG length, ULONG *ret_length )
|
|
|
|
+{
|
|
|
|
+ FIXME( "%p,%08x,%p,%08x,%p: stub\n", ctx, class, buf, length, ret_length );
|
|
|
|
+ SetLastError( ERROR_CALL_NOT_IMPLEMENTED );
|
|
|
|
+ return FALSE;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+/***********************************************************************
|
|
|
|
+ * SetUmsThreadInformation (KERNEL32.@)
|
|
|
|
+ */
|
|
|
|
+BOOL WINAPI SetUmsThreadInformation( PUMS_CONTEXT ctx, UMS_THREAD_INFO_CLASS class,
|
|
|
|
+ void *buf, ULONG length )
|
|
|
|
+{
|
|
|
|
+ FIXME( "%p,%08x,%p,%08x: stub\n", ctx, class, buf, length );
|
|
|
|
+ SetLastError( ERROR_CALL_NOT_IMPLEMENTED );
|
|
|
|
+ return FALSE;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+/***********************************************************************
|
|
|
|
+ * UmsThreadYield (KERNEL32.@)
|
|
|
|
+ */
|
|
|
|
+BOOL WINAPI UmsThreadYield( void *param )
|
|
|
|
+{
|
|
|
|
+ FIXME( "%p: stub\n", param );
|
|
|
|
+ SetLastError( ERROR_CALL_NOT_IMPLEMENTED );
|
|
|
|
+ return FALSE;
|
|
|
|
+}
|
|
|
|
diff --git a/dlls/kernel32/thread.c b/dlls/kernel32/thread.c
|
2017-04-03 18:59:24 -07:00
|
|
|
index de466185e9..c8dd94bbea 100644
|
2016-06-16 18:44:38 -07:00
|
|
|
--- a/dlls/kernel32/thread.c
|
|
|
|
+++ b/dlls/kernel32/thread.c
|
2016-12-11 19:28:52 -08:00
|
|
|
@@ -113,6 +113,18 @@ HANDLE WINAPI CreateRemoteThread( HANDLE hProcess, SECURITY_ATTRIBUTES *sa, SIZE
|
2016-06-16 18:44:38 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
+/***************************************************************************
|
|
|
|
+ * CreateRemoteThreadEx (KERNEL32.@)
|
|
|
|
+ */
|
|
|
|
+HANDLE WINAPI CreateRemoteThreadEx( HANDLE hProcess, SECURITY_ATTRIBUTES *sa, SIZE_T stack,
|
|
|
|
+ LPTHREAD_START_ROUTINE start, LPVOID param, DWORD flags,
|
|
|
|
+ LPPROC_THREAD_ATTRIBUTE_LIST attrs, LPDWORD id )
|
|
|
|
+{
|
|
|
|
+ FIXME( "attribute list ignored\n" );
|
|
|
|
+ return CreateRemoteThread( hProcess, sa, stack, start, param, flags, id );
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
/***********************************************************************
|
|
|
|
* OpenThread [KERNEL32.@] Retrieves a handle to a thread from its thread id
|
|
|
|
*/
|
2016-08-20 06:47:12 -07:00
|
|
|
diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec
|
2017-04-24 18:08:33 -07:00
|
|
|
index 689d58739e..8f5ac6c7ec 100644
|
2016-08-20 06:47:12 -07:00
|
|
|
--- a/dlls/kernelbase/kernelbase.spec
|
|
|
|
+++ b/dlls/kernelbase/kernelbase.spec
|
2017-04-03 18:59:24 -07:00
|
|
|
@@ -212,7 +212,7 @@
|
|
|
|
# @ stub CreateProcessInternalW
|
|
|
|
@ stdcall CreateProcessW(wstr wstr ptr ptr long long ptr wstr ptr ptr) kernel32.CreateProcessW
|
2016-08-20 06:47:12 -07:00
|
|
|
@ stdcall CreateRemoteThread(long ptr long ptr long long ptr) kernel32.CreateRemoteThread
|
|
|
|
-@ stub CreateRemoteThreadEx
|
|
|
|
+@ stdcall CreateRemoteThreadEx(long ptr long ptr long long ptr ptr) kernel32.CreateRemoteThreadEx
|
|
|
|
@ stdcall CreateRestrictedToken(long long long ptr long ptr long ptr ptr) advapi32.CreateRestrictedToken
|
|
|
|
@ stdcall CreateSemaphoreExW(ptr long long wstr long long) kernel32.CreateSemaphoreExW
|
2017-04-03 18:59:24 -07:00
|
|
|
@ stdcall CreateSemaphoreW(ptr long long wstr) kernel32.CreateSemaphoreW
|
2016-06-16 18:44:38 -07:00
|
|
|
diff --git a/include/winbase.h b/include/winbase.h
|
2017-04-24 18:08:33 -07:00
|
|
|
index 67c29b51c5..2306b4fc0c 100644
|
2016-06-16 18:44:38 -07:00
|
|
|
--- a/include/winbase.h
|
|
|
|
+++ b/include/winbase.h
|
2016-12-14 22:29:25 -08:00
|
|
|
@@ -1682,6 +1682,20 @@ typedef enum _PROC_THREAD_ATTRIBUTE_NUM
|
2016-12-11 19:28:52 -08:00
|
|
|
#define PROC_THREAD_ATTRIBUTE_ALL_APPLICATION_PACKAGES_POLICY (ProcThreadAttributeAllApplicationPackagesPolicy | PROC_THREAD_ATTRIBUTE_INPUT)
|
|
|
|
#define PROC_THREAD_ATTRIBUTE_WIN32K_FILTER (ProcThreadAttributeWin32kFilter | PROC_THREAD_ATTRIBUTE_INPUT)
|
2016-06-16 18:44:38 -07:00
|
|
|
|
|
|
|
+typedef void *PUMS_CONTEXT;
|
|
|
|
+typedef void *PUMS_COMPLETION_LIST;
|
|
|
|
+typedef PRTL_UMS_SCHEDULER_ENTRY_POINT PUMS_SCHEDULER_ENTRY_POINT;
|
|
|
|
+typedef struct _UMS_SCHEDULER_STARTUP_INFO
|
|
|
|
+{
|
|
|
|
+ ULONG UmsVersion;
|
|
|
|
+ PUMS_COMPLETION_LIST CompletionList;
|
|
|
|
+ PUMS_SCHEDULER_ENTRY_POINT SchedulerProc;
|
|
|
|
+ PVOID SchedulerParam;
|
|
|
|
+} UMS_SCHEDULER_STARTUP_INFO, *PUMS_SCHEDULER_STARTUP_INFO;
|
|
|
|
+
|
|
|
|
+typedef enum _RTL_UMS_SCHEDULER_REASON UMS_SCHEDULER_REASON;
|
|
|
|
+typedef enum _RTL_UMS_THREAD_INFO_CLASS UMS_THREAD_INFO_CLASS, *PUMS_THREAD_INFO_CLASS;
|
|
|
|
+
|
|
|
|
WINBASEAPI BOOL WINAPI ActivateActCtx(HANDLE,ULONG_PTR *);
|
|
|
|
WINADVAPI BOOL WINAPI AddAccessAllowedAce(PACL,DWORD,DWORD,PSID);
|
|
|
|
WINADVAPI BOOL WINAPI AddAccessAllowedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
|
2017-04-24 18:08:33 -07:00
|
|
|
@@ -1831,6 +1845,7 @@ WINADVAPI BOOL WINAPI CreateProcessAsUserW(HANDLE,LPCWSTR,LPWSTR,LPSECUR
|
2016-06-16 18:44:38 -07:00
|
|
|
#define CreateProcessAsUser WINELIB_NAME_AW(CreateProcessAsUser)
|
|
|
|
WINADVAPI BOOL WINAPI CreateProcessWithLogonW(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,LPCWSTR,LPWSTR,DWORD,LPVOID,LPCWSTR,LPSTARTUPINFOW,LPPROCESS_INFORMATION);
|
|
|
|
WINBASEAPI HANDLE WINAPI CreateRemoteThread(HANDLE,LPSECURITY_ATTRIBUTES,SIZE_T,LPTHREAD_START_ROUTINE,LPVOID,DWORD,LPDWORD);
|
|
|
|
+WINBASEAPI HANDLE WINAPI CreateRemoteThreadEx(HANDLE,LPSECURITY_ATTRIBUTES,SIZE_T,LPTHREAD_START_ROUTINE,LPVOID,DWORD,LPPROC_THREAD_ATTRIBUTE_LIST,LPDWORD);
|
|
|
|
WINADVAPI BOOL WINAPI CreateRestrictedToken(HANDLE,DWORD,DWORD,PSID_AND_ATTRIBUTES,DWORD,PLUID_AND_ATTRIBUTES,DWORD,PSID_AND_ATTRIBUTES,PHANDLE);
|
|
|
|
WINBASEAPI HANDLE WINAPI CreateSemaphoreA(LPSECURITY_ATTRIBUTES,LONG,LONG,LPCSTR);
|
|
|
|
WINBASEAPI HANDLE WINAPI CreateSemaphoreW(LPSECURITY_ATTRIBUTES,LONG,LONG,LPCWSTR);
|
2017-04-24 18:08:33 -07:00
|
|
|
@@ -1848,6 +1863,8 @@ WINBASEAPI DWORD WINAPI CreateTapePartition(HANDLE,DWORD,DWORD,DWORD);
|
2016-06-16 18:44:38 -07:00
|
|
|
WINBASEAPI HANDLE WINAPI CreateThread(LPSECURITY_ATTRIBUTES,SIZE_T,LPTHREAD_START_ROUTINE,LPVOID,DWORD,LPDWORD);
|
|
|
|
WINBASEAPI HANDLE WINAPI CreateTimerQueue(void);
|
|
|
|
WINBASEAPI BOOL WINAPI CreateTimerQueueTimer(PHANDLE,HANDLE,WAITORTIMERCALLBACK,PVOID,DWORD,DWORD,ULONG);
|
|
|
|
+WINBASEAPI BOOL WINAPI CreateUmsCompletionList(PUMS_COMPLETION_LIST*);
|
|
|
|
+WINBASEAPI BOOL WINAPI CreateUmsThreadContext(PUMS_CONTEXT*);
|
|
|
|
WINBASEAPI HANDLE WINAPI CreateWaitableTimerA(LPSECURITY_ATTRIBUTES,BOOL,LPCSTR);
|
|
|
|
WINBASEAPI HANDLE WINAPI CreateWaitableTimerW(LPSECURITY_ATTRIBUTES,BOOL,LPCWSTR);
|
|
|
|
#define CreateWaitableTimer WINELIB_NAME_AW(CreateWaitableTimer)
|
2017-04-24 18:08:33 -07:00
|
|
|
@@ -1906,6 +1923,7 @@ WINBASEAPI BOOL WINAPI EndUpdateResourceA(HANDLE,BOOL);
|
2016-06-16 18:44:38 -07:00
|
|
|
WINBASEAPI BOOL WINAPI EndUpdateResourceW(HANDLE,BOOL);
|
|
|
|
#define EndUpdateResource WINELIB_NAME_AW(EndUpdateResource)
|
|
|
|
WINBASEAPI void WINAPI EnterCriticalSection(CRITICAL_SECTION *lpCrit);
|
|
|
|
+WINBASEAPI BOOL WINAPI EnterUmsSchedulingMode(PUMS_SCHEDULER_STARTUP_INFO);
|
|
|
|
WINBASEAPI BOOL WINAPI EnumResourceLanguagesA(HMODULE,LPCSTR,LPCSTR,ENUMRESLANGPROCA,LONG_PTR);
|
|
|
|
WINBASEAPI BOOL WINAPI EnumResourceLanguagesW(HMODULE,LPCWSTR,LPCWSTR,ENUMRESLANGPROCW,LONG_PTR);
|
|
|
|
#define EnumResourceLanguages WINELIB_NAME_AW(EnumResourceLanguages)
|
|
|
|
diff --git a/include/winnt.h b/include/winnt.h
|
2017-04-24 18:08:33 -07:00
|
|
|
index 450499c129..5bd1b1b4a8 100644
|
2016-06-16 18:44:38 -07:00
|
|
|
--- a/include/winnt.h
|
|
|
|
+++ b/include/winnt.h
|
2017-04-24 18:08:33 -07:00
|
|
|
@@ -6016,9 +6016,29 @@ typedef VOID (CALLBACK *PTP_TIMER_CALLBACK)(PTP_CALLBACK_INSTANCE,PVOID,PTP_TIME
|
2016-06-16 18:44:38 -07:00
|
|
|
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);
|
|
|
|
|
|
|
|
+typedef enum _RTL_UMS_THREAD_INFO_CLASS
|
|
|
|
+{
|
|
|
|
+ UmsThreadInvalidInfoClass,
|
|
|
|
+ UmsThreadUserContext,
|
|
|
|
+ UmsThreadPriority,
|
|
|
|
+ UmsThreadAffinity,
|
|
|
|
+ UmsThreadTeb,
|
|
|
|
+ UmsThreadIsSuspended,
|
|
|
|
+ UmsThreadIsTerminated,
|
|
|
|
+ UmsThreadMaxInfoClass
|
|
|
|
+} RTL_UMS_THREAD_INFO_CLASS, *PRTL_UMS_THREAD_INFO_CLASS;
|
|
|
|
+
|
|
|
|
+typedef enum _RTL_UMS_SCHEDULER_REASON
|
|
|
|
+{
|
|
|
|
+ UmsSchedulerStartup,
|
|
|
|
+ UmsSchedulerThreadBlocked,
|
|
|
|
+ UmsSchedulerThreadYield,
|
|
|
|
+} RTL_UMS_SCHEDULER_REASON, *PRTL_UMS_SCHEDULER_REASON;
|
|
|
|
+
|
|
|
|
+typedef void (CALLBACK *PRTL_UMS_SCHEDULER_ENTRY_POINT)(RTL_UMS_SCHEDULER_REASON,ULONG_PTR,PVOID);
|
|
|
|
+
|
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
--
|
2017-04-24 18:08:33 -07:00
|
|
|
2.12.2
|
2016-06-16 18:44:38 -07:00
|
|
|
|