diff --git a/dll/ntdll/def/ntdll.spec b/dll/ntdll/def/ntdll.spec index 00b45a76973..945fc7420b8 100644 --- a/dll/ntdll/def/ntdll.spec +++ b/dll/ntdll/def/ntdll.spec @@ -138,6 +138,7 @@ @ stdcall KiUserExceptionDispatcher(ptr ptr) @ stdcall -version=0x502 LdrAccessOutOfProcessResource(ptr ptr ptr ptr ptr) @ stdcall LdrAccessResource(ptr ptr ptr ptr) +@ stdcall -version=0x601+ LdrAddDllDirectory(ptr ptr) @ stdcall -stub -version=0x600+ LdrAddLoadAsDataTable(ptr wstr long ptr) @ stdcall LdrAddRefDll(long ptr) @ stdcall -version=0x502 LdrAlternateResourcesEnabled() @@ -152,6 +153,7 @@ @ stdcall -stub LdrFindResourceEx_U(ptr ptr ptr ptr ptr) ; 5.1 and higher @ stdcall LdrFindResource_U(ptr ptr long ptr) @ stdcall LdrFlushAlternateResourceModules() +@ stdcall -version=0x601+ LdrGetDllDirectory(ptr) @ stdcall LdrGetDllHandle(wstr ptr ptr ptr) @ stdcall LdrGetDllHandleEx(long wstr ptr ptr ptr) @ stdcall -stub -version=0x600+ LdrGetFailureData() @@ -175,12 +177,15 @@ @ stdcall -stub -version=0x600+ LdrQueryModuleServiceTags(ptr ptr ptr) @ stdcall LdrQueryProcessModuleInformation(ptr long ptr) @ stdcall -version=0x600+ LdrRegisterDllNotification(long ptr ptr ptr) +@ stdcall -version=0x601+ LdrRemoveDllDirectory(ptr) @ stdcall -stub -version=0x600+ LdrRemoveLoadAsDataTable(ptr ptr ptr long) @ stdcall -stub -version=0x600+ LdrResFindResource(ptr long long long long long long long long) @ stdcall -stub -version=0x600+ LdrResFindResourceDirectory(ptr long long long long long long) @ stdcall -stub -version=0x600+ LdrResRelease(ptr ptr long long) @ stdcall -stub -version=0x600+ LdrResSearchResource(wstr wstr long long long ptr long long) @ stdcall LdrSetAppCompatDllRedirectionCallback(long ptr ptr) +@ stdcall -version=0x601+ LdrSetDefaultDllDirectories(long) +@ stdcall -version=0x601+ LdrSetDllDirectory(ptr) @ stdcall LdrSetDllManifestProber(ptr) @ stdcall -stub -version=0x600+ LdrSetMUICacheType(long) @ stdcall LdrShutdownProcess() @@ -1207,8 +1212,8 @@ @ stdcall RtlTraceDatabaseUnlock(ptr) @ stdcall RtlTraceDatabaseValidate(ptr) @ stdcall -stub -version=0x600+ RtlTryAcquirePebLock() -@ stdcall -version=0x601 RtlTryAcquireSRWLockExclusive(ptr) -@ stdcall -version=0x601 RtlTryAcquireSRWLockShared(ptr) +@ stdcall -version=0x601+ RtlTryAcquireSRWLockExclusive(ptr) +@ stdcall -version=0x601+ RtlTryAcquireSRWLockShared(ptr) @ stdcall RtlTryEnterCriticalSection(ptr) @ stdcall RtlUnhandledExceptionFilter2(ptr long) @ stdcall RtlUnhandledExceptionFilter(ptr) diff --git a/dll/ntdll/nt_0600/DllMain.c b/dll/ntdll/nt_0600/DllMain.c index 38a0d448916..0d9a7678bc4 100644 --- a/dll/ntdll/nt_0600/DllMain.c +++ b/dll/ntdll/nt_0600/DllMain.c @@ -1,5 +1,8 @@ #include "ntdll_vista.h" +VOID NTAPI +RtlpInitializeThreadPooling(); + BOOL WINAPI DllMain(HANDLE hDll, @@ -10,6 +13,7 @@ DllMain(HANDLE hDll, { LdrDisableThreadCalloutsForDll(hDll); RtlpInitializeKeyedEvent(); + RtlpInitializeThreadPooling(); } else if (dwReason == DLL_PROCESS_DETACH) { diff --git a/dll/ntdll/nt_0600/ldr/ldrinit.c b/dll/ntdll/nt_0600/ldr/ldrinit.c index e9251d9ebf5..9a703ea4cbe 100644 --- a/dll/ntdll/nt_0600/ldr/ldrinit.c +++ b/dll/ntdll/nt_0600/ldr/ldrinit.c @@ -1,3 +1,37 @@ #include "ntdll_vista.h" PVOID LdrpHeap; +#include + + +/* These APIs are very commonly used in modern apps + needed for kernelbase, But these stubs will work for now. */ +NTSTATUS WINAPI LdrGetDllDirectory( UNICODE_STRING *dir ) +{ + UNIMPLEMENTED; + return STATUS_UNSUCCESSFUL; +} + + +NTSTATUS WINAPI LdrSetDllDirectory( const UNICODE_STRING *dir ) +{ + UNIMPLEMENTED; + return STATUS_SUCCESS; +} + +NTSTATUS WINAPI LdrAddDllDirectory( const UNICODE_STRING *dir, void **cookie ) +{ + UNIMPLEMENTED; + return STATUS_UNSUCCESSFUL; +} + +NTSTATUS WINAPI LdrRemoveDllDirectory( void *cookie ) +{ + UNIMPLEMENTED; + return STATUS_SUCCESS; +} + +NTSTATUS WINAPI LdrSetDefaultDllDirectories( ULONG flags ) +{ + UNIMPLEMENTED; + return STATUS_SUCCESS; +} \ No newline at end of file diff --git a/dll/ntdll/nt_0600/ntdll_vista.spec b/dll/ntdll/nt_0600/ntdll_vista.spec index 2bf9f747a00..ecd64115a1b 100644 --- a/dll/ntdll/nt_0600/ntdll_vista.spec +++ b/dll/ntdll/nt_0600/ntdll_vista.spec @@ -18,3 +18,44 @@ @ stdcall RtlConnectToSm(ptr ptr long ptr) SmConnectToSm @ stdcall RtlSendMsgToSm(ptr ptr) SmSendMsgToSm + +@ stdcall TpAllocCleanupGroup(ptr) +@ stdcall TpAllocIoCompletion(ptr ptr ptr ptr ptr) +@ stdcall TpAllocPool(ptr ptr) +@ stdcall TpAllocTimer(ptr ptr ptr ptr) +@ stdcall TpAllocWait(ptr ptr ptr ptr) +@ stdcall TpAllocWork(ptr ptr ptr ptr) +@ stdcall TpCallbackLeaveCriticalSectionOnCompletion(ptr ptr) +@ stdcall TpCallbackMayRunLong(ptr) +@ stdcall TpCallbackReleaseMutexOnCompletion(ptr ptr) +@ stdcall TpCallbackReleaseSemaphoreOnCompletion(ptr ptr long) +@ stdcall TpCallbackSetEventOnCompletion(ptr ptr) +@ stdcall TpCallbackUnloadDllOnCompletion(ptr ptr) +@ stdcall TpCancelAsyncIoOperation(ptr) +@ stdcall TpDisassociateCallback(ptr) +@ stdcall TpIsTimerSet(ptr) +@ stdcall TpPostWork(ptr) +@ stdcall TpQueryPoolStackInformation(ptr ptr) +@ stdcall TpReleaseCleanupGroup(ptr) +@ stdcall TpReleaseCleanupGroupMembers(ptr long ptr) +@ stdcall TpReleaseIoCompletion(ptr) +@ stdcall TpReleasePool(ptr) +@ stdcall TpReleaseTimer(ptr) +@ stdcall TpReleaseWait(ptr) +@ stdcall TpReleaseWork(ptr) +@ stdcall TpSetPoolMaxThreads(ptr long) +@ stdcall TpSetPoolMinThreads(ptr long) +@ stdcall TpSetPoolStackInformation(ptr ptr) +@ stdcall TpSetTimer(ptr ptr long long) +@ stdcall TpSetWait(ptr long ptr) +@ stdcall TpSimpleTryPost(ptr ptr ptr) +@ stdcall TpStartAsyncIoOperation(ptr) +@ stdcall TpWaitForIoCompletion(ptr long) +@ stdcall TpWaitForTimer(ptr long) +@ stdcall TpWaitForWait(ptr long) +@ stdcall TpWaitForWork(ptr long) +@ stdcall LdrAddDllDirectory(ptr ptr) +@ stdcall LdrSetDllDirectory(ptr) +@ stdcall LdrGetDllDirectory(ptr) +@ stdcall LdrRemoveDllDirectory(ptr) +@ stdcall LdrSetDefaultDllDirectories(long) diff --git a/dll/win32/KernelBase/notes b/dll/win32/KernelBase/notes new file mode 100644 index 00000000000..5b0ba4ee01e --- /dev/null +++ b/dll/win32/KernelBase/notes @@ -0,0 +1,11 @@ +wine/actctx.c - ours is better +wine/comm.c ? maybe syncable +wine/lzexpand.c syncable - Kernel32 +wine/profile.c syncable - kernel32 +wine/res.c - loader.c - kernelbase +wine/timezone.c ? +winnls/string/fold.c <-Locale - unsyncable until we have more kernel apis +winnls/string/format_msg.c <- Locale - unsyncable until we have more kernel apis +winnls/string/lcformat.c <- Locale - unsyncable until we have more kernel apis +winnls/string/locale.c <- Locale - unsyncable until we have more kernel apis +winnls/string/sortkey.c <- Locale - unsyncable until we have more kernel apis \ No newline at end of file diff --git a/dll/win32/KernelBase/wine/CMakeLists.txt b/dll/win32/KernelBase/wine/CMakeLists.txt index ac42e1349f1..2bcb0bbac05 100644 --- a/dll/win32/KernelBase/wine/CMakeLists.txt +++ b/dll/win32/KernelBase/wine/CMakeLists.txt @@ -39,9 +39,22 @@ endif() list(APPEND SOURCE_STATIC #console.c #looks like ReactOS console.c is nothing like wine. + debug.c + file.c + loader.c + main.c + memory.c + process.c + # registry.c use advapi32 lib instead for now. + security.c + string.c + sync.c + thread.c + version.c #mostly Version.dll + volume.c ) -add_library(kernelbase_static ${SOURCE_PATH}) +add_library(kernelbase_static ${SOURCE_STATIC}) target_link_libraries(kernelbase_static kernelbase_path psapi_static ${PSEH_LIB}) add_dependencies(kernelbase_static psdk) diff --git a/dll/win32/KernelBase/wine/debug.c b/dll/win32/KernelBase/wine/debug.c index cbefc0c8733..2474fbed6c7 100644 --- a/dll/win32/KernelBase/wine/debug.c +++ b/dll/win32/KernelBase/wine/debug.c @@ -49,6 +49,7 @@ static PTOP_LEVEL_EXCEPTION_FILTER top_filter; void *dummy = RtlUnwind; /* force importing RtlUnwind from ntdll */ +#ifndef __REACTOS__ /*********************************************************************** * CheckRemoteDebuggerPresent (kernelbase.@) */ @@ -768,7 +769,7 @@ LONG WINAPI UnhandledExceptionFilter( EXCEPTION_POINTERS *epointers ) return EXCEPTION_CONTINUE_SEARCH; } - +#endif /*********************************************************************** * WerGetFlags (kernelbase.@) */ @@ -849,7 +850,7 @@ HRESULT WINAPI /* DECLSPEC_HOTPATCH */ WerUnregisterRuntimeExceptionModule( cons return S_OK; } - +#ifndef __REACTOS__ /*********************************************************************** * psapi functions ***********************************************************************/ @@ -1669,7 +1670,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH GetWsChanges( HANDLE process, PSAPI_WS_WATCH_INFOR TRACE( "(%p, %p, %ld)\n", process, info, size ); return set_ntstatus( NtQueryInformationProcess( process, ProcessWorkingSetWatch, info, size, NULL )); } - +#endif /*********************************************************************** * GetWsChangesEx (kernelbase.@) @@ -1684,6 +1685,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH GetWsChangesEx( HANDLE process, PSAPI_WS_WATCH_INF } +#ifndef __REACTOS__ /*********************************************************************** * InitializeProcessForWsWatch (kernelbase.@) * K32InitializeProcessForWsWatch (kernelbase.@) @@ -1694,7 +1696,6 @@ BOOL WINAPI /* DECLSPEC_HOTPATCH */ InitializeProcessForWsWatch( HANDLE process return TRUE; } - /*********************************************************************** * QueryWorkingSet (kernelbase.@) * K32QueryWorkingSet (kernelbase.@) @@ -1718,7 +1719,6 @@ BOOL WINAPI QueryWorkingSetEx( HANDLE process, void *buffer, DWORD size ) buffer, size, NULL )); } - /****************************************************************** * QueryFullProcessImageNameA (kernelbase.@) */ @@ -1818,3 +1818,4 @@ cleanup: HeapFree( GetProcessHeap(), 0, dynamic_buffer ); return set_ntstatus( status ); } +#endif \ No newline at end of file diff --git a/dll/win32/KernelBase/wine/file.c b/dll/win32/KernelBase/wine/file.c index f0dedfe3b14..662a66072cf 100644 --- a/dll/win32/KernelBase/wine/file.c +++ b/dll/win32/KernelBase/wine/file.c @@ -34,8 +34,10 @@ #include "wincon.h" #include "fileapi.h" #include "shlwapi.h" +#ifndef __REACTOS__ #include "ddk/ntddk.h" #include "ddk/ntddser.h" +#endif #include "ioringapi.h" #include "kernelbase.h" @@ -476,7 +478,7 @@ static BOOL is_same_file( HANDLE h1, HANDLE h2 ) !memcmp( &id1.ObjectId, &id2.ObjectId, sizeof(id1.ObjectId) )); } - +#ifndef __REACTOS__ /****************************************************************************** * AreFileApisANSI (kernelbase.@) */ @@ -484,6 +486,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH AreFileApisANSI(void) { return !oem_file_apis; } +#endif /****************************************************************************** * copy_file @@ -602,7 +605,7 @@ HRESULT WINAPI CopyFile2( const WCHAR *source, const WCHAR *dest, COPYFILE2_EXTE return copy_file(source, dest, params) ? S_OK : HRESULT_FROM_WIN32(GetLastError()); } - +#ifndef __REACTOS__ /*********************************************************************** * CopyFileExW (kernelbase.@) */ @@ -690,7 +693,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH CreateDirectoryExW( LPCWSTR template, LPCWSTR path { return CreateDirectoryW( path, sa ); } - +#endif /************************************************************************* * CreateFile2 (kernelbase.@) @@ -734,6 +737,7 @@ HANDLE WINAPI DECLSPEC_HOTPATCH CreateFile2( LPCWSTR name, DWORD access, DWORD s return CreateFileW( name, access, sharing, sa, creation, flags | attributes, template ); } +#ifndef __REACTOS__ /************************************************************************* * CreateFileA (kernelbase.@) @@ -2997,7 +3001,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH CancelIo( HANDLE handle ) return set_ntstatus( NtCancelIoFile( handle, &io ) ); } - +#endif /*********************************************************************** * CancelIoEx (kernelbase.@) @@ -3005,11 +3009,14 @@ BOOL WINAPI DECLSPEC_HOTPATCH CancelIo( HANDLE handle ) BOOL WINAPI DECLSPEC_HOTPATCH CancelIoEx( HANDLE handle, LPOVERLAPPED overlapped ) { IO_STATUS_BLOCK io; - +#ifdef __REACTOS__ + return set_ntstatus( NtCancelIoFile( handle, &io ) ); +#else return set_ntstatus( NtCancelIoFileEx( handle, (PIO_STATUS_BLOCK)overlapped, &io ) ); +#endif } - +#ifndef __REACTOS__ /*********************************************************************** * CancelSynchronousIo (kernelbase.@) */ @@ -3662,7 +3669,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH SetEndOfFile( HANDLE file ) } return set_ntstatus( status ); } - +#endif /*********************************************************************** * SetFileInformationByHandle (kernelbase.@) @@ -3741,7 +3748,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH SetFileInformationByHandle( HANDLE file, FILE_INFO return set_ntstatus( status ); } - +#ifndef __REACTOS__ /*********************************************************************** * SetFilePointer (kernelbase.@) */ @@ -4592,7 +4599,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH WaitCommEvent( HANDLE handle, DWORD *events, OVERL return DeviceIoControl( handle, IOCTL_SERIAL_WAIT_ON_MASK, NULL, 0, events, sizeof(*events), NULL, overlapped ); } - +#endif /*********************************************************************** * QueryIoRingCapabilities (kernelbase.@) diff --git a/dll/win32/KernelBase/wine/loader.c b/dll/win32/KernelBase/wine/loader.c index 7afbe0460eb..d6e6d4e820f 100644 --- a/dll/win32/KernelBase/wine/loader.c +++ b/dll/win32/KernelBase/wine/loader.c @@ -28,7 +28,9 @@ #include "winbase.h" #include "winnls.h" #include "winternl.h" +#ifndef __REACTOS__ #include "ddk/ntddk.h" +#endif #include "kernelbase.h" #include "wine/list.h" #include "wine/asm.h" @@ -60,6 +62,7 @@ static CRITICAL_SECTION exclusive_datafile_list_section = { &critsect_debug, -1, * Modules ***********************************************************************/ +#ifndef __REACTOS__ // Let use the reactos implementation of this /****************************************************************** * get_proc_address @@ -492,12 +495,19 @@ FARPROC WINAPI DECLSPEC_HOTPATCH GetProcAddress( HMODULE module, LPCSTR function #endif /* __x86_64__ */ +#endif /*********************************************************************** * IsApiSetImplemented (kernelbase.@) */ BOOL WINAPI IsApiSetImplemented( LPCSTR name ) { +#ifdef __REACTOS__ + return TRUE; + /* + * ReactOS always has API sets on now? + */ +#else UNICODE_STRING str; NTSTATUS status; BOOLEAN in_schema, present; @@ -506,8 +516,10 @@ BOOL WINAPI IsApiSetImplemented( LPCSTR name ) status = ApiSetQueryApiSetPresenceEx( &str, &in_schema, &present ); RtlFreeUnicodeString( &str ); return !status && present; +#endif } +#ifndef __REACTOS__ /*********************************************************************** * LoadLibraryA (kernelbase.@) @@ -566,6 +578,7 @@ HMODULE WINAPI DECLSPEC_HOTPATCH LoadLibraryExW( LPCWSTR name, HANDLE file, DWOR return module; } +#endif /*********************************************************************** * LoadPackagedLibrary (kernelbase.@) @@ -932,7 +945,7 @@ done: return ret; } - +#ifndef __REACTOS__ /********************************************************************** * EnumResourceNamesW (kernelbase.@) */ @@ -941,7 +954,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH EnumResourceNamesW( HMODULE module, LPCWSTR type, { return EnumResourceNamesExW( module, type, func, param, 0, 0 ); } - +#endif /********************************************************************** * EnumResourceTypesExA (kernelbase.@) @@ -1045,7 +1058,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH EnumResourceTypesExW( HMODULE module, ENUMRESTYPEP return ret; } - +#ifndef __REACTOS__ /********************************************************************** * FindResourceExW (kernelbase.@) */ @@ -1221,7 +1234,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH GetCurrentActCtx( HANDLE *pcontext ) return set_ntstatus( RtlGetActiveActivationContext( pcontext )); } - +#endif /*********************************************************************** * QueryActCtxSettingsW (kernelbase.@) */ @@ -1232,8 +1245,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH QueryActCtxSettingsW( DWORD flags, HANDLE ctx, con return set_ntstatus( RtlQueryActivationContextApplicationSettings( flags, ctx, ns, settings, buffer, size, written )); } - - +#ifndef __REACTOS__ /*********************************************************************** * QueryActCtxW (kernelbase.@) */ @@ -1261,3 +1273,4 @@ BOOL WINAPI DECLSPEC_HOTPATCH ZombifyActCtx( HANDLE context ) { return set_ntstatus( RtlZombifyActivationContext( context )); } +#endif diff --git a/dll/win32/KernelBase/wine/main.c b/dll/win32/KernelBase/wine/main.c index 60173ba6513..06ace30cade 100644 --- a/dll/win32/KernelBase/wine/main.c +++ b/dll/win32/KernelBase/wine/main.c @@ -24,7 +24,9 @@ #include "windows.h" #include "appmodel.h" #include "shlwapi.h" +#ifndef __REACTOS__ #include "perflib.h" +#endif #include "winternl.h" #include "wine/debug.h" @@ -34,9 +36,13 @@ WINE_DEFAULT_DEBUG_CHANNEL(kernelbase); +#ifdef __REACTOS__ +const GUID IID_IUnknown = {0x00000000, 0x0000, 0x0000, {0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46}}; +#endif BOOL is_wow64 = FALSE; +#ifndef __REACTOS__ /*********************************************************************** * DllMain */ @@ -47,40 +53,17 @@ BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, LPVOID reserved ) DisableThreadLibraryCalls( hinst ); IsWow64Process( GetCurrentProcess(), &is_wow64 ); init_global_data(); - init_locale( hinst ); + // init_locale( hinst ); init_startup_info( NtCurrentTeb()->Peb->ProcessParameters ); +#ifndef __REACTOS__ init_console(); +#endif } return TRUE; } +#endif -/*********************************************************************** - * MulDiv (kernelbase.@) - */ -INT WINAPI MulDiv( INT a, INT b, INT c ) -{ - LONGLONG ret; - - if (!c) return -1; - - /* We want to deal with a positive divisor to simplify the logic. */ - if (c < 0) - { - a = -a; - c = -c; - } - - /* If the result is positive, we "add" to round. else, we subtract to round. */ - if ((a < 0 && b < 0) || (a >= 0 && b >= 0)) - ret = (((LONGLONG)a * b) + (c / 2)) / c; - else - ret = (((LONGLONG)a * b) - (c / 2)) / c; - - if (ret > 2147483647 || ret < -2147483647) return -1; - return ret; -} - /*********************************************************************** * AppPolicyGetMediaFoundationCodecLoading (KERNELBASE.@) */ @@ -147,34 +130,8 @@ LONG WINAPI AppPolicyGetWindowingModel(HANDLE token, AppPolicyWindowingModel *po return ERROR_SUCCESS; } -struct counterset_template -{ - PERF_COUNTERSET_INFO counterset; - PERF_COUNTER_INFO counter[1]; -}; - -struct counterset_instance -{ - struct list entry; - struct counterset_template *template; - PERF_COUNTERSET_INSTANCE instance; -}; - -struct perf_provider -{ - GUID guid; - PERFLIBREQUEST callback; - struct counterset_template **countersets; - unsigned int counterset_count; - - struct list instance_list; -}; - -static struct perf_provider *perf_provider_from_handle(HANDLE prov) -{ - return (struct perf_provider *)prov; -} +#ifndef __REACTOS__ /*********************************************************************** * PerfCreateInstance (KERNELBASE.@) */ @@ -395,7 +352,7 @@ ULONG WINAPI PerfStopProvider(HANDLE handle) heap_free( prov ); return STATUS_SUCCESS; } - +#endif /*********************************************************************** * QuirkIsEnabled (KERNELBASE.@) */ diff --git a/dll/win32/KernelBase/wine/memory.c b/dll/win32/KernelBase/wine/memory.c index 0be178f6ab7..7d480b9995b 100644 --- a/dll/win32/KernelBase/wine/memory.c +++ b/dll/win32/KernelBase/wine/memory.c @@ -22,17 +22,19 @@ #include #include #include +#ifndef __REACTOS__ #include - #include "ntstatus.h" +#endif #define WIN32_NO_STATUS #include "windef.h" #include "winbase.h" #include "winnls.h" #include "winternl.h" +#ifndef __REACTOS__ #include "winerror.h" #include "ddk/wdm.h" - +#endif #include "kernelbase.h" #include "wine/exception.h" #include "wine/debug.h" @@ -41,7 +43,11 @@ WINE_DEFAULT_DEBUG_CHANNEL(heap); WINE_DECLARE_DEBUG_CHANNEL(virtual); WINE_DECLARE_DEBUG_CHANNEL(globalmem); - +#ifdef __REACTOS__ +#define STATUS_INFO_LENGTH_MISMATCH ((NTSTATUS)0xC0000004) +#define STATUS_BUFFER_TOO_SMALL ((NTSTATUS)0xC0000023L) +#endif +#ifndef __REACTOS__ static CROSS_PROCESS_WORK_LIST *open_cross_process_connection( HANDLE process ) { @@ -1442,7 +1448,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH GetLogicalProcessorInformation( SYSTEM_LOGICAL_PRO if (status == STATUS_INFO_LENGTH_MISMATCH) status = STATUS_BUFFER_TOO_SMALL; return set_ntstatus( status ); } - +#endif /*********************************************************************** * GetLogicalProcessorInformationEx (kernelbase.@) @@ -1457,13 +1463,17 @@ BOOL WINAPI DECLSPEC_HOTPATCH GetLogicalProcessorInformationEx( LOGICAL_PROCESSO SetLastError( ERROR_INVALID_PARAMETER ); return FALSE; } +#ifdef __REACTOS__ + status = NtQuerySystemInformation( SystemLogicalProcessorInformationEx, buffer, *len, len ); //NtQuerySystemInformationEx is required. +#else status = NtQuerySystemInformationEx( SystemLogicalProcessorInformationEx, &relationship, sizeof(relationship), buffer, *len, len ); +#endif if (status == STATUS_INFO_LENGTH_MISMATCH) status = STATUS_BUFFER_TOO_SMALL; return set_ntstatus( status ); } - +#ifndef __REACTOS__ /*********************************************************************** * GetSystemCpuSetInformation (kernelbase.@) */ @@ -1830,3 +1840,4 @@ UINT WINAPI GetSystemFirmwareTable( DWORD provider, DWORD id, void *buffer, DWOR return get_firmware_table( provider, SystemFirmwareTable_Get, id, buffer, size ); } +#endif \ No newline at end of file diff --git a/dll/win32/KernelBase/wine/process.c b/dll/win32/KernelBase/wine/process.c index df3447a9014..bba73f43e44 100644 --- a/dll/win32/KernelBase/wine/process.c +++ b/dll/win32/KernelBase/wine/process.c @@ -31,13 +31,15 @@ #include "kernelbase.h" #include "wine/debug.h" +#ifndef __REACTOS__ #include "wine/condrv.h" +#endif WINE_DEFAULT_DEBUG_CHANNEL(process); static DWORD shutdown_flags = 0; static DWORD shutdown_priority = 0x280; - +#ifndef __REACTOS__ /*********************************************************************** * Processes ***********************************************************************/ @@ -233,6 +235,8 @@ static RTL_USER_PROCESS_PARAMETERS *create_process_params( const WCHAR *filename if (envW != env) RtlFreeHeap( GetProcessHeap(), 0, envW ); return params; } +#endif + struct proc_thread_attr { @@ -251,6 +255,7 @@ struct _PROC_THREAD_ATTRIBUTE_LIST struct proc_thread_attr attrs[1]; }; +#ifndef __REACTOS__ /*********************************************************************** * create_nt_process */ @@ -838,7 +843,7 @@ DWORD WINAPI DECLSPEC_HOTPATCH GetPriorityClass( HANDLE process ) default: return 0; } } - +#endif /*********************************************************************** * GetProcessGroupAffinity (kernelbase.@) @@ -850,6 +855,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH GetProcessGroupAffinity( HANDLE process, USHORT *c return FALSE; } +#ifndef __REACTOS__ /****************************************************************** * GetProcessHandleCount (kernelbase.@) @@ -1742,6 +1748,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH SetEnvironmentVariableW( LPCWSTR name, LPCWSTR val return set_ntstatus( status ); } +#endif /*********************************************************************** * Process/thread attribute lists @@ -1868,5 +1875,9 @@ void WINAPI DECLSPEC_HOTPATCH DeleteProcThreadAttributeList( struct _PROC_THREAD */ BOOL WINAPI DECLSPEC_HOTPATCH CompareObjectHandles( HANDLE first, HANDLE second ) { +#ifndef __REACTOS__ return set_ntstatus( NtCompareObjects( first, second )); +#else + return FALSE; //NtCompareObjects is not implemented in ReactOS +#endif } diff --git a/dll/win32/KernelBase/wine/security.c b/dll/win32/KernelBase/wine/security.c index fd0eb4e561d..67ea674bfde 100644 --- a/dll/win32/KernelBase/wine/security.c +++ b/dll/win32/KernelBase/wine/security.c @@ -29,7 +29,10 @@ #include "winerror.h" #include "winternl.h" #include "winioctl.h" +#ifdef __REACTOS__ +#else #include "ddk/ntddk.h" +#endif #include "kernelbase.h" #include "wine/debug.h" @@ -721,9 +724,6 @@ BOOL WINAPI GetTokenInformation( HANDLE token, TOKEN_INFORMATION_CLASS class, (class == TokenGroupsAndPrivileges) ? "TokenGroupsAndPrivileges" : (class == TokenSessionReference) ? "TokenSessionReference" : (class == TokenSandBoxInert) ? "TokenSandBoxInert" : - (class == TokenElevation) ? "TokenElevation" : - (class == TokenElevationType) ? "TokenElevationType" : - (class == TokenLinkedToken) ? "TokenLinkedToken" : "Unknown", info, len, retlen); diff --git a/dll/win32/KernelBase/wine/sync.c b/dll/win32/KernelBase/wine/sync.c index f03a6c3150a..4c303229756 100644 --- a/dll/win32/KernelBase/wine/sync.c +++ b/dll/win32/KernelBase/wine/sync.c @@ -31,8 +31,13 @@ #include "winnls.h" #include "winternl.h" #include "winioctl.h" +#ifdef __REACTOS__ +#define SystemProcessorIdleCycleTimeInformation 83 +#define DIRECTORY_TRAVERSE 0x0002 +#define DIRECTORY_CREATE_OBJECT 0x0004 +#else #include "ddk/wdm.h" - +#endif #include "kernelbase.h" #include "wine/asm.h" #include "wine/exception.h" @@ -60,7 +65,11 @@ static inline LARGE_INTEGER *get_nt_timeout( LARGE_INTEGER *time, DWORD timeout /*********************************************************************** * BaseGetNamedObjectDirectory (kernelbase.@) */ +#ifdef __REACTOS__ +NTSTATUS WINAPI BaseGetNamedObjectDirectory_Base( HANDLE *dir ) +#else NTSTATUS WINAPI BaseGetNamedObjectDirectory( HANDLE *dir ) +#endif { static HANDLE handle; WCHAR buffer[64]; @@ -71,9 +80,13 @@ NTSTATUS WINAPI BaseGetNamedObjectDirectory( HANDLE *dir ) if (!handle) { HANDLE dir; - +#ifdef __REACTOS__ + swprintf( buffer, L"\\Sessions\\%u\\BaseNamedObjects", + NtCurrentTeb()->Peb->SessionId ); +#else swprintf( buffer, ARRAY_SIZE(buffer), L"\\Sessions\\%u\\BaseNamedObjects", NtCurrentTeb()->Peb->SessionId ); +#endif RtlInitUnicodeString( &str, buffer ); InitializeObjectAttributes(&attr, &str, 0, 0, NULL); status = NtOpenDirectoryObject( &dir, DIRECTORY_CREATE_OBJECT|DIRECTORY_TRAVERSE, &attr ); @@ -100,7 +113,11 @@ static void get_create_object_attributes( OBJECT_ATTRIBUTES *attr, UNICODE_STRIN { RtlInitUnicodeString( nameW, name ); attr->ObjectName = nameW; +#ifdef __REACTOS__ + BaseGetNamedObjectDirectory_Base( &attr->RootDirectory ); +#else BaseGetNamedObjectDirectory( &attr->RootDirectory ); +#endif } } @@ -115,12 +132,17 @@ static BOOL get_open_object_attributes( OBJECT_ATTRIBUTES *attr, UNICODE_STRING return FALSE; } RtlInitUnicodeString( nameW, name ); +#ifdef __REACTOS__ + BaseGetNamedObjectDirectory_Base( &dir ); +#else BaseGetNamedObjectDirectory( &dir ); +#endif InitializeObjectAttributes( attr, nameW, inherit ? OBJ_INHERIT : 0, dir, NULL ); return TRUE; } +#ifndef __REACTOS__ /*********************************************************************** * Time functions ***********************************************************************/ @@ -175,7 +197,6 @@ BOOL WINAPI DECLSPEC_HOTPATCH GetSystemTimes( FILETIME *idle, FILETIME *kernel, return TRUE; } - /****************************************************************************** * GetTickCount (kernelbase.@) */ @@ -203,7 +224,6 @@ ULONGLONG WINAPI DECLSPEC_HOTPATCH GetTickCount64(void) return (ULONGLONG)high << 32 | low; } - /****************************************************************************** * QueryInterruptTime (kernelbase.@) */ @@ -232,7 +252,6 @@ void WINAPI DECLSPEC_HOTPATCH QueryInterruptTimePrecise( ULONGLONG *time ) QueryInterruptTime( time ); } - /*********************************************************************** * QueryUnbiasedInterruptTimePrecise (kernelbase.@) */ @@ -243,7 +262,7 @@ void WINAPI DECLSPEC_HOTPATCH QueryUnbiasedInterruptTimePrecise( ULONGLONG *time RtlQueryUnbiasedInterruptTime( time ); } - +#endif /*********************************************************************** * QueryIdleProcessorCycleTime (kernelbase.@) @@ -263,10 +282,17 @@ BOOL WINAPI QueryIdleProcessorCycleTime( ULONG *size, ULONG64 *times ) */ BOOL WINAPI QueryIdleProcessorCycleTimeEx( USHORT group_id, ULONG *size, ULONG64 *times ) { +#ifndef __REACTOS__ ULONG ret_size; NTSTATUS status = NtQuerySystemInformationEx( SystemProcessorIdleCycleTimeInformation, &group_id, sizeof(group_id), times, *size, &ret_size ); if (!*size || !status) *size = ret_size; +#else + ULONG ret_size; + NTSTATUS status = NtQuerySystemInformation( SystemProcessorIdleCycleTimeInformation, + times, *size, &ret_size ); + if (!*size || !status) *size = ret_size; +#endif return TRUE; } @@ -276,6 +302,7 @@ BOOL WINAPI QueryIdleProcessorCycleTimeEx( USHORT group_id, ULONG *size, ULONG64 ***********************************************************************/ +#ifndef __REACTOS__ static HANDLE normalize_std_handle( HANDLE handle ) { if ((handle == (HANDLE)STD_INPUT_HANDLE) || @@ -453,12 +480,15 @@ BOOL WINAPI DECLSPEC_HOTPATCH WaitForDebugEvent( DEBUG_EVENT *event, DWORD timeo } } } - +#endif /****************************************************************************** * WaitForDebugEventEx (kernelbase.@) */ BOOL WINAPI DECLSPEC_HOTPATCH WaitForDebugEventEx( DEBUG_EVENT *event, DWORD timeout ) { +#ifdef __REACTOS__ + return WaitForDebugEvent(event,timeout); +#else NTSTATUS status; LARGE_INTEGER time; DBGUI_WAIT_STATE_CHANGE state; @@ -480,14 +510,20 @@ BOOL WINAPI DECLSPEC_HOTPATCH WaitForDebugEventEx( DEBUG_EVENT *event, DWORD tim return set_ntstatus( status ); } } +#endif } - +#ifndef __REACTOS__ /*********************************************************************** * WaitOnAddress (kernelbase.@) */ BOOL WINAPI DECLSPEC_HOTPATCH WaitOnAddress( volatile void *addr, void *cmp, SIZE_T size, DWORD timeout ) { +#ifdef __REACTOS__ + //TODO: We don't Implement WaitOnAddress + __debugbreak(); + return 0; +#else LARGE_INTEGER to; if (timeout != INFINITE) @@ -496,6 +532,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH WaitOnAddress( volatile void *addr, void *cmp, SIZ return set_ntstatus( RtlWaitOnAddress( (const void *)addr, cmp, size, &to )); } return set_ntstatus( RtlWaitOnAddress( (const void *)addr, cmp, size, NULL )); +#endif } @@ -531,7 +568,7 @@ HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW( SECURITY_ATTRIBUTES *sa, BOOL manu return CreateEventExW( sa, name, flags, EVENT_ALL_ACCESS ); } - +#endif /*********************************************************************** * CreateEventExA (kernelbase.@) */ @@ -585,7 +622,7 @@ HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventExW( SECURITY_ATTRIBUTES *sa, LPCWSTR SetLastError( RtlNtStatusToDosError(status) ); return ret; } - +#ifndef __REACTOS__ /*********************************************************************** * OpenEventA (kernelbase.@) @@ -671,7 +708,7 @@ HANDLE WINAPI DECLSPEC_HOTPATCH CreateMutexW( SECURITY_ATTRIBUTES *sa, BOOL owne return CreateMutexExW( sa, name, owner ? CREATE_MUTEX_INITIAL_OWNER : 0, MUTEX_ALL_ACCESS ); } - +#endif /*********************************************************************** * CreateMutexExA (kernelbase.@) */ @@ -693,7 +730,6 @@ HANDLE WINAPI DECLSPEC_HOTPATCH CreateMutexExA( SECURITY_ATTRIBUTES *sa, LPCSTR return CreateMutexExW( sa, NtCurrentTeb()->StaticUnicodeString.Buffer, flags, access ); } - /*********************************************************************** * CreateMutexExW (kernelbase.@) */ @@ -715,7 +751,7 @@ HANDLE WINAPI DECLSPEC_HOTPATCH CreateMutexExW( SECURITY_ATTRIBUTES *sa, LPCWSTR return ret; } - +#ifndef __REACTOS__ /*********************************************************************** * OpenMutexW (kernelbase.@) */ @@ -820,7 +856,7 @@ HANDLE WINAPI DECLSPEC_HOTPATCH CreateWaitableTimerW( SECURITY_ATTRIBUTES *sa, B return CreateWaitableTimerExW( sa, name, manual ? CREATE_WAITABLE_TIMER_MANUAL_RESET : 0, TIMER_ALL_ACCESS ); } - +#endif /*********************************************************************** * CreateWaitableTimerExW (kernelbase.@) @@ -843,7 +879,7 @@ HANDLE WINAPI DECLSPEC_HOTPATCH CreateWaitableTimerExW( SECURITY_ATTRIBUTES *sa, SetLastError( RtlNtStatusToDosError(status) ); return handle; } - +#ifndef __REACTOS__ /*********************************************************************** * OpenWaitableTimerW (kernelbase.@) @@ -874,7 +910,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH SetWaitableTimer( HANDLE handle, const LARGE_INTEG return set_ntstatus( status ) || status == STATUS_TIMER_RESUME_IGNORED; } - +#endif /*********************************************************************** * SetWaitableTimerEx (kernelbase.@) */ @@ -889,7 +925,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH SetWaitableTimerEx( HANDLE handle, const LARGE_INT return SetWaitableTimer( handle, when, period, callback, arg, FALSE ); } - +#ifndef __REACTOS__ /*********************************************************************** * CancelWaitableTimer (kernelbase.@) */ @@ -936,7 +972,6 @@ BOOL WINAPI DECLSPEC_HOTPATCH ChangeTimerQueueTimer( HANDLE queue, HANDLE timer, return set_ntstatus( RtlUpdateTimer( queue, timer, when, period )); } - /*********************************************************************** * DeleteTimerQueueEx (kernelbase.@) */ @@ -945,7 +980,6 @@ BOOL WINAPI DECLSPEC_HOTPATCH DeleteTimerQueueEx( HANDLE queue, HANDLE event ) return set_ntstatus( RtlDeleteTimerQueueEx( queue, event )); } - /*********************************************************************** * DeleteTimerQueueTimer (kernelbase.@) */ @@ -953,13 +987,13 @@ BOOL WINAPI DECLSPEC_HOTPATCH DeleteTimerQueueTimer( HANDLE queue, HANDLE timer, { return set_ntstatus( RtlDeleteTimer( queue, timer, event )); } - +#endif /*********************************************************************** * Critical sections ***********************************************************************/ - +#ifndef __REACTOS__ /*********************************************************************** * InitializeCriticalSectionAndSpinCount (kernelbase.@) */ @@ -978,12 +1012,12 @@ BOOL WINAPI DECLSPEC_HOTPATCH InitializeCriticalSectionEx( CRITICAL_SECTION *cri if (ret) RtlRaiseStatus( ret ); return !ret; } - +#endif /*********************************************************************** * File mappings ***********************************************************************/ - +#ifndef __REACTOS__ /*********************************************************************** * CreateFileMappingW (kernelbase.@) */ @@ -1050,6 +1084,7 @@ HANDLE WINAPI DECLSPEC_HOTPATCH CreateFileMappingW( HANDLE file, LPSECURITY_ATTR return ret; } +#endif /*********************************************************************** * CreateFileMappingFromApp (kernelbase.@) @@ -1059,7 +1094,7 @@ HANDLE WINAPI DECLSPEC_HOTPATCH CreateFileMappingFromApp( HANDLE file, LPSECURIT { return CreateFileMappingW( file, sa, protect, size << 32, size, name ); } - +#ifndef __REACTOS__ /*********************************************************************** * OpenFileMappingW (kernelbase.@) */ @@ -1083,7 +1118,7 @@ HANDLE WINAPI DECLSPEC_HOTPATCH OpenFileMappingW( DWORD access, BOOL inherit, LP return ret; } - +#endif /*********************************************************************** * OpenFileMappingFromApp (kernelbase.@) */ @@ -1106,7 +1141,7 @@ HANDLE WINAPI DECLSPEC_HOTPATCH OpenFileMappingFromApp( ULONG access, BOOL inher * Condition variables ***********************************************************************/ - +#ifndef __REACTOS__ /*********************************************************************** * SleepConditionVariableCS (kernelbase.@) */ @@ -1202,7 +1237,9 @@ BOOL WINAPI DECLSPEC_HOTPATCH GetQueuedCompletionStatus( HANDLE port, LPDWORD co else SetLastError( RtlNtStatusToDosError(status) ); return FALSE; } - +#endif +#ifndef __REACTOS__ +//TODO: /****************************************************************************** * GetQueuedCompletionStatusEx (kernelbase.@) */ @@ -1410,8 +1447,13 @@ BOOL WINAPI DECLSPEC_HOTPATCH CreatePipe( HANDLE *read_pipe, HANDLE *write_pipe, /* generate a unique pipe name (system wide) */ for (;;) { +#ifdef __REACTOS__ + swprintf( name, L"\\??\\pipe\\Win32.Pipes.%08lu.%08u", + GetCurrentProcessId(), ++index ); +#else swprintf( name, ARRAY_SIZE(name), L"\\??\\pipe\\Win32.Pipes.%08lu.%08u", GetCurrentProcessId(), ++index ); +#endif RtlInitUnicodeString( &nt_name, name ); if (!NtCreateNamedPipeFile( read_pipe, GENERIC_READ | FILE_WRITE_ATTRIBUTES | SYNCHRONIZE, &attr, &iosb, FILE_SHARE_WRITE, FILE_OPEN_IF, @@ -1674,7 +1716,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH WaitNamedPipeW( LPCWSTR name, DWORD timeout ) return set_ntstatus( status ); } - +#ifndef __REACTOS__ /*********************************************************************** * Interlocked functions @@ -1763,3 +1805,5 @@ __ASM_STDCALL_FUNC(InterlockedDecrement, 4, "ret $4") #endif /* __i386__ */ +#endif +#endif diff --git a/dll/win32/KernelBase/wine/synchacks.h b/dll/win32/KernelBase/wine/synchacks.h index e466f4ba011..4f6710569ed 100644 --- a/dll/win32/KernelBase/wine/synchacks.h +++ b/dll/win32/KernelBase/wine/synchacks.h @@ -2,3 +2,135 @@ #define CRITICAL_SECTION RTL_CRITICAL_SECTION #define CRITICAL_SECTION_DEBUG RTL_CRITICAL_SECTION_DEBUG +#define IMAGE_FILE_MACHINE_TARGET_HOST 0x0001 +#define RTL_CONSTANT_STRING(s) { sizeof(s)-sizeof((s)[0]), sizeof(s), s } + + +//def ndk +NTSYSAPI +BOOLEAN +NTAPI +RtlGetProductInfo( + _In_ ULONG OSMajorVersion, + _In_ ULONG OSMinorVersion, + _In_ ULONG SpMajorVersion, + _In_ ULONG SpMinorVersion, + _Out_ PULONG ReturnedProductType); +NTSYSAPI NTSTATUS WINAPI RtlQueryActivationContextApplicationSettings(DWORD,HANDLE,const WCHAR*,const WCHAR*,WCHAR*,SIZE_T,SIZE_T*); +NTSYSAPI NTSTATUS WINAPI LdrSetDefaultDllDirectories(ULONG); +NTSYSAPI NTSTATUS WINAPI LdrRemoveDllDirectory(void*); + +#ifndef NT_SUCCESS +#define NT_SUCCESS(Status) (((NTSTATUS)(Status)) >= 0) +#endif +#define SYMBOLIC_LINK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1) + +//kernel32 + BOOL WINAPI DECLSPEC_HOTPATCH GetThreadGroupAffinity( HANDLE thread, GROUP_AFFINITY *affinity ); + +typedef struct _THREAD_NAME_INFORMATION +{ + UNICODE_STRING ThreadName; +} THREAD_NAME_INFORMATION, *PTHREAD_NAME_INFORMATION; + +HANDLE WINAPI DECLSPEC_HOTPATCH CreateRemoteThreadEx( HANDLE process, SECURITY_ATTRIBUTES *sa, + SIZE_T stack, LPTHREAD_START_ROUTINE start, + LPVOID param, DWORD flags, + LPPROC_THREAD_ATTRIBUTE_LIST attributes, DWORD *id ); + + +BOOL WINAPI GetVolumeInformationByHandleW( HANDLE handle, WCHAR *label, DWORD label_len, + DWORD *serial, DWORD *filename_len, DWORD *flags, + WCHAR *fsname, DWORD fsname_len ); + + +HRESULT WINAPI PathMatchSpecExW(const WCHAR *path, const WCHAR *mask, DWORD flags); +INT WINAPI DECLSPEC_HOTPATCH CompareStringOrdinal( const WCHAR *str1, INT len1, + const WCHAR *str2, INT len2, BOOL ignore_case ); + +#define URL_UNESCAPE_AS_UTF8 URL_ESCAPE_AS_UTF8 + +//shlwapi +HRESULT WINAPI GetAcceptLanguagesW(WCHAR *langbuf, DWORD *buflen); + +BOOL WINAPI GetWindowsAccountDomainSid( PSID sid, PSID domain_sid, DWORD *size ); +//rtl types +//rtl +NTSTATUS +NTAPI +RtlNewSecurityObjectEx(IN PSECURITY_DESCRIPTOR ParentDescriptor, + IN PSECURITY_DESCRIPTOR CreatorDescriptor, + OUT PSECURITY_DESCRIPTOR *NewDescriptor, + IN LPGUID ObjectType, + IN BOOLEAN IsDirectoryObject, + IN ULONG AutoInheritFlags, + IN HANDLE Token, + IN PGENERIC_MAPPING GenericMapping); + +NTSTATUS +NTAPI +RtlNewSecurityObjectWithMultipleInheritance(IN PSECURITY_DESCRIPTOR ParentDescriptor, + IN PSECURITY_DESCRIPTOR CreatorDescriptor, + OUT PSECURITY_DESCRIPTOR *NewDescriptor, + IN LPGUID *ObjectTypes, + IN ULONG GuidCount, + IN BOOLEAN IsDirectoryObject, + IN ULONG AutoInheritFlags, + IN HANDLE Token, + IN PGENERIC_MAPPING GenericMapping); +NTSTATUS +NTAPI +RtlConvertToAutoInheritSecurityObject(IN PSECURITY_DESCRIPTOR ParentDescriptor, + IN PSECURITY_DESCRIPTOR CreatorDescriptor, + OUT PSECURITY_DESCRIPTOR *NewDescriptor, + IN LPGUID ObjectType, + IN BOOLEAN IsDirectoryObject, + IN PGENERIC_MAPPING GenericMapping); + +BOOL WINAPI DECLSPEC_HOTPATCH QueryFullProcessImageNameW( HANDLE process, DWORD flags, + WCHAR *name, DWORD *size ); + + +typedef void *PUMS_CONTEXT; +typedef void *PUMS_COMPLETION_LIST; +typedef PVOID 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; + +#ifndef _PSAPI_H +typedef struct _PSAPI_WS_WATCH_INFORMATION { + LPVOID FaultingPc; + LPVOID FaultingVa; +} PSAPI_WS_WATCH_INFORMATION, *PPSAPI_WS_WATCH_INFORMATION; + +#endif + +typedef struct _PSAPI_WS_WATCH_INFORMATION_EX { + PSAPI_WS_WATCH_INFORMATION BasicInfo; + ULONG_PTR FaultingThreadId; + ULONG_PTR Flags; +} PSAPI_WS_WATCH_INFORMATION_EX, *PPSAPI_WS_WATCH_INFORMATION_EX; + +#define PROCESSOR_ARCHITECTURE_INTEL 0 +#define PROCESSOR_ARCHITECTURE_MIPS 1 +#define PROCESSOR_ARCHITECTURE_ALPHA 2 +#define PROCESSOR_ARCHITECTURE_PPC 3 +#define PROCESSOR_ARCHITECTURE_SHX 4 +#define PROCESSOR_ARCHITECTURE_ARM 5 +#define PROCESSOR_ARCHITECTURE_IA64 6 +#define PROCESSOR_ARCHITECTURE_ALPHA64 7 +#define PROCESSOR_ARCHITECTURE_MSIL 8 +#define PROCESSOR_ARCHITECTURE_AMD64 9 +#define PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 10 +#define PROCESSOR_ARCHITECTURE_NEUTRAL 11 +#define PROCESSOR_ARCHITECTURE_ARM64 12 +#define PROCESSOR_ARCHITECTURE_ARM32_ON_WIN64 13 +#define PROCESSOR_ARCHITECTURE_IA32_ON_ARM64 14 diff --git a/dll/win32/KernelBase/wine/thread.c b/dll/win32/KernelBase/wine/thread.c index 12e1777262a..c18e6eb9512 100644 --- a/dll/win32/KernelBase/wine/thread.c +++ b/dll/win32/KernelBase/wine/thread.c @@ -53,7 +53,7 @@ static DWORD rtlmode_to_win32mode( DWORD rtlmode ) return win32mode; } - +#ifndef __REACTOS__ /*************************************************************************** * CreateRemoteThread (kernelbase.@) */ @@ -134,7 +134,6 @@ void WINAPI DECLSPEC_HOTPATCH GetCurrentThreadStackLimits( ULONG_PTR *low, ULONG *high = (ULONG_PTR)NtCurrentTeb()->Tib.StackBase; } - /*********************************************************************** * GetCurrentThread (kernelbase.@) */ @@ -204,7 +203,7 @@ DWORD WINAPI DECLSPEC_HOTPATCH GetThreadErrorMode(void) { return rtlmode_to_win32mode( RtlGetThreadErrorMode() ); } - +#endif /*********************************************************************** * GetThreadGroupAffinity (kernelbase.@) @@ -219,7 +218,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH GetThreadGroupAffinity( HANDLE thread, GROUP_AFFIN return set_ntstatus( NtQueryInformationThread( thread, ThreadGroupInformation, affinity, sizeof(*affinity), NULL )); } - +#ifndef __REACTOS__ /*********************************************************************** * GetThreadIOPendingFlag (kernelbase.@) @@ -242,17 +241,9 @@ DWORD WINAPI DECLSPEC_HOTPATCH GetThreadId( HANDLE thread ) return 0; return HandleToULong( tbi.ClientId.UniqueThread ); } +#endif - -/*********************************************************************** - * GetThreadIdealProcessorEx (kernelbase.@) - */ -BOOL WINAPI DECLSPEC_HOTPATCH GetThreadIdealProcessorEx( HANDLE thread, PROCESSOR_NUMBER *ideal ) -{ - return set_ntstatus( NtQueryInformationThread( thread, ThreadIdealProcessorEx, ideal, sizeof(*ideal), NULL)); -} - - +#ifndef __REACTOS__ /*********************************************************************** * GetThreadLocale (kernelbase.@) */ @@ -263,7 +254,6 @@ LCID WINAPI /* DECLSPEC_HOTPATCH */ GetThreadLocale(void) return ret; } - /********************************************************************** * GetThreadPriority (kernelbase.@) */ @@ -320,7 +310,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH GetThreadTimes( HANDLE thread, LPFILETIME creation } return TRUE; } - +#endif /*********************************************************************** * GetThreadUILanguage (kernelbase.@) @@ -334,7 +324,7 @@ LANGID WINAPI DECLSPEC_HOTPATCH GetThreadUILanguage(void) return lang; } - +#ifndef __REACTOS__ /*********************************************************************** * OpenThread (kernelbase.@) */ @@ -407,6 +397,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH SetThreadContext( HANDLE thread, const CONTEXT *co return set_ntstatus( NtSetContextThread( thread, context )); } +#endif /*********************************************************************** * SetThreadDescription (kernelbase.@) @@ -501,8 +492,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH SetThreadGroupAffinity( HANDLE thread, const GROUP if (old && !GetThreadGroupAffinity( thread, old )) return FALSE; return set_ntstatus( NtSetInformationThread( thread, ThreadGroupInformation, new, sizeof(*new) )); } - - +#ifndef __REACTOS__ /********************************************************************** * SetThreadIdealProcessor (kernelbase.@) */ @@ -516,8 +506,7 @@ DWORD WINAPI DECLSPEC_HOTPATCH SetThreadIdealProcessor( HANDLE thread, DWORD pro SetLastError( RtlNtStatusToDosError( status )); return ~0u; } - - +#endif /*********************************************************************** * SetThreadIdealProcessorEx (kernelbase.@) */ @@ -529,6 +518,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH SetThreadIdealProcessorEx( HANDLE thread, PROCESSO return FALSE; } +#ifndef __REACTOS__ /********************************************************************** * SetThreadLocale (kernelbase.@) @@ -567,7 +557,6 @@ BOOL WINAPI DECLSPEC_HOTPATCH SetThreadPriorityBoost( HANDLE thread, BOOL disabl return set_ntstatus( NtSetInformationThread( thread, ThreadPriorityBoost, &disable, sizeof(disable) )); } - /********************************************************************** * SetThreadStackGuarantee (kernelbase.@) */ @@ -589,7 +578,6 @@ BOOL WINAPI DECLSPEC_HOTPATCH SetThreadStackGuarantee( ULONG *size ) return TRUE; } - /********************************************************************** * SetThreadUILanguage (kernelbase.@) */ @@ -600,6 +588,7 @@ LANGID WINAPI DECLSPEC_HOTPATCH SetThreadUILanguage( LANGID langid ) if (!langid) langid = GetThreadUILanguage(); return langid; } +#endif /********************************************************************** @@ -620,7 +609,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH SetThreadInformation( HANDLE thread, THREAD_INFORM } } - +#ifndef __REACTOS__ /********************************************************************** * SuspendThread (kernelbase.@) */ @@ -761,6 +750,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH TlsSetValue( DWORD index, LPVOID value ) return TRUE; } +#endif /*********************************************************************** * Wow64GetThreadContext (kernelbase.@) @@ -795,7 +785,7 @@ BOOL WINAPI Wow64SetThreadContext( HANDLE handle, const WOW64_CONTEXT *context) /*********************************************************************** * Fibers ***********************************************************************/ - +#ifndef __REACTOS__ struct fiber_actctx { @@ -1103,7 +1093,6 @@ LPVOID WINAPI /* DECLSPEC_HOTPATCH */ ConvertThreadToFiber( LPVOID param ) return ConvertThreadToFiberEx( param, 0 ); } - /*********************************************************************** * ConvertThreadToFiberEx (kernelbase.@) */ @@ -1233,7 +1222,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH FlsSetValue( DWORD index, PVOID data ) { return set_ntstatus( RtlFlsSetValue( index, data )); } - +#endif /*********************************************************************** * Thread pool @@ -1341,7 +1330,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH TrySubmitThreadpoolCallback( PTP_SIMPLE_CALLBACK c return set_ntstatus( TpSimpleTryPost( callback, userdata, environment )); } - +#ifndef __REACTOS__ /*********************************************************************** * QueueUserWorkItem (kernelbase.@) */ @@ -1349,6 +1338,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH QueueUserWorkItem( LPTHREAD_START_ROUTINE func, PV { return set_ntstatus( RtlQueueWorkItem( func, context, flags )); } +#endif /*********************************************************************** * SetThreadpoolStackInformation (kernelbase.@) diff --git a/dll/win32/KernelBase/wine/version.c b/dll/win32/KernelBase/wine/version.c index d9529ee085c..cb309c4f82c 100644 --- a/dll/win32/KernelBase/wine/version.c +++ b/dll/win32/KernelBase/wine/version.c @@ -68,6 +68,7 @@ struct version_info DWORD build; }; +#ifndef __REACTOS__ /*********************************************************************** * Version Info Structure */ @@ -1541,7 +1542,7 @@ BOOL WINAPI GetVersionExW( OSVERSIONINFOW *info ) } return TRUE; } - +#endif /*********************************************************************** * GetCurrentPackageFamilyName (kernelbase.@) diff --git a/dll/win32/KernelBase/wine/volume.c b/dll/win32/KernelBase/wine/volume.c index d4895228525..3492e027d5a 100644 --- a/dll/win32/KernelBase/wine/volume.c +++ b/dll/win32/KernelBase/wine/volume.c @@ -33,10 +33,14 @@ #include "winnls.h" #include "winternl.h" #include "winioctl.h" +#ifdef __REACTOS__ +#include +#else #include "ntddcdrm.h" #define WINE_MOUNTMGR_EXTENSIONS #include "ddk/mountmgr.h" #include "ddk/wdm.h" +#endif #include "kernelbase.h" #include "wine/debug.h" @@ -119,6 +123,7 @@ static BOOL open_device_root( LPCWSTR root, HANDLE *handle ) return set_ntstatus( status ); } +#ifndef __REACTOS__ /* query the type of a drive from the mount manager */ static DWORD get_mountmgr_drive_type( LPCWSTR root ) { @@ -147,7 +152,7 @@ static DWORD get_mountmgr_drive_type( LPCWSTR root ) CloseHandle( mgr ); return data.type; } - +#endif /*********************************************************************** * GetVolumeInformationW (kernelbase.@) @@ -568,7 +573,7 @@ UINT WINAPI DECLSPEC_HOTPATCH GetLogicalDriveStringsW( UINT len, LPWSTR buffer ) return count * 4; } - +#ifndef __REACTOS__ /*********************************************************************** * GetDriveTypeW (kernelbase.@) */ @@ -629,7 +634,7 @@ UINT WINAPI DECLSPEC_HOTPATCH GetDriveTypeA( LPCSTR root ) if (root && !(rootW = file_name_AtoW( root, FALSE ))) return DRIVE_NO_ROOT_DIR; return GetDriveTypeW( rootW ); } - +#endif /*********************************************************************** * GetDiskFreeSpaceExW (kernelbase.@) diff --git a/dll/win32/advapi32/CMakeLists.txt b/dll/win32/advapi32/CMakeLists.txt index d1833586bb0..3dd87722753 100644 --- a/dll/win32/advapi32/CMakeLists.txt +++ b/dll/win32/advapi32/CMakeLists.txt @@ -25,8 +25,6 @@ list(APPEND SOURCE misc/shutdown.c misc/sysfunc.c misc/unicode.c - reg/hkcr.c - reg/reg.c sec/ac.c sec/audit.c sec/lsa.c @@ -54,6 +52,15 @@ list(APPEND PCH_SKIP_SOURCE ${CMAKE_CURRENT_BINARY_DIR}/svcctl_c.c ${CMAKE_CURRENT_BINARY_DIR}/winreg_c.c) +# This static library is for kernelbase and vista APIs in kernel32 +add_library(win32_registry + ${PCH_SKIP_SOURCE} + reg/hkcr.c + reg/reg.c +) +target_link_libraries(win32_registry ${PSEH_LIB}) +target_compile_definitions(win32_registry PRIVATE _KERNEL32_ UNICODE _UNICODE) + add_library(advapi32 MODULE ${SOURCE} ${PCH_SKIP_SOURCE} @@ -61,7 +68,7 @@ add_library(advapi32 MODULE ${CMAKE_CURRENT_BINARY_DIR}/advapi32.def) set_module_type(advapi32 win32dll UNICODE ENTRYPOINT DllMain 12) -target_link_libraries(advapi32 cryptlib wine ${PSEH_LIB}) +target_link_libraries(advapi32 win32_registry cryptlib wine ${PSEH_LIB}) if(DLL_EXPORT_VERSION GREATER_EQUAL 0x600) target_link_libraries(advapi32 etwtrace) endif() diff --git a/dll/win32/kernel32/CMakeLists.txt b/dll/win32/kernel32/CMakeLists.txt index e64d9d7f5e6..fe14a14c4e2 100644 --- a/dll/win32/kernel32/CMakeLists.txt +++ b/dll/win32/kernel32/CMakeLists.txt @@ -76,9 +76,11 @@ list(APPEND SOURCE wine/comm.c wine/lzexpand.c wine/muldiv.c + wine/process.c wine/profile.c wine/res.c wine/timezone.c + wine/transact.c winnls/string/casemap.c winnls/string/collation.c winnls/string/digitmap.c @@ -130,8 +132,8 @@ set_module_type(kernel32 win32dll ENTRYPOINT DllMain 12) set_subsystem(kernel32 console) ################# END HACK ################# -target_link_libraries(kernel32 kernel32_vista_static kernel32_shared kernelbase_static wine chkstk ${PSEH_LIB}) -add_importlibs(kernel32 ntdll) +target_link_libraries(kernel32 win32_registry kernel32_vista_static kernel32_shared kernelbase_static wine chkstk ${PSEH_LIB}) +add_importlibs(kernel32 ntdll_vista ntdll) add_pch(kernel32 k32.h SOURCE) add_dependencies(kernel32 psdk errcodes asm) add_cd_file(TARGET kernel32 DESTINATION reactos/system32 FOR all) diff --git a/dll/win32/kernel32/client/heapmem.c b/dll/win32/kernel32/client/heapmem.c index 12b775c3785..e1d0b9c3db9 100644 --- a/dll/win32/kernel32/client/heapmem.c +++ b/dll/win32/kernel32/client/heapmem.c @@ -1860,5 +1860,26 @@ LocalUnlock(HLOCAL hMem) RtlUnlockHeap(BaseHeap); return RetVal; } +#undef HeapAlloc +LPVOID +WINAPI +HeapAlloc( + _In_ HANDLE hHeap, + _In_ DWORD dwFlags, + _In_ SIZE_T dwBytes) +{ + return RtlAllocateHeap(hHeap, dwFlags, dwBytes); +} + +#undef HeapFree +BOOL +WINAPI +HeapFree( + _In_ HANDLE hHeap, + _In_ DWORD dwFlags, + _In_ _Frees_ptr_opt_ LPVOID lpMem) +{ + return RtlFreeHeap(hHeap, dwFlags, lpMem); +} /* EOF */ diff --git a/dll/win32/kernel32/client/power.c b/dll/win32/kernel32/client/power.c index 4a486fe94a5..2ee23c48a24 100644 --- a/dll/win32/kernel32/client/power.c +++ b/dll/win32/kernel32/client/power.c @@ -13,6 +13,7 @@ #include #include +#include #define NDEBUG #include @@ -230,3 +231,40 @@ SetThreadExecutionState(EXECUTION_STATE esFlags) return esFlags; } + +typedef enum _POWER_REQUEST_TYPE { + PowerRequestDisplayRequired, + PowerRequestSystemRequired, + PowerRequestAwayModeRequired +} POWER_REQUEST_TYPE, *PPOWER_REQUEST_TYPE; + + +/*********************************************************************** + * PowerCreateRequest (KERNEL32.@) + */ +HANDLE WINAPI PowerCreateRequest(REASON_CONTEXT *context) +{ + DPRINT1("(%p): stub\n", context); + + return CreateEventW(NULL, TRUE, FALSE, NULL); +} + +/*********************************************************************** + * PowerSetRequest (KERNEL32.@) + */ +BOOL WINAPI PowerSetRequest(HANDLE request, POWER_REQUEST_TYPE type) +{ + DPRINT1("(%p, %u): stub\n", request, type); + + return TRUE; +} + +/*********************************************************************** + * PowerClearRequest (KERNEL32.@) + */ +BOOL WINAPI PowerClearRequest(HANDLE request, POWER_REQUEST_TYPE type) +{ + DPRINT1("(%p, %u): stub\n", request, type); + + return TRUE; +} diff --git a/dll/win32/kernel32/client/sysinfo.c b/dll/win32/kernel32/client/sysinfo.c index a17aa193227..89b038ca51b 100644 --- a/dll/win32/kernel32/client/sysinfo.c +++ b/dll/win32/kernel32/client/sysinfo.c @@ -621,15 +621,3 @@ SetSystemFileCacheSize(IN SIZE_T MinimumFileCacheSize, STUB; return FALSE; } - -/* - * @unimplemented - */ -LONG -WINAPI -GetCurrentPackageId(UINT32 *BufferLength, - BYTE *Buffer) -{ - STUB; - return APPMODEL_ERROR_NO_PACKAGE; -} diff --git a/dll/win32/kernel32/include/kernel32.h b/dll/win32/kernel32/include/kernel32.h index cd64ed7653f..028f29c9a9c 100644 --- a/dll/win32/kernel32/include/kernel32.h +++ b/dll/win32/kernel32/include/kernel32.h @@ -11,7 +11,7 @@ #define comm 205 #define profile 206 #define nls 207 - +#define kernel32process 208 #if DBG #define DEBUG_CHANNEL(ch) static ULONG gDebugChannel = ch; diff --git a/dll/win32/kernel32/kernel32.spec b/dll/win32/kernel32/kernel32.spec index bed72eb2b99..7acb9a0ba18 100644 --- a/dll/win32/kernel32/kernel32.spec +++ b/dll/win32/kernel32/kernel32.spec @@ -3,8 +3,10 @@ @ stdcall ActivateActCtx(ptr ptr) @ stdcall AddAtomA(str) @ stdcall AddAtomW(wstr) -@ stdcall AddConsoleAliasA(str str str) ;check -@ stdcall AddConsoleAliasW(wstr wstr wstr) ;check +@ stdcall AddConsoleAliasA(str str str) +@ stdcall AddConsoleAliasW(wstr wstr wstr) +@ stdcall -version=0x600+ -stub AddDllDirectory(wstr) +@ stdcall -stub -version=0x601+ AddIntegrityLabelToBoundaryDescriptor(ptr ptr) @ stdcall AddLocalAlternateComputerNameA(str ptr) @ stdcall AddLocalAlternateComputerNameW(wstr ptr) @ stdcall AddRefActCtx(ptr) @@ -15,9 +17,11 @@ @ stdcall -stub -version=0x600+ AdjustCalendarDate(ptr long long) @ stdcall AllocConsole() @ stdcall AllocateUserPhysicalPages(long ptr ptr) -@ stdcall -stub -version=0x600+ AllocateUserPhysicalPagesNuma(ptr ptr ptr long) +@ stdcall -version=0x600+ -stub AllocateUserPhysicalPagesNuma(ptr ptr ptr long) @ stdcall -version=0x600+ ApplicationRecoveryFinished(long) @ stdcall -version=0x600+ ApplicationRecoveryInProgress(ptr) +@ stdcall -version=0xA00+ AppPolicyGetMediaFoundationCodecLoading(ptr ptr) +@ stdcall -version=0xA00+ AppPolicyGetWindowingModel(ptr ptr) @ stdcall AreFileApisANSI() @ stdcall AssignProcessToJobObject(ptr ptr) @ stdcall AttachConsole(long) @@ -25,10 +29,14 @@ @ stdcall BackupSeek(ptr long long ptr ptr ptr) @ stdcall BackupWrite(ptr ptr long ptr long long ptr) @ stdcall BaseCheckAppcompatCache(wstr ptr wstr ptr) +# @ stub BaseCheckAppcompatCacheEx @ stdcall BaseCheckRunApp(long ptr long long long long long long long long) @ stdcall BaseCleanupAppcompatCacheSupport(ptr) +# @ stub -version=0x601+ BaseDllReadWriteIniFile @ stdcall BaseDumpAppcompatCache() @ stdcall BaseFlushAppcompatCache() +# @ stub -version=0x601+ BaseFormatObjectAttributes +# @ stub -version=0x601+ BaseFormatTimeOut @ stub -version=0x600+ BaseGenerateAppCompatData @ stdcall BaseInitAppcompatCacheSupport() @ stdcall BaseIsAppcompatInfrastructureDisabled() IsShimInfrastructureDisabled @@ -39,9 +47,15 @@ @ stub -version=0x600+ BaseThreadInitThunk ;@ stdcall -version=0x502 -arch=x86_64 BaseThreadStart() @ stdcall BaseUpdateAppcompatCache(long long long) +# @ stub -version=0x601+ Basep8BitStringToDynamicUnicodeString +# @ stub -version=0x601+ BasepAllocateActivationContextActivationBlock +# @ stub -version=0x601+ BasepAnsiStringToDynamicUnicodeString +# @ stub -version=0x601+ BasepCheckAppCompat @ stdcall BasepCheckBadapp(long ptr long long long long long long long) @ stdcall BasepCheckWinSaferRestrictions(long long long long long long) +# @ stub -version=0x601+ BasepFreeActivationContextActivationBlock @ stdcall BasepFreeAppCompatData(ptr ptr) +# @ stub -version=0x601+ BasepMapModuleHandle @ stdcall Beep(long long) @ stdcall BeginUpdateResourceA(str long) @ stdcall BeginUpdateResourceW(wstr long) @@ -52,12 +66,12 @@ @ stdcall BuildCommDCBW(wstr ptr) @ stdcall CallNamedPipeA(str ptr long ptr long ptr long) @ stdcall CallNamedPipeW(wstr ptr long ptr long ptr long) -@ stdcall -stub -version=0x600+ CallbackMayRunLong(ptr) +@ stdcall -version=0x600+ CallbackMayRunLong(ptr) @ stdcall CancelDeviceWakeupRequest(long) @ stdcall CancelIo(long) -@ stdcall -stub -version=0x600+ CancelIoEx(ptr ptr) +@ stdcall -version=0x600+ CancelIoEx(ptr ptr) @ stdcall -stub -version=0x600+ CancelSynchronousIo(ptr) -@ stdcall -stub -version=0x600+ CancelThreadpoolIo(ptr) +@ stdcall -version=0x600+ CancelThreadpoolIo(ptr) NTDLL.TpCancelAsyncIoOperation @ stdcall CancelTimerQueueTimer(long long) @ stdcall CancelWaitableTimer(long) @ stdcall ChangeTimerQueueTimer(ptr ptr long long) @@ -73,13 +87,14 @@ @ stdcall CloseHandle(long) @ stdcall -stub -version=0x600+ ClosePrivateNamespace(ptr long) @ stdcall CloseProfileUserMapping() -@ stdcall -stub -version=0x600+ CloseThreadpool(ptr) -@ stdcall -stub -version=0x600+ CloseThreadpoolCleanupGroup(ptr) -@ stdcall -stub -version=0x600+ CloseThreadpoolCleanupGroupMembers(ptr long ptr) -@ stdcall -stub -version=0x600+ CloseThreadpoolIo(ptr) -@ stdcall -stub -version=0x600+ CloseThreadpoolTimer(ptr) -@ stdcall -stub -version=0x600+ CloseThreadpoolWait(ptr) -@ stdcall -stub -version=0x600+ CloseThreadpoolWork(ptr) +@ stdcall -stub -version=0xA00+ ClosePseudoConsole(ptr) +@ stdcall -version=0x600+ CloseThreadpool(ptr) NTDLL.TpReleasePool +@ stdcall -version=0x600+ CloseThreadpoolCleanupGroup(ptr) NTDLL.TpReleaseCleanupGroup +@ stdcall -version=0x600+ CloseThreadpoolCleanupGroupMembers(ptr long ptr) NTDLL.TpReleaseCleanupGroupMembers +@ stdcall -version=0x600+ CloseThreadpoolIo(ptr) NTDLL.TpReleaseIoCompletion +@ stdcall -version=0x600+ CloseThreadpoolTimer(ptr) NTDLL.TpReleaseTimer +@ stdcall -version=0x600+ CloseThreadpoolWait(ptr) NTDLL.TpReleaseWait +@ stdcall -version=0x600+ CloseThreadpoolWork(ptr) NTDLL.TpReleaseWork @ stdcall CmdBatNotification(long) @ stdcall CommConfigDialogA(str long ptr) @ stdcall CommConfigDialogW(wstr long ptr) @@ -100,6 +115,8 @@ @ stdcall -stub -version=0x600+ ConvertSystemTimeToCalDateTime(ptr long ptr) @ stdcall ConvertThreadToFiber(ptr) @ stdcall ConvertThreadToFiberEx(ptr long) +@ stdcall -version=0x601+ -stub CopyContext(ptr long ptr) +@ stdcall -version=0x602+ CopyFile2(wstr wstr ptr) @ stdcall CopyFileA(str str long) @ stdcall CopyFileExA(str str ptr ptr ptr long) @ stdcall CopyFileExW(wstr wstr ptr ptr ptr long) @@ -110,31 +127,33 @@ @ stdcall CreateActCtxA(ptr) @ stdcall CreateActCtxW(ptr) @ stdcall -stub -version=0x600+ CreateBoundaryDescriptorA(str long) -@ stdcall -stub -version=0x600+ CreateBoundaryDescriptorW(wstr long) +@ stdcall -version=0x600+ CreateBoundaryDescriptorW(wstr long) @ stdcall CreateConsoleScreenBuffer(long long ptr long ptr) @ stdcall CreateDirectoryA(str ptr) @ stdcall CreateDirectoryExA(str str ptr) @ stdcall CreateDirectoryExW(wstr wstr ptr) -@ stdcall -stub -version=0x600+ CreateDirectoryTransactedA(str str ptr ptr) -@ stdcall -stub -version=0x600+ CreateDirectoryTransactedW(wstr wstr ptr ptr) +@ stdcall -version=0x600+ CreateDirectoryTransactedA(str str ptr ptr) +@ stdcall -version=0x600+ CreateDirectoryTransactedW(wstr wstr ptr ptr) @ stdcall CreateDirectoryW(wstr ptr) @ stdcall CreateEventA(ptr long long str) -@ stdcall -stub -version=0x600+ CreateEventExA(ptr str long long) -@ stdcall -stub -version=0x600+ CreateEventExW(ptr wstr long long) +@ stdcall -version=0x600+ CreateEventExA(ptr str long long) +@ stdcall -version=0x600+ CreateEventExW(ptr wstr long long) @ stdcall CreateEventW(ptr long long wstr) @ stdcall CreateFiber(long ptr ptr) @ stdcall CreateFiberEx(long long long ptr ptr) +@ stdcall -version=0x602+ CreateFile2(wstr long long long ptr) @ stdcall CreateFileA(str long long ptr long long long) @ stdcall CreateFileMappingA(long ptr long long long str) @ stdcall -stub -version=0x600+ CreateFileMappingNumaA(ptr ptr long long long str long) +@ stdcall -version=0x600+ CreateFileMappingFromApp(long ptr long int64 wstr) @ stdcall -stub -version=0x600+ CreateFileMappingNumaW(ptr ptr long long long wstr long) @ stdcall CreateFileMappingW(long ptr long long long wstr) -@ stdcall -stub -version=0x600+ CreateFileTransactedA(str long long ptr long long ptr ptr ptr ptr) -@ stdcall -stub -version=0x600+ CreateFileTransactedW(wstr long long ptr long long ptr ptr ptr ptr) +@ stdcall -version=0x600+ CreateFileTransactedA(str long long ptr long long ptr ptr ptr ptr) +@ stdcall -version=0x600+ CreateFileTransactedW(wstr long long ptr long long ptr ptr ptr ptr) @ stdcall CreateFileW(wstr long long ptr long long long) @ stdcall CreateHardLinkA(str str ptr) -@ stdcall -stub -version=0x600+ CreateHardLinkTransactedA(str str ptr ptr) -@ stdcall -stub -version=0x600+ CreateHardLinkTransactedW(wstr wstr ptr ptr) +@ stdcall -version=0x600+ CreateHardLinkTransactedA(str str ptr ptr) +@ stdcall -version=0x600+ CreateHardLinkTransactedW(wstr wstr ptr ptr) @ stdcall CreateHardLinkW(wstr wstr ptr) @ stdcall CreateIoCompletionPort(long long long long) @ stdcall CreateJobObjectA(ptr str) @@ -144,8 +163,8 @@ @ stdcall CreateMailslotW(ptr long long ptr) @ stdcall CreateMemoryResourceNotification(long) @ stdcall CreateMutexA(ptr long str) -@ stdcall -stub -version=0x600+ CreateMutexExA(ptr str long long) -@ stdcall -stub -version=0x600+ CreateMutexExW(ptr wstr long long) +@ stdcall -version=0x600+ CreateMutexExA(ptr str long long) +@ stdcall -version=0x600+ CreateMutexExW(ptr wstr long long) @ stdcall CreateMutexW(ptr long wstr) @ stdcall CreateNamedPipeA(str long long long long long long ptr) @ stdcall CreateNamedPipeW(wstr long long long long long long ptr) @@ -157,7 +176,9 @@ @ stdcall CreateProcessInternalA(ptr str str ptr ptr long long ptr str ptr ptr long) @ stdcall CreateProcessInternalW(ptr wstr wstr ptr ptr long long ptr wstr ptr ptr long) @ stdcall CreateProcessW(wstr wstr ptr ptr long long ptr wstr ptr ptr) +@ stdcall -stub -version=0xA00+ CreatePseudoConsole(long long long long ptr) @ stdcall CreateRemoteThread(long ptr long ptr long long ptr) +@ stdcall -version=0x601+ -stub CreateRemoteThreadEx(long ptr long ptr ptr long ptr ptr) @ stdcall CreateSemaphoreA(ptr long long str) @ stdcall -version=0x600+ CreateSemaphoreExA(ptr long long str long long) @ stdcall -version=0x600+ CreateSemaphoreExW(ptr long long wstr long long) @@ -169,18 +190,20 @@ @ stdcall -version=0x600+ CreateSymbolicLinkW(wstr wstr long) @ stdcall CreateTapePartition(long long long long) @ stdcall CreateThread(ptr long ptr long long ptr) -@ stdcall -stub -version=0x600+ CreateThreadpool(ptr) -@ stdcall -stub -version=0x600+ CreateThreadpoolCleanupGroup() -@ stdcall -stub -version=0x600+ CreateThreadpoolIo(ptr ptr ptr ptr) -@ stdcall -stub -version=0x600+ CreateThreadpoolTimer(ptr ptr ptr) -@ stdcall -stub -version=0x600+ CreateThreadpoolWait(ptr ptr ptr) -@ stdcall -stub -version=0x600+ CreateThreadpoolWork(ptr ptr ptr) +@ stdcall -version=0x600+ CreateThreadpool(ptr) +@ stdcall -version=0x600+ CreateThreadpoolCleanupGroup() +@ stdcall -version=0x600+ CreateThreadpoolIo(ptr ptr ptr ptr) +@ stdcall -version=0x600+ CreateThreadpoolTimer(ptr ptr ptr) +@ stdcall -version=0x600+ CreateThreadpoolWait(ptr ptr ptr) +@ stdcall -version=0x600+ CreateThreadpoolWork(ptr ptr ptr) @ stdcall CreateTimerQueue() @ stdcall CreateTimerQueueTimer(ptr long ptr ptr long long long) @ stdcall CreateToolhelp32Snapshot(long long) +@ stdcall -version=0x601+ -arch=win64 CreateUmsCompletionList(ptr) +@ stdcall -version=0x601+ -arch=win64 CreateUmsThreadContext(ptr) @ stdcall CreateWaitableTimerA(ptr long str) -@ stub -version=0x600+ CreateWaitableTimerExA -@ stub -version=0x600+ CreateWaitableTimerExW +@ stdcall -version=0x600+ -stub CreateWaitableTimerExA(ptr str long long) +@ stdcall -version=0x600+ CreateWaitableTimerExW(ptr wstr long long) @ stdcall CreateWaitableTimerW(ptr long wstr) ;@ stdcall -arch=x86_64 CtrlRoutine() @ stdcall DeactivateActCtx(long ptr) @@ -199,18 +222,23 @@ @ stdcall DeleteCriticalSection(ptr) ntdll.RtlDeleteCriticalSection @ stdcall DeleteFiber(ptr) @ stdcall DeleteFileA(str) -@ stub -version=0x600+ DeleteFileTransactedA -@ stub -version=0x600+ DeleteFileTransactedW +@ stdcall -version=0x600+ DeleteFileTransactedA(str ptr) +@ stdcall -version=0x600+ DeleteFileTransactedW(wstr ptr) @ stdcall DeleteFileW(wstr) -@ stdcall -stub -version=0x600+ DeleteProcThreadAttributeList(ptr) +@ stdcall -version=0x600+ DeleteProcThreadAttributeList(ptr) +# @ stub -version=0x601+ DisableThreadProfiling +@ stdcall -stub -version=0xA00+ DiscardVirtualMemory(ptr long) @ stdcall DeleteTimerQueue(long) @ stdcall DeleteTimerQueueEx(long long) @ stdcall DeleteTimerQueueTimer(long long long) +@ stdcall -version=0x601+ -arch=win64 DeleteUmsCompletionList(ptr) +@ stdcall -version=0x601+ -arch=win64 DeleteUmsThreadContext(ptr) @ stdcall DeleteVolumeMountPointA(str) ;check @ stdcall DeleteVolumeMountPointW(wstr) ;check +@ stdcall -version=0x601+ -arch=win64 DequeueUmsCompletionListItems(ptr long ptr) @ stdcall DeviceIoControl(long long ptr long ptr long ptr ptr) @ stdcall DisableThreadLibraryCalls(ptr) -@ stub -version=0x600+ DisassociateCurrentThreadFromCallback +@ stdcall -version=0x600+ DisassociateCurrentThreadFromCallback(ptr) NTDLL.TpDisassociateCallback @ stdcall DisconnectNamedPipe(long) @ stdcall DnsHostnameToComputerNameA(str ptr ptr) @ stdcall DnsHostnameToComputerNameW(wstr ptr ptr) @@ -219,6 +247,7 @@ @ stdcall DosPathToSessionPathW(long wstr wstr) @ stdcall DuplicateConsoleHandle(long long long long) @ stdcall DuplicateHandle(long long long ptr long long long) +# @ stub -version=0x601 EnableThreadProfiling @ stdcall EncodePointer(ptr) ntdll.RtlEncodePointer @ stdcall EncodeSystemPointer(ptr) ntdll.RtlEncodeSystemPointer @ stdcall EndUpdateResourceA(long long) @@ -237,16 +266,16 @@ @ stdcall EnumLanguageGroupLocalesA(ptr long long ptr) @ stdcall EnumLanguageGroupLocalesW(ptr long long ptr) @ stdcall EnumResourceLanguagesA(long str str ptr long) -@ stub -version=0x600+ EnumResourceLanguagesExA -@ stub -version=0x600+ EnumResourceLanguagesExW +@ stdcall -version=0x600+ EnumResourceLanguagesExA(long str str ptr long long long) +@ stdcall -version=0x600+ EnumResourceLanguagesExW(long wstr wstr ptr long long long) @ stdcall EnumResourceLanguagesW(long wstr wstr ptr long) @ stdcall EnumResourceNamesA(long str ptr long) -@ stub -version=0x600+ EnumResourceNamesExA -@ stub -version=0x600+ EnumResourceNamesExW +@ stdcall -version=0x600+ EnumResourceNamesExA(long str ptr long long long) +@ stdcall -version=0x600+ EnumResourceNamesExW(long wstr ptr long long long) @ stdcall EnumResourceNamesW(long wstr ptr long) @ stdcall EnumResourceTypesA(long ptr long) -@ stub -version=0x600+ EnumResourceTypesExA -@ stub -version=0x600+ EnumResourceTypesExW +@ stdcall -version=0x600+ EnumResourceTypesExA(long ptr long long long) +@ stdcall -version=0x600+ EnumResourceTypesExW(long ptr long long long) @ stdcall EnumResourceTypesW(long ptr long) @ stdcall EnumSystemCodePagesA(ptr long) @ stdcall EnumSystemCodePagesW(ptr long) @@ -264,8 +293,10 @@ @ stdcall EnumUILanguagesW(ptr long long) @ stdcall EnumerateLocalComputerNamesA(ptr long str ptr) @ stdcall EnumerateLocalComputerNamesW(ptr long wstr ptr) +@ stdcall -version=0x601 -arch=win64 EnterUmsSchedulingMode(ptr) @ stdcall EraseTape(ptr long long) @ stdcall EscapeCommFunction(long long) +@ stdcall -version=0x601 -arch=win64 ExecuteUmsThread(ptr) @ stdcall ExitProcess(long) ; FIXME: ntdll.RtlExitUserProcess @ stdcall ExitThread(long) ; FIXME: ntdll.RtlExitUserThread @ stdcall ExitVDM(long long) @@ -295,9 +326,9 @@ @ stdcall FindFirstFileExA(str long ptr long ptr long) @ stdcall FindFirstFileExW(wstr long ptr long ptr long) @ stub -version=0x600+ FindFirstFileNameTransactedW -@ stub -version=0x600+ FindFirstFileNameW -@ stub -version=0x600+ FindFirstFileTransactedA -@ stub -version=0x600+ FindFirstFileTransactedW +@ stdcall -stub -version=0x600+ FindFirstFileNameW(wstr long ptr ptr) +@ stdcall -version=0x600+ FindFirstFileTransactedA(str long ptr long ptr long ptr) +@ stdcall -version=0x600+ FindFirstFileTransactedW(wstr long ptr long ptr long ptr) @ stdcall FindFirstFileW(wstr ptr) @ stub -version=0x600+ FindFirstStreamTransactedW @ stdcall FindFirstStreamW(wstr ptr ptr long) @@ -305,8 +336,8 @@ @ stdcall FindFirstVolumeMountPointA(str ptr long) @ stdcall FindFirstVolumeMountPointW(wstr ptr long) @ stdcall FindFirstVolumeW(ptr long) -@ stub -version=0x600+ FindNLSString -@ stub -version=0x600+ FindNLSStringEx +@ stdcall -stub -version=0x600+ FindNLSString(long long wstr long wstr long ptr) +@ stdcall -stub -version=0x600+ FindNLSStringEx(wstr long wstr long wstr long ptr ptr ptr long) @ stdcall FindNextChangeNotification(long) @ stdcall FindNextFileA(long ptr) @ stub -version=0x600+ FindNextFileNameW @@ -320,6 +351,7 @@ @ stdcall FindResourceExA(long str str long) @ stdcall FindResourceExW(long wstr wstr long) @ stdcall FindResourceW(long wstr wstr) +@ stdcall -version=0x601+ -stub FindStringOrdinal(long wstr long wstr long long) @ stdcall FindVolumeClose(ptr) @ stdcall FindVolumeMountPointClose(ptr) @ stdcall FlsAlloc(ptr) @@ -329,7 +361,7 @@ @ stdcall FlushConsoleInputBuffer(long) @ stdcall FlushFileBuffers(long) @ stdcall FlushInstructionCache(long long long) -@ stub -version=0x600+ FlushProcessWriteBuffers +@ stdcall -version=0x600+ FlushProcessWriteBuffers() NTDLL.NtFlushProcessWriteBuffers @ stdcall FlushViewOfFile(ptr long) @ stdcall FoldStringA(long str long ptr long) @ stdcall FoldStringW(long wstr long ptr long) @@ -340,11 +372,13 @@ @ stdcall FreeEnvironmentStringsW(ptr) @ stdcall FreeLibrary(long) @ stdcall FreeLibraryAndExitThread(long long) -@ stub -version=0x600+ FreeLibraryWhenCallbackReturns +@ stdcall -version=0x600+ FreeLibraryWhenCallbackReturns(ptr ptr) NTDLL.TpCallbackUnloadDllOnCompletion @ stdcall FreeResource(long) @ stdcall FreeUserPhysicalPages(long long long) @ stdcall GenerateConsoleCtrlEvent(long long) @ stdcall GetACP() +@ stdcall -stub -version=0x601+ GetActiveProcessorCount(long) +@ stdcall -stub -version=0x601+ GetActiveProcessorGroupCount() @ stdcall -version=0x600+ GetApplicationRecoveryCallback(ptr ptr ptr ptr ptr) @ stub -version=0x600+ GetApplicationRestartSettings @ stdcall GetAtomNameA(long ptr long) @@ -431,12 +465,18 @@ @ stdcall -version=0x600+ GetCurrentConsoleFontEx(ptr long ptr) @ stdcall GetCurrentDirectoryA(long ptr) @ stdcall GetCurrentDirectoryW(long ptr) +@ stdcall -version=0x602+ GetCurrentPackageFamilyName(ptr ptr) +@ stdcall -version=0x602+ GetCurrentPackageFullName(ptr ptr) @ stdcall -version=0x602+ GetCurrentPackageId(ptr ptr) +@ stdcall -version=0x602+ GetCurrentPackagePath(ptr ptr) @ stdcall -norelay GetCurrentProcess() @ stdcall -norelay GetCurrentProcessId() @ stdcall GetCurrentProcessorNumber() ntdll.RtlGetCurrentProcessorNumber +@ stdcall -version=0x601+ -stub GetCurrentProcessorNumberEx(ptr) ;NTDLL.RtlGetCurrentProcessorNumberEx @ stdcall -norelay GetCurrentThread() @ stdcall -norelay GetCurrentThreadId() +@ stdcall -stub -version=0x602+ GetCurrentThreadStackLimits(ptr ptr) +@ stdcall -version=0x601+ -arch=win64 GetCurrentUmsThread() @ stdcall GetDateFormatA(long long ptr str ptr long) @ stdcall -version=0x600+ GetDateFormatEx(wstr long ptr wstr wstr long wstr) @ stdcall GetDateFormatW(long long ptr wstr ptr long) @@ -454,7 +494,9 @@ @ stdcall GetDriveTypeW(wstr) @ stub -version=0x600+ GetDurationFormat @ stub -version=0x600+ GetDurationFormatEx -@ stub -version=0x600+ GetDynamicTimeZoneInformation +@ stdcall -stub -version=0x600+ GetDynamicTimeZoneInformation(ptr) +@ stdcall -stub -version=0x602+ GetDynamicTimeZoneInformationEffectiveYears(ptr ptr ptr) +@ stdcall -stub -version=0x601+ -ret64 -arch=i386,x86_64 GetEnabledXStateFeatures() @ stdcall GetEnvironmentStrings() @ stdcall GetEnvironmentStringsA() GetEnvironmentStrings @ stdcall GetEnvironmentStringsW() @@ -468,8 +510,8 @@ @ stdcall GetFileAttributesA(str) @ stdcall GetFileAttributesExA(str long ptr) @ stdcall GetFileAttributesExW(wstr long ptr) -@ stub -version=0x600+ GetFileAttributesTransactedA -@ stub -version=0x600+ GetFileAttributesTransactedW +@ stdcall -version=0x600+ GetFileAttributesTransactedA(str long ptr ptr) +@ stdcall -version=0x600+ GetFileAttributesTransactedW(wstr long ptr ptr) @ stdcall GetFileAttributesW(wstr) @ stdcall -version=0x600+ GetFileBandwidthReservation(ptr ptr ptr ptr ptr ptr) @ stdcall GetFileInformationByHandle(long ptr) @@ -508,11 +550,14 @@ @ stdcall GetLogicalDriveStringsW(long ptr) @ stdcall GetLogicalDrives() @ stdcall GetLogicalProcessorInformation(ptr ptr) +@ stdcall -version=0x601+ GetLogicalProcessorInformationEx(long ptr ptr) @ stdcall GetLongPathNameA(str long long) @ stub -version=0x600+ GetLongPathNameTransactedA @ stub -version=0x600+ GetLongPathNameTransactedW @ stdcall GetLongPathNameW(wstr long long) @ stdcall GetMailslotInfo(long ptr ptr ptr ptr) +@ stdcall -version=0x601+ GetMaximumProcessorCount(long) +@ stdcall -version=0x601+ GetMaximumProcessorGroupCount() @ stdcall GetModuleFileNameA(long ptr long) @ stdcall GetModuleFileNameW(long ptr long) @ stdcall GetModuleHandleA(str) @@ -524,21 +569,26 @@ @ stub -version=0x600+ GetNamedPipeAttribute @ stub -version=0x600+ GetNamedPipeClientComputerNameA @ stub -version=0x600+ GetNamedPipeClientComputerNameW -@ stub -version=0x600+ GetNamedPipeClientProcessId -@ stub -version=0x600+ GetNamedPipeClientSessionId +@ stdcall -version=0x600+ -stub GetNamedPipeClientProcessId(long ptr) +@ stdcall -version=0x600+ -stub GetNamedPipeClientSessionId(long ptr) @ stdcall GetNamedPipeHandleStateA(long ptr ptr ptr ptr str long) @ stdcall GetNamedPipeHandleStateW(long ptr ptr ptr ptr wstr long) @ stdcall GetNamedPipeInfo(long ptr ptr ptr ptr) -@ stub -version=0x600+ GetNamedPipeServerProcessId -@ stub -version=0x600+ GetNamedPipeServerSessionId +@ stdcall -stub -version=0x600+ GetNamedPipeServerProcessId(long ptr) +@ stdcall -stub -version=0x600+ GetNamedPipeServerSessionId(long ptr) @ stdcall GetNativeSystemInfo(ptr) +@ stdcall -version=0x601+ -arch=win64 GetNextUmsListItem(ptr) @ stdcall GetNextVDMCommand(long) @ stdcall -version=0x500-0x502 GetNlsSectionName(long long long str str long) @ stdcall GetNumaAvailableMemoryNode(long ptr) +@ stdcall -version=0x601+ GetNumaAvailableMemoryNodeEx(long ptr) @ stdcall GetNumaHighestNodeNumber(ptr) @ stdcall GetNumaNodeProcessorMask(long ptr) +@ stdcall -version=0x601+ -stub GetNumaNodeProcessorMaskEx(long ptr) @ stdcall GetNumaProcessorNode(long ptr) -@ stub -version=0x600+ GetNumaProximityNode +@ stdcall -version=0x601+ GetNumaProcessorNodeEx(ptr ptr) +@ stdcall -version=0x600+ GetNumaProximityNode(long ptr) +@ stdcall -stub -version=0x601+ GetNumaProximityNodeEx(long ptr) @ stdcall GetNumberFormatA(long long str ptr ptr long) @ stdcall -version=0x600+ GetNumberFormatEx(wstr long wstr ptr wstr long) @ stdcall GetNumberFormatW(long long wstr ptr ptr long) @@ -547,6 +597,12 @@ @ stdcall GetNumberOfConsoleMouseButtons(ptr) @ stdcall GetOEMCP() @ stdcall GetOverlappedResult(long ptr ptr long) +@ stdcall -stub -version=0x602+ GetOverlappedResultEx(long ptr ptr long long) +@ stdcall -stub -version=0xA00+ GetUserDefaultGeoName(ptr long) +@ stdcall -version=0x602+ GetPackageFamilyName(long ptr ptr) +@ stdcall -version=0x602+ GetPackageFullName(long ptr ptr) +@ stdcall -version=0x602+ GetPackagesByPackageFamily(wstr ptr ptr ptr ptr) +@ stdcall -version=0x603+ GetPackagePathByFullName(wstr ptr wstr) @ stdcall -stub -version=0x600+ GetPhysicallyInstalledSystemMemory(ptr) @ stdcall GetPriorityClass(long) @ stdcall GetPrivateProfileIntA(str str long str) @@ -561,20 +617,26 @@ @ stdcall GetPrivateProfileStructW(wstr wstr ptr long wstr) @ stdcall GetProcAddress(long str) @ stdcall GetProcessAffinityMask(long ptr ptr) -@ stub -version=0x600+ GetProcessDEPPolicy +@ stdcall -version=0x600+ GetProcessDEPPolicy(ptr ptr ptr) +@ stdcall -version=0x601+ GetProcessGroupAffinity(long ptr ptr) @ stdcall GetProcessHandleCount(long ptr) @ stdcall -norelay GetProcessHeap() @ stdcall GetProcessHeaps(long ptr) @ stdcall GetProcessId(long) @ stdcall GetProcessIdOfThread(ptr) +@ stdcall -stub -version=0x602+ GetProcessInformation(long long ptr long) @ stdcall GetProcessIoCounters(long ptr) +@ stdcall -stub -version=0x602+ GetProcessMitigationPolicy(long long ptr long) +@ stdcall -stub -version=0x601+ GetProcessPreferredUILanguages(long ptr ptr ptr) @ stdcall GetProcessPriorityBoost(long ptr) @ stdcall GetProcessShutdownParameters(ptr ptr) +# @ stub -version=0x601+ GetProcessorSystemCycleTime @ stdcall GetProcessTimes(long ptr ptr ptr ptr) +# @ stub -version=0x601+ GetProcessUserModeExceptionPolicy @ stdcall GetProcessVersion(long) @ stdcall GetProcessWorkingSetSize(long ptr ptr) @ stdcall GetProcessWorkingSetSizeEx(long ptr ptr long) -@ stub -version=0x600+ GetProductInfo +@ stdcall -stub -version=0x600+ GetProductInfo(long long long long ptr) @ stdcall GetProfileIntA(str str long) @ stdcall GetProfileIntW(wstr wstr long) @ stdcall GetProfileSectionA(str ptr long) @@ -582,7 +644,7 @@ @ stdcall GetProfileStringA(str str str ptr long) @ stdcall GetProfileStringW(wstr wstr wstr ptr long) @ stdcall GetQueuedCompletionStatus(long ptr ptr ptr long) -@ stub -version=0x600+ GetQueuedCompletionStatusEx +@ stdcall -stub -version=0x600+ GetQueuedCompletionStatusEx(ptr ptr long ptr long long) @ stdcall GetShortPathNameA(str ptr long) @ stdcall GetShortPathNameW(wstr ptr long) @ stdcall GetStartupInfoA(ptr) @@ -593,7 +655,8 @@ @ stdcall GetStringTypeExA(long long str long ptr) @ stdcall GetStringTypeExW(long long wstr long ptr) @ stdcall GetStringTypeW(long wstr long ptr) -@ stub -version=0x600+ GetSystemDEPPolicy +@ stdcall -version=0x600+ GetSystemDEPPolicy() +@ stdcall -stub -version=0xA00+ GetSystemCpuSetInformation(ptr long ptr ptr long) @ stdcall GetSystemDefaultLCID() @ stdcall GetSystemDefaultLangID() @ stdcall -stub -version=0x600+ GetSystemDefaultLocaleName(ptr long) @@ -620,12 +683,17 @@ @ stdcall GetTapeStatus(ptr) @ stdcall GetTempFileNameA(str str long ptr) @ stdcall GetTempFileNameW(wstr wstr long ptr) +@ stdcall -stub -version=0xA00+ GetTempPath2A(long ptr) +@ stdcall -stub -version=0xA00+ GetTempPath2W(long ptr) @ stdcall GetTempPathA(long ptr) @ stdcall GetTempPathW(long ptr) @ stdcall GetThreadContext(long ptr) +@ stdcall -version=0xA00+ GetThreadDescription(long ptr) @ stdcall -stub -version=0x600+ GetThreadErrorMode() +@ stdcall -version=0x601+ GetThreadGroupAffinity(long ptr) @ stdcall GetThreadIOPendingFlag(long ptr) @ stdcall GetThreadId(ptr) +@ stdcall -stub -version=0xA00+ GetThreadIdealProcessorEx(long ptr) @ stdcall GetThreadLocale() @ stdcall -version=0x600+ GetThreadPreferredUILanguages(long ptr wstr ptr) @ stdcall GetThreadPriority(long) @@ -640,7 +708,9 @@ @ stdcall GetTimeFormatW(long long ptr wstr ptr long) @ stdcall GetTimeZoneInformation(ptr) @ stdcall -stub -version=0x600+ GetTimeZoneInformationForYear(long ptr ptr) +# @ stub -version=0x600+ GetUILanguageInfo @ stdcall -version=0x600+ GetUILanguageInfo(long wstr wstr ptr ptr) +# @ stub -version=0x601+ -arch=win64 GetUmsSystemThreadInformation @ stdcall GetUserDefaultLCID() @ stdcall GetUserDefaultLangID() @ stdcall -version=0x600+ GetUserDefaultLocaleName(wstr long) @@ -663,6 +733,8 @@ @ stdcall GetWindowsDirectoryA(ptr long) @ stdcall GetWindowsDirectoryW(ptr long) @ stdcall GetWriteWatch(long ptr long ptr ptr ptr) +@ stdcall -stub -version=0x601+ -arch=i386,x86_64 GetXStateFeaturesMask(ptr ptr) +@ stdcall -stub -version=0x601+ -arch=i386,x86_64 SetXStateFeaturesMask(ptr int64) @ stdcall GlobalAddAtomA(str) @ stdcall GlobalAddAtomW(wstr) @ stdcall GlobalAlloc(long long) @@ -716,10 +788,12 @@ @ stdcall -version=0x600+ InitOnceExecuteOnce(ptr ptr ptr ptr) @ stdcall -version=0x600+ InitOnceInitialize(ptr) ntdll.RtlRunOnceInitialize @ stdcall -version=0x600+ InitializeConditionVariable(ptr) ntdll.RtlInitializeConditionVariable +@ stdcall -stub -version=0x601+ InitializeContext(ptr long ptr ptr) +@ stdcall -stub -version=0xA00+ InitializeContext2(ptr long ptr ptr int64) @ stdcall InitializeCriticalSection(ptr) @ stdcall InitializeCriticalSectionAndSpinCount(ptr long) @ stdcall -version=0x600+ InitializeCriticalSectionEx(ptr long long) -@ stdcall -stub -version=0x600+ InitializeProcThreadAttributeList(ptr long long ptr) +@ stdcall -version=0x600+ InitializeProcThreadAttributeList(ptr long long ptr) @ stdcall InitializeSListHead(ptr) ntdll.RtlInitializeSListHead @ stdcall -version=0x600+ InitializeSRWLock(ptr) ntdll.RtlInitializeSRWLock @ stdcall -arch=i386 -ret64 InterlockedCompareExchange64(ptr double double) ntdll.RtlInterlockedCompareExchange64 @@ -752,14 +826,16 @@ @ stdcall IsProcessorFeaturePresent(long) @ stdcall IsSystemResumeAutomatic() @ stdcall -version=0x600+ IsThreadAFiber() -@ stub -version=0x600+ IsThreadpoolTimerSet +@ stdcall -version=0x600+ IsThreadpoolTimerSet() NTDLL.TpIsTimerSet @ stdcall IsTimeZoneRedirectionEnabled() @ stub -version=0x600+ IsValidCalDateTime @ stdcall IsValidCodePage(long) @ stdcall IsValidLanguageGroup(long long) @ stdcall IsValidLocale(long long) @ stdcall -version=0x501-0x502 IsValidUILanguage(long) +@ stdcall -stub -version=0x602+ IsValidNLSVersion(long wstr ptr) @ stdcall IsWow64Process(ptr ptr) +@ stdcall -stub -version=0xA00+ IsWow64Process2(ptr ptr ptr) @ stdcall -version=0x601+ K32EmptyWorkingSet(long) EmptyWorkingSet @ stdcall -version=0x601+ K32EnumDeviceDrivers(ptr long ptr) EnumDeviceDrivers @ stdcall -version=0x601+ K32EnumPageFilesA(ptr ptr) EnumPageFilesA @@ -803,12 +879,14 @@ @ stdcall LZSeek(long long long) @ stdcall LZStart() @ stdcall LeaveCriticalSection(ptr) ntdll.RtlLeaveCriticalSection -@ stub -version=0x600+ LeaveCriticalSectionWhenCallbackReturns +@ stdcall -version=0x600+ LeaveCriticalSectionWhenCallbackReturns(ptr ptr) NTDLL.TpCallbackLeaveCriticalSectionOnCompletion +@ stdcall -version=0x601+ LoadAppInitDlls() @ stdcall LoadLibraryA(str) @ stdcall LoadLibraryExA(str long long) @ stdcall LoadLibraryExW(wstr long long) @ stdcall LoadLibraryW(wstr) @ stdcall LoadModule(str ptr) +@ stdcall -version=0x602+ LoadPackagedLibrary(wstr long) @ stdcall LoadResource(long long) @ stub -version=0x600+ LoadStringBaseExW @ stub -version=0x600+ LoadStringBaseW @@ -824,6 +902,7 @@ @ stdcall LocalSize(long) @ stdcall LocalUnlock(long) @ stdcall -version=0x600+ LocaleNameToLCID(wstr long) +@ stdcall -stub -version=0x601+ -arch=i386,x86_64 LocateXStateFeature(ptr long ptr) @ stdcall LockFile(long long long long long) @ stdcall LockFileEx(long long long long long ptr) @ stdcall LockResource(long) @@ -832,6 +911,7 @@ @ stdcall MapViewOfFile(long long long long long) @ stdcall MapViewOfFileEx(long long long long long ptr) @ stub -version=0x600+ MapViewOfFileExNuma +@ stdcall -stub -version=0x602+ MapViewOfFileFromApp(long long int64 long) @ stdcall Module32First(long ptr) @ stdcall Module32FirstW(long ptr) @ stdcall Module32Next(long ptr) @@ -839,8 +919,8 @@ @ stdcall MoveFileA(str str) @ stdcall MoveFileExA(str str long) @ stdcall MoveFileExW(wstr wstr long) -@ stub -version=0x600+ MoveFileTransactedA -@ stub -version=0x600+ MoveFileTransactedW +@ stdcall -version=0x600+ MoveFileTransactedA(str str ptr ptr long ptr) +@ stdcall -version=0x600+ MoveFileTransactedW(wstr wstr ptr ptr long ptr) @ stdcall MoveFileW(wstr wstr) @ stdcall MoveFileWithProgressA(str str ptr ptr long) @ stdcall MoveFileWithProgressW(wstr wstr ptr ptr long) @@ -873,10 +953,12 @@ @ stub -version=0x600+ OpenPrivateNamespaceA @ stub -version=0x600+ OpenPrivateNamespaceW @ stdcall OpenProcess(long long long) +@ stdcall -version=0x601+ OpenProcessToken(long long ptr) @ stdcall OpenProfileUserMapping() @ stdcall OpenSemaphoreA(long long str) @ stdcall OpenSemaphoreW(long long wstr) @ stdcall OpenThread(long long long) +@ stdcall -version=0x601+ OpenThreadToken(long long long ptr) @ stdcall OpenWaitableTimerA(long long str) @ stdcall OpenWaitableTimerW(long long wstr) @ stdcall OutputDebugStringA(str) @@ -885,6 +967,11 @@ @ stdcall PeekConsoleInputW(ptr ptr long ptr) @ stdcall PeekNamedPipe(long ptr long ptr ptr ptr) @ stdcall PostQueuedCompletionStatus(long long ptr ptr) +@ stdcall -version=0x602+ PackageIdFromFullName(wstr long ptr ptr) +@ stdcall -version=0x601+ PowerClearRequest(long long) +@ stdcall -version=0x601+ PowerCreateRequest(ptr) +@ stdcall -version=0x601+ PowerSetRequest(long long) +@ stdcall -stub -version=0x602+ PrefetchVirtualMemory(ptr ptr ptr long) @ stdcall PrepareTape(ptr long long) @ stdcall PrivCopyFileExW(wstr wstr ptr ptr long long) @ stdcall PrivMoveFileIdentityW(long long long) @@ -895,14 +982,14 @@ @ stdcall ProcessIdToSessionId(long ptr) @ stdcall PulseEvent(long) @ stdcall PurgeComm(long long) -@ stub -version=0x600+ QueryActCtxSettingsW +@ stdcall -version=0x600+ QueryActCtxSettingsW(long ptr wstr wstr ptr long ptr) @ stdcall QueryActCtxW(long ptr ptr long ptr long ptr) @ stdcall QueryDepthSList(ptr) ntdll.RtlQueryDepthSList @ stdcall QueryDosDeviceA(str ptr long) @ stdcall QueryDosDeviceW(wstr ptr long) @ stdcall -version=0x600+ QueryFullProcessImageNameA(ptr long str ptr) @ stdcall -version=0x600+ QueryFullProcessImageNameW(ptr long wstr ptr) -@ stub -version=0x600+ QueryIdleProcessorCycleTime +@ stdcall -version=0x600+ QueryIdleProcessorCycleTime(ptr ptr) @ stdcall QueryInformationJobObject(long long ptr long ptr) @ stdcall QueryMemoryResourceNotification(ptr ptr) @ stdcall QueryPerformanceCounter(ptr) @@ -910,6 +997,10 @@ @ stub -version=0x600+ QueryProcessAffinityUpdateMode @ stub -version=0x600+ QueryProcessCycleTime @ stub -version=0x600+ QueryThreadCycleTime +# @ stub -version=0x601+ QueryThreadProfiling +@ stdcall -version=0x601+ QueryThreadpoolStackInformation(ptr ptr) +@ stdcall -version=0x601+ -arch=win64 QueryUmsThreadInformation(ptr long ptr long ptr) +@ stdcall -stub -version=0x601+ QueryUnbiasedInterruptTime(ptr) @ stdcall QueueUserAPC(ptr long long) @ stdcall QueueUserWorkItem(ptr ptr long) @ stdcall -norelay RaiseException(long long long ptr) @@ -930,6 +1021,49 @@ @ stdcall ReadFileEx(long ptr long ptr ptr) @ stdcall ReadFileScatter(long ptr long ptr ptr) @ stdcall ReadProcessMemory(long ptr ptr long ptr) +# @ stub -version=0x601+ ReadThreadProfilingData +@ stdcall -version=0x601+ RegCloseKey(long) +@ stdcall -version=0x601+ RegEnumKeyExA(long long ptr ptr ptr ptr ptr ptr) +@ stdcall -version=0x601+ RegEnumKeyExW(long long ptr ptr ptr ptr ptr ptr) +@ stdcall -version=0x601+ RegEnumValueA(long long ptr ptr ptr ptr ptr ptr) +@ stdcall -version=0x601+ RegEnumValueW(long long ptr ptr ptr ptr ptr ptr) +@ stdcall -version=0x601+ RegFlushKey(long) +@ stdcall -version=0x601+ RegCreateKeyExA(long str long ptr long long ptr ptr ptr) +@ stdcall -version=0x601+ RegCreateKeyExW(long wstr long ptr long long ptr ptr ptr) +@ stdcall -version=0x601+ RegDeleteKeyExA(long str long long) +@ stdcall -version=0x601+ RegDeleteKeyExW(long wstr long long) +@ stdcall -version=0x601+ RegDeleteTreeA(long str) +@ stdcall -version=0x601+ RegDeleteTreeW(long wstr) +@ stdcall -version=0x601+ RegDeleteValueA(long str) +@ stdcall -version=0x601+ RegDeleteValueW(long wstr) +# stub -version=0x601+ RegDisablePredefinedCacheEx +@ stdcall -version=0x601+ RegGetKeySecurity(long long ptr ptr) +@ stdcall -version=0x601+ RegGetValueA(long str str long ptr ptr ptr) +@ stdcall -version=0x601+ RegGetValueW(long wstr wstr long ptr ptr ptr) +# stub -version=0x601+ RegKrnGetGlobalState +# stub -version=0x601+ RegKrnInitialize +@ stdcall -version=0x601+ RegLoadKeyA(long str str) +@ stdcall -version=0x601+ RegLoadKeyW(long wstr wstr) +@ stdcall -version=0x601+ RegLoadMUIStringA(long str str long ptr long str) +@ stdcall -version=0x601+ RegLoadMUIStringW(long wstr wstr long ptr long wstr) +@ stdcall -version=0x601+ RegNotifyChangeKeyValue(long long long long long) +@ stdcall -version=0x601+ RegOpenCurrentUser(long ptr) +@ stdcall -version=0x601+ RegOpenKeyExA(long str long long ptr) +@ stdcall -version=0x601+ RegOpenKeyExW(long wstr long long ptr) +@ stdcall -version=0x601+ RegOpenUserClassesRoot(ptr long long ptr) +@ stdcall -version=0x601+ RegQueryInfoKeyA(long ptr ptr ptr ptr ptr ptr ptr ptr ptr ptr ptr) +@ stdcall -version=0x601+ RegQueryInfoKeyW(long ptr ptr ptr ptr ptr ptr ptr ptr ptr ptr ptr) +@ stdcall -version=0x601+ RegQueryValueExA(long str ptr ptr ptr ptr) +@ stdcall -version=0x601+ RegQueryValueExW(long wstr ptr ptr ptr ptr) +@ stdcall -version=0x601+ RegRestoreKeyA(long str long) +@ stdcall -version=0x601+ RegRestoreKeyW(long wstr long) +@ stdcall -version=0x601+ RegSaveKeyExA(long str ptr long) +@ stdcall -version=0x601+ RegSaveKeyExW(long wstr ptr long) +@ stdcall -version=0x601+ RegSetKeySecurity(long long ptr) +@ stdcall -version=0x601+ RegSetValueExA(long str long long ptr long) +@ stdcall -version=0x601+ RegSetValueExW(long wstr long long ptr long) +@ stdcall -version=0x601+ RegUnLoadKeyA(long str) +@ stdcall -version=0x601+ RegUnLoadKeyW(long wstr) @ stdcall -version=0x600+ RegisterApplicationRecoveryCallback(ptr ptr long long) @ stdcall -version=0x600+ RegisterApplicationRestart(wstr long) @ stdcall RegisterConsoleIME(ptr ptr) @@ -942,14 +1076,14 @@ @ stdcall RegisterWowExec(long) @ stdcall ReleaseActCtx(ptr) @ stdcall ReleaseMutex(long) -@ stub -version=0x600+ ReleaseMutexWhenCallbackReturns +@ stdcall -version=0x600+ ReleaseMutexWhenCallbackReturns(ptr long) NTDLL.TpCallbackReleaseMutexOnCompletion @ stdcall -version=0x600+ ReleaseSRWLockExclusive(ptr) ntdll.RtlReleaseSRWLockExclusive @ stdcall -version=0x600+ ReleaseSRWLockShared(ptr) ntdll.RtlReleaseSRWLockShared @ stdcall ReleaseSemaphore(long long ptr) @ stub -version=0x600+ ReleaseSemaphoreWhenCallbackReturns @ stdcall RemoveDirectoryA(str) -@ stub -version=0x600+ RemoveDirectoryTransactedA -@ stub -version=0x600+ RemoveDirectoryTransactedW +@ stdcall -version=0x600+ RemoveDirectoryTransactedA(str ptr) +@ stdcall -version=0x600+ RemoveDirectoryTransactedW(wstr ptr) @ stdcall RemoveDirectoryW(wstr) @ stdcall RemoveLocalAlternateComputerNameA(str long) @ stdcall RemoveLocalAlternateComputerNameW(wstr long) @@ -959,11 +1093,16 @@ @ stdcall ReplaceFile(wstr wstr wstr long ptr ptr) ReplaceFileW @ stdcall ReplaceFileA(str str str long ptr ptr) @ stdcall ReplaceFileW(wstr wstr wstr long ptr ptr) +@ stdcall -version=0x600+ RemoveDllDirectory(ptr) +# @ stub -version=0x600+ RemoveSecureMemoryCacheCallback @ stub -version=0x600+ ReplacePartitionUnit @ stdcall RequestDeviceWakeup(long) @ stdcall RequestWakeupLatency(long) @ stdcall ResetEvent(long) @ stdcall ResetWriteWatch(ptr long) +@ stdcall -stub -version=0xA00+ ResizePseudoConsole(ptr long) +@ stdcall -stub -version=0x602+ ResolveDelayLoadedAPI(ptr ptr ptr ptr ptr long) +@ stdcall -stub -version=0x601+ ResolveLocaleName(wstr ptr long) @ stdcall RestoreLastError(long) ntdll.RtlRestoreLastWin32Error @ stdcall ResumeThread(long) @ stdcall -arch=x86_64 RtlAddFunctionTable(ptr long long) ntdll.RtlAddFunctionTable @@ -981,13 +1120,15 @@ @ stdcall -arch=x86_64 RtlRestoreContext(ptr ptr) ntdll.RtlRestoreContext @ stdcall RtlUnwind(ptr ptr ptr ptr) ntdll.RtlUnwind @ stdcall -arch=x86_64 RtlUnwindEx(ptr ptr ptr ptr ptr ptr) ntdll.RtlUnwindEx -@ stdcall -arch=x86_64 RtlVirtualUnwind(long int64 int64 ptr ptr ptr ptr ptr) ntdll.RtlVirtualUnwind +@ stdcall -arch=x86_64 RtlVirtualUnwind(ptr ptr ptr long) ntdll.RtlVirtualUnwind +@ stdcall -stub -version=0xA00+ -arch=x86_64 -norelay RtlIsEcCode(ptr) @ stdcall RtlZeroMemory(ptr long) ntdll.RtlZeroMemory @ stdcall ScrollConsoleScreenBufferA(long ptr ptr ptr ptr) @ stdcall ScrollConsoleScreenBufferW(long ptr ptr ptr ptr) @ stdcall SearchPathA(str str str long ptr ptr) @ stdcall SearchPathW(wstr wstr wstr long ptr ptr) @ stdcall -version=0x500-0x502 SetCPGlobal(long) +@ stdcall -version=0x602+ SetCachedSigningLevel(ptr long long long) @ stdcall SetCalendarInfoA(long long long str) @ stdcall SetCalendarInfoW(long long long wstr) @ stdcall SetClientTimeZoneInformation(ptr) @@ -1039,6 +1180,7 @@ @ stdcall SetCurrentDirectoryW(wstr) @ stdcall SetDefaultCommConfigA(str ptr long) @ stdcall SetDefaultCommConfigW(wstr ptr long) +@ stdcall -version=0x600+ SetDefaultDllDirectories(long) @ stdcall SetDllDirectoryA(str) @ stdcall SetDllDirectoryW(wstr) @ stub -version=0x600+ SetDynamicTimeZoneInformation @@ -1049,7 +1191,7 @@ @ stdcall SetEnvironmentVariableW(wstr wstr) @ stdcall SetErrorMode(long) @ stdcall SetEvent(long) -@ stub -version=0x600+ SetEventWhenCallbackReturns +@ stdcall -version=0x600+ SetEventWhenCallbackReturns(ptr long) NTDLL.TpCallbackSetEventOnCompletion @ stdcall SetFileApisToANSI() @ stdcall SetFileApisToOEM() @ stdcall SetFileAttributesA(str long) @@ -1058,7 +1200,7 @@ @ stdcall SetFileAttributesW(wstr long) @ stdcall -version=0x600+ SetFileBandwidthReservation(ptr long long long ptr ptr) @ stdcall SetFileCompletionNotificationModes(ptr long) -@ stub -version=0x600+ SetFileInformationByHandle +@ stdcall -version=0x600+ SetFileInformationByHandle(long long ptr long) @ stub -version=0x600+ SetFileIoOverlappedRange @ stdcall SetFilePointer(long long ptr long) @ stdcall SetFilePointerEx(long double ptr long) @@ -1088,13 +1230,19 @@ @ stdcall SetPriorityClass(long long) @ stdcall SetProcessAffinityMask(long long) @ stub -version=0x600+ SetProcessAffinityUpdateMode -@ stub -version=0x600+ SetProcessDEPPolicy +@ stdcall -stub -version=0xA00+ SetProcessDefaultCpuSets(ptr ptr long) +@ stdcall -version=0x600+ SetProcessDEPPolicy(ptr) +@ stdcall -stub -version=0x602+ SetProcessInformation(long long ptr long) +@ stdcall -stub -version=0x602+ SetProcessMitigationPolicy(long ptr long) +@ stdcall -version=0x601+ SetProcessPreferredUILanguages(long ptr ptr) @ stdcall SetProcessPriorityBoost(long long) @ stdcall SetProcessShutdownParameters(long long) +# @ stub -version=0x601+ SetProcessUserModeExceptionPolicy @ stdcall SetProcessWorkingSetSize(long long long) @ stdcall SetProcessWorkingSetSizeEx(long long long long) +@ stdcall -stub -version=0x600+ SetSearchPathMode(long) @ stdcall SetStdHandle(long long) -@ stub -version=0x600+ SetStdHandleEx +@ stdcall -stub -version=0x600+ SetStdHandleEx(long long ptr) @ stdcall SetSystemFileCacheSize(long long long) @ stdcall SetSystemPowerState(long long) @ stdcall SetSystemTime(ptr) @@ -1104,29 +1252,40 @@ @ stdcall SetTermsrvAppInstallMode(long) @ stdcall SetThreadAffinityMask(long long) @ stdcall SetThreadContext(long ptr) -@ stdcall -stub -version=0x600+ SetThreadErrorMode(long ptr) +@ stdcall -version=0xA00+ SetThreadDescription(ptr wstr) +@ stdcall -version=0x600+ SetThreadErrorMode(long ptr) @ stdcall SetThreadExecutionState(long) +@ stdcall -version=0x601+ SetThreadGroupAffinity(long ptr ptr) @ stdcall SetThreadIdealProcessor(long long) +@ stdcall -version=0x601+ SetThreadIdealProcessorEx(long ptr ptr) +@ stdcall -version=0x602+ SetThreadInformation(long long ptr long) @ stdcall SetThreadLocale(long) @ stdcall -version=0x600+ SetThreadPreferredUILanguages(long wstr ptr) @ stdcall SetThreadPriority(long long) @ stdcall SetThreadPriorityBoost(long long) +@ stdcall -stub -version=0xA00+ SetThreadSelectedCpuSets(ptr ptr long) @ stdcall SetThreadStackGuarantee(ptr) +@ stdcall -version=0x601+ SetThreadToken(ptr ptr) @ stdcall SetThreadUILanguage(long) -@ stub -version=0x600+ SetThreadpoolThreadMaximum -@ stub -version=0x600+ SetThreadpoolThreadMinimum -@ stub -version=0x600+ SetThreadpoolTimer -@ stub -version=0x600+ SetThreadpoolWait +@ stdcall -version=0x601+ SetThreadpoolStackInformation(ptr ptr) +@ stdcall -version=0x600+ SetThreadpoolThreadMaximum(ptr long) NTDLL.TpSetPoolMaxThreads +@ stdcall -version=0x600+ SetThreadpoolThreadMinimum(ptr long) NTDLL.TpSetPoolMinThreads +@ stdcall -version=0x600+ SetThreadpoolTimer(ptr ptr long long) NTDLL.TpSetTimer +@ stdcall -version=0x600+ SetThreadpoolWait(ptr long ptr) NTDLL.TpSetWait @ stdcall SetTimeZoneInformation(ptr) @ stdcall SetTimerQueueTimer(long ptr ptr long long long) +@ stdcall -version=0x601+ -arch=win64 SetUmsThreadInformation(ptr long ptr long) @ stdcall SetUnhandledExceptionFilter(ptr) @ stdcall SetUserGeoID(long) +@ stdcall -stub -version=0xA00+ SetUserGeoName(wstr) @ stdcall SetVDMCurrentDirectories(long long) @ stdcall SetVolumeLabelA(str str) @ stdcall SetVolumeLabelW(wstr wstr) @ stdcall SetVolumeMountPointA(str str) @ stdcall SetVolumeMountPointW(wstr wstr) @ stdcall SetWaitableTimer(long ptr long ptr ptr long) +@ stdcall -version=0x601+ SetWaitableTimerEx(long ptr long ptr ptr ptr long) +# @ stub -version=0x601+ SetXStateFeaturesMask @ stdcall SetupComm(long long long) @ stdcall ShowConsoleCursor(long long) @ stdcall SignalObjectAndWait(long long long long) @@ -1135,8 +1294,8 @@ @ stdcall -version=0x600+ SleepConditionVariableCS(ptr ptr long) @ stdcall -version=0x600+ SleepConditionVariableSRW(ptr ptr long long) @ stdcall SleepEx(long long) -@ stub -version=0x600+ StartThreadpoolIo -@ stdcall -stub -version=0x600+ SubmitThreadpoolWork(ptr) +@ stdcall -version=0x600+ StartThreadpoolIo(ptr) NTDLL.TpStartAsyncIoOperation +@ stdcall -version=0x600+ SubmitThreadpoolWork(ptr) NTDLL.TpPostWork @ stdcall SuspendThread(long) @ stdcall SwitchToFiber(ptr) @ stdcall SwitchToThread() @@ -1155,8 +1314,10 @@ @ stdcall Toolhelp32ReadProcessMemory(long ptr ptr long ptr) @ stdcall TransactNamedPipe(long ptr long ptr long ptr ptr) @ stdcall TransmitCommChar(long long) +@ stdcall -version=0x601+ TryAcquireSRWLockExclusive(ptr) NTDLL.RtlTryAcquireSRWLockExclusive +@ stdcall -version=0x6001 TryAcquireSRWLockShared(ptr) NTDLL.RtlTryAcquireSRWLockShared @ stdcall TryEnterCriticalSection(ptr) ntdll.RtlTryEnterCriticalSection -@ stub -version=0x600+ TrySubmitThreadpoolCallback +@ stdcall TrySubmitThreadpoolCallback(ptr ptr ptr) @ stdcall TzSpecificLocalTimeToSystemTime(ptr ptr ptr) @ stdcall UTRegister(long str str str ptr ptr ptr) @ stdcall UTUnRegister(long) @@ -1165,12 +1326,12 @@ @ stdcall UnlockFileEx(long long long long ptr) @ stdcall UnmapViewOfFile(ptr) @ stub -version=0x600+ UnregisterApplicationRecoveryCallback -@ stub -version=0x600+ UnregisterApplicationRestart +@ stdcall -version=0x600+ UnregisterApplicationRestart() @ stdcall UnregisterConsoleIME() @ stdcall UnregisterWait(long) @ stdcall UnregisterWaitEx(long long) @ stub -version=0x600+ UpdateCalendarDayOfWeek -@ stdcall -stub -version=0x600+ UpdateProcThreadAttribute(ptr long ptr ptr ptr ptr ptr) +@ stdcall -version=0x600+ UpdateProcThreadAttribute(ptr long ptr ptr ptr ptr ptr) @ stdcall UpdateResourceA(long str str long ptr long) @ stdcall UpdateResourceW(long wstr wstr long ptr long) @ stdcall VDMConsoleOperation(long long) @@ -1186,7 +1347,7 @@ @ stdcall VerifyVersionInfoW(long long double) @ stdcall VirtualAlloc(ptr long long long) @ stdcall VirtualAllocEx(long ptr long long long) -@ stub -version=0x600+ VirtualAllocExNuma +@ stdcall -stub -version=0x600+ VirtualAllocExNuma(long ptr long long long long) @ stdcall VirtualFree(ptr long long) @ stdcall VirtualFreeEx(long ptr long long) @ stdcall VirtualLock(ptr long) @@ -1198,24 +1359,27 @@ @ stdcall WTSGetActiveConsoleSessionId() @ stdcall WaitCommEvent(long ptr ptr) @ stdcall WaitForDebugEvent(ptr long) +@ stdcall -version=0xA00+ WaitForDebugEventEx(ptr long) @ stdcall WaitForMultipleObjects(long ptr long long) @ stdcall WaitForMultipleObjectsEx(long ptr long long long) @ stdcall WaitForSingleObject(long long) @ stdcall WaitForSingleObjectEx(long long long) -@ stub -version=0x600+ WaitForThreadpoolIoCallbacks -@ stub -version=0x600+ WaitForThreadpoolTimerCallbacks -@ stub -version=0x600+ WaitForThreadpoolWaitCallbacks -@ stdcall -stub -version=0x600+ WaitForThreadpoolWorkCallbacks(ptr long) +@ stdcall -version=0x600+ WaitForThreadpoolIoCallbacks(ptr long) NTDLL.TpWaitForIoCompletion +@ stdcall -version=0x600+ WaitForThreadpoolTimerCallbacks(ptr long) NTDLL.TpWaitForTimer +@ stdcall -version=0x600+ WaitForThreadpoolWaitCallbacks(ptr long) NTDLL.TpWaitForWait +@ stdcall -version=0x600+ WaitForThreadpoolWorkCallbacks(ptr long) ntdll.TpWaitForWork @ stdcall WaitNamedPipeA(str long) @ stdcall WaitNamedPipeW(wstr long) @ stdcall -version=0x600+ WakeAllConditionVariable(ptr) ntdll.RtlWakeAllConditionVariable @ stdcall -version=0x600+ WakeConditionVariable(ptr) ntdll.RtlWakeConditionVariable -@ stub -version=0x600+ WerGetFlags -@ stub -version=0x600+ WerRegisterFile -@ stub -version=0x600+ WerRegisterMemoryBlock -@ stub -version=0x600+ WerSetFlags -@ stub -version=0x600+ WerUnregisterFile -@ stub -version=0x600+ WerUnregisterMemoryBlock +@ stdcall -version=0x600+ WerGetFlags(ptr ptr) +@ stdcall -version=0x600+ WerRegisterFile(wstr long long) +@ stdcall -version=0x600+ WerRegisterMemoryBlock(ptr long) +@ stdcall -version=0x601+ WerRegisterRuntimeExceptionModule(wstr ptr) +@ stdcall -version=0x600+ WerSetFlags(long) +@ stdcall -version=0x600+ WerUnregisterFile(wstr) +@ stdcall -version=0x600+ WerUnregisterMemoryBlock(ptr) +@ stdcall -version=0x601+ WerUnregisterRuntimeExceptionModule(wstr ptr) @ stub -version=0x600+ WerpCleanupMessageMapping @ stub -version=0x600+ WerpInitiateRemoteRecovery @ stub -version=0x600+ WerpNotifyLoadStringResource @@ -1226,9 +1390,10 @@ @ stdcall WinExec(str long) @ stdcall Wow64DisableWow64FsRedirection(ptr) @ stdcall Wow64EnableWow64FsRedirection(long) -@ stub -version=0x600+ Wow64GetThreadContext +@ stdcall Wow64GetThreadContext(long ptr) +@ stdcall -stub -version=0x601+ Wow64GetThreadSelectorEntry(long long ptr) @ stdcall Wow64RevertWow64FsRedirection(ptr) -@ stub -version=0x600+ Wow64SetThreadContext +@ stdcall Wow64SetThreadContext(long ptr) @ stub -version=0x600+ Wow64SuspendThread @ stdcall WriteConsoleA(long ptr long ptr ptr) @ stdcall WriteConsoleInputA(long ptr long ptr) diff --git a/dll/win32/kernel32/kernel32_vista/vista.c b/dll/win32/kernel32/kernel32_vista/vista.c index 1d34450220a..d69501cc359 100644 --- a/dll/win32/kernel32/kernel32_vista/vista.c +++ b/dll/win32/kernel32/kernel32_vista/vista.c @@ -156,55 +156,6 @@ GetApplicationRestart(IN HANDLE hProcess, } -/* - * @unimplemented - */ -VOID -WINAPI -ApplicationRecoveryFinished(IN BOOL bSuccess) -{ - UNIMPLEMENTED; -} - - -/* - * @unimplemented - */ -HRESULT -WINAPI -ApplicationRecoveryInProgress(OUT PBOOL pbCancelled) -{ - UNIMPLEMENTED; - return E_FAIL; -} - - -/* - * @unimplemented - */ -HRESULT -WINAPI -RegisterApplicationRecoveryCallback(IN APPLICATION_RECOVERY_CALLBACK pRecoveryCallback, - IN PVOID pvParameter OPTIONAL, - DWORD dwPingInterval, - DWORD dwFlags) -{ - UNIMPLEMENTED; - return E_FAIL; -} - - -/* - * @unimplemented - */ -HRESULT -WINAPI -RegisterApplicationRestart(IN PCWSTR pwzCommandline OPTIONAL, - IN DWORD dwFlags) -{ - UNIMPLEMENTED; - return E_FAIL; -} /* @@ -683,18 +634,6 @@ GetThreadPreferredUILanguages( return FALSE; } -/* - * @unimplemented - */ -LANGID -WINAPI -GetThreadUILanguage(VOID) -{ - UNIMPLEMENTED; - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return 0; -} - /* * @unimplemented */ @@ -729,10 +668,6 @@ GetUserPreferredUILanguages( return FALSE; } -/* - * @unimplemented - */ -#if 0 // Tis is Windows 7+ BOOL WINAPI SetProcessPreferredUILanguages( @@ -744,7 +679,6 @@ SetProcessPreferredUILanguages( SetLastError(ERROR_CALL_NOT_IMPLEMENTED); return FALSE; } -#endif /* * @unimplemented diff --git a/dll/win32/kernel32/wine/process.c b/dll/win32/kernel32/wine/process.c new file mode 100644 index 00000000000..aacd2bda379 --- /dev/null +++ b/dll/win32/kernel32/wine/process.c @@ -0,0 +1,1043 @@ +/* + * Win32 processes + * + * Copyright 1996, 1998 Alexandre Julliard + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include +#include +#include +#include +#include +#include +#include +#ifndef __REACTOS__ +#include "ntstatus.h" +#define WIN32_NO_STATUS +#include "winternl.h" +#include "winbase.h" +#include "winnls.h" +#include "wincon.h" +#include "kernel_private.h" +#include "psapi.h" +#include "ddk/wdm.h" +#include "wine/asm.h" +#include "wine/debug.h" +#else + +#include + +#define NDEBUG +#include +DEBUG_CHANNEL(profile); + + +static inline BOOL set_ntstatus( NTSTATUS status ) +{ + if (status) SetLastError( RtlNtStatusToDosError( status )); + return !status; +} +BOOL WINAPI DECLSPEC_HOTPATCH GetLogicalProcessorInformationEx( LOGICAL_PROCESSOR_RELATIONSHIP relationship, + SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX *buffer, DWORD *len ); + + +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); + +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_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 UMS_SCHEDULER_REASON; +typedef enum _RTL_UMS_THREAD_INFO_CLASS UMS_THREAD_INFO_CLASS, *PUMS_THREAD_INFO_CLASS; + + +#endif + + +static const struct _KUSER_SHARED_DATA *user_shared_data = (struct _KUSER_SHARED_DATA *)0x7ffe0000; + +SYSTEM_BASIC_INFORMATION system_info = { 0 }; + +/* Process flags */ +#define PDB32_DEBUGGED 0x0001 /* Process is being debugged */ +#define PDB32_WIN16_PROC 0x0008 /* Win16 process */ +#define PDB32_DOS_PROC 0x0010 /* Dos process */ +#define PDB32_CONSOLE_PROC 0x0020 /* Console process */ +#define PDB32_FILE_APIS_OEM 0x0040 /* File APIs are OEM */ +#define PDB32_WIN32S_PROC 0x8000 /* Win32s process */ + +#ifndef __REACTOS__ +/*********************************************************************** + * wait_input_idle + * + * Wrapper to call WaitForInputIdle USER function + */ +typedef DWORD (WINAPI *WaitForInputIdle_ptr)( HANDLE hProcess, DWORD dwTimeOut ); + +static DWORD wait_input_idle( HANDLE process, DWORD timeout ) +{ + HMODULE mod = GetModuleHandleA( "user32.dll" ); + if (mod) + { + WaitForInputIdle_ptr ptr = (WaitForInputIdle_ptr)GetProcAddress( mod, "WaitForInputIdle" ); + if (ptr) return ptr( process, timeout ); + } + return 0; +} + + +/*********************************************************************** + * WinExec (KERNEL32.@) + */ +UINT WINAPI DECLSPEC_HOTPATCH WinExec( LPCSTR lpCmdLine, UINT nCmdShow ) +{ + PROCESS_INFORMATION info; + STARTUPINFOA startup; + char *cmdline; + UINT ret; + + memset( &startup, 0, sizeof(startup) ); + startup.cb = sizeof(startup); + startup.dwFlags = STARTF_USESHOWWINDOW; + startup.wShowWindow = nCmdShow; + + /* cmdline needs to be writable for CreateProcess */ + if (!(cmdline = HeapAlloc( GetProcessHeap(), 0, strlen(lpCmdLine)+1 ))) return 0; + strcpy( cmdline, lpCmdLine ); + + if (CreateProcessA( NULL, cmdline, NULL, NULL, FALSE, + 0, NULL, NULL, &startup, &info )) + { + /* Give 30 seconds to the app to come up */ + if (wait_input_idle( info.hProcess, 30000 ) == WAIT_FAILED) + WARN("WaitForInputIdle failed: Error %ld\n", GetLastError() ); + ret = 33; + /* Close off the handles */ + CloseHandle( info.hThread ); + CloseHandle( info.hProcess ); + } + else if ((ret = GetLastError()) >= 32) + { + FIXME("Strange error set by CreateProcess: %d\n", ret ); + ret = 11; + } + HeapFree( GetProcessHeap(), 0, cmdline ); + return ret; +} + + +/********************************************************************** + * LoadModule (KERNEL32.@) + */ +DWORD WINAPI LoadModule( LPCSTR name, LPVOID paramBlock ) +{ + LOADPARMS32 *params = paramBlock; + PROCESS_INFORMATION info; + STARTUPINFOA startup; + DWORD ret; + LPSTR cmdline, p; + char filename[MAX_PATH]; + BYTE len; + + if (!name) return ERROR_FILE_NOT_FOUND; + + if (!SearchPathA( NULL, name, ".exe", sizeof(filename), filename, NULL ) && + !SearchPathA( NULL, name, NULL, sizeof(filename), filename, NULL )) + return GetLastError(); + + len = (BYTE)params->lpCmdLine[0]; + if (!(cmdline = HeapAlloc( GetProcessHeap(), 0, strlen(filename) + len + 2 ))) + return ERROR_NOT_ENOUGH_MEMORY; + + strcpy( cmdline, filename ); + p = cmdline + strlen(cmdline); + *p++ = ' '; + memcpy( p, params->lpCmdLine + 1, len ); + p[len] = 0; + + memset( &startup, 0, sizeof(startup) ); + startup.cb = sizeof(startup); + if (params->lpCmdShow) + { + startup.dwFlags = STARTF_USESHOWWINDOW; + startup.wShowWindow = ((WORD *)params->lpCmdShow)[1]; + } + + if (CreateProcessA( filename, cmdline, NULL, NULL, FALSE, 0, + params->lpEnvAddress, NULL, &startup, &info )) + { + /* Give 30 seconds to the app to come up */ + if (wait_input_idle( info.hProcess, 30000 ) == WAIT_FAILED) + WARN("WaitForInputIdle failed: Error %ld\n", GetLastError() ); + ret = 33; + /* Close off the handles */ + CloseHandle( info.hThread ); + CloseHandle( info.hProcess ); + } + else if ((ret = GetLastError()) >= 32) + { + FIXME("Strange error set by CreateProcess: %lu\n", ret ); + ret = 11; + } + + HeapFree( GetProcessHeap(), 0, cmdline ); + return ret; +} + + +/*********************************************************************** + * ExitProcess (KERNEL32.@) + * + * Exits the current process. + * + * PARAMS + * status [I] Status code to exit with. + * + * RETURNS + * Nothing. + */ +#ifdef __i386__ +__ASM_STDCALL_FUNC( ExitProcess, 4, /* Shrinker depend on this particular ExitProcess implementation */ + "pushl %ebp\n\t" + ".byte 0x8B, 0xEC\n\t" /* movl %esp, %ebp */ + ".byte 0x6A, 0x00\n\t" /* pushl $0 */ + ".byte 0x68, 0x00, 0x00, 0x00, 0x00\n\t" /* pushl $0 - 4 bytes immediate */ + "pushl 8(%ebp)\n\t" + "call " __ASM_STDCALL("RtlExitUserProcess",4) "\n\t" + "leave\n\t" + "ret $4" ) +#else + +void WINAPI ExitProcess( DWORD status ) +{ + RtlExitUserProcess( status ); +} + +#endif + +/*********************************************************************** + * GetExitCodeProcess [KERNEL32.@] + * + * Gets termination status of specified process. + * + * PARAMS + * hProcess [in] Handle to the process. + * lpExitCode [out] Address to receive termination status. + * + * RETURNS + * Success: TRUE + * Failure: FALSE + */ +BOOL WINAPI GetExitCodeProcess( HANDLE hProcess, LPDWORD lpExitCode ) +{ + PROCESS_BASIC_INFORMATION pbi; + + if (!set_ntstatus( NtQueryInformationProcess( hProcess, ProcessBasicInformation, &pbi, sizeof(pbi), NULL ))) + return FALSE; + if (lpExitCode) *lpExitCode = pbi.ExitStatus; + return TRUE; +} + + +/************************************************************************** + * FatalExit (KERNEL32.@) + */ +void WINAPI FatalExit( int code ) +{ + WARN( "FatalExit\n" ); + ExitProcess( code ); +} + + +/*********************************************************************** + * GetProcessFlags (KERNEL32.@) + */ +DWORD WINAPI GetProcessFlags( DWORD processid ) +{ + IMAGE_NT_HEADERS *nt; + DWORD flags = 0; + + if (processid && processid != GetCurrentProcessId()) return 0; + + if ((nt = RtlImageNtHeader( NtCurrentTeb()->Peb->ImageBaseAddress ))) + { + if (nt->OptionalHeader.Subsystem == IMAGE_SUBSYSTEM_WINDOWS_CUI) + flags |= PDB32_CONSOLE_PROC; + } + if (!AreFileApisANSI()) flags |= PDB32_FILE_APIS_OEM; + if (IsDebuggerPresent()) flags |= PDB32_DEBUGGED; + return flags; +} + + +/*********************************************************************** + * ConvertToGlobalHandle (KERNEL32.@) + */ +HANDLE WINAPI ConvertToGlobalHandle(HANDLE hSrc) +{ + HANDLE ret = INVALID_HANDLE_VALUE; + DuplicateHandle( GetCurrentProcess(), hSrc, GetCurrentProcess(), &ret, 0, FALSE, + DUPLICATE_MAKE_GLOBAL | DUPLICATE_SAME_ACCESS | DUPLICATE_CLOSE_SOURCE ); + return ret; +} + + +/*********************************************************************** + * SetHandleContext (KERNEL32.@) + */ +BOOL WINAPI SetHandleContext(HANDLE hnd,DWORD context) +{ + FIXME("(%p,%ld), stub. In case this got called by WSOCK32/WS2_32: " + "the external WINSOCK DLLs won't work with WINE, don't use them.\n",hnd,context); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + + +/*********************************************************************** + * GetHandleContext (KERNEL32.@) + */ +DWORD WINAPI GetHandleContext(HANDLE hnd) +{ + FIXME("(%p), stub. In case this got called by WSOCK32/WS2_32: " + "the external WINSOCK DLLs won't work with WINE, don't use them.\n",hnd); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return 0; +} + + +/*********************************************************************** + * CreateSocketHandle (KERNEL32.@) + */ +HANDLE WINAPI CreateSocketHandle(void) +{ + FIXME("(), stub. In case this got called by WSOCK32/WS2_32: " + "the external WINSOCK DLLs won't work with WINE, don't use them.\n"); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return INVALID_HANDLE_VALUE; +} + + +/*********************************************************************** + * SetProcessAffinityMask (KERNEL32.@) + */ +BOOL WINAPI SetProcessAffinityMask( HANDLE hProcess, DWORD_PTR affmask ) +{ + return set_ntstatus( NtSetInformationProcess( hProcess, ProcessAffinityMask, + &affmask, sizeof(DWORD_PTR) )); +} + + +/********************************************************************** + * GetProcessAffinityMask (KERNEL32.@) + */ +BOOL WINAPI GetProcessAffinityMask( HANDLE hProcess, PDWORD_PTR process_mask, PDWORD_PTR system_mask ) +{ + if (process_mask) + { + if (!set_ntstatus( NtQueryInformationProcess( hProcess, ProcessAffinityMask, + process_mask, sizeof(*process_mask), NULL ))) + return FALSE; + } + if (system_mask) + { + SYSTEM_BASIC_INFORMATION info; + + if (!set_ntstatus( NtQuerySystemInformation( SystemBasicInformation, &info, sizeof(info), NULL ))) + return FALSE; + *system_mask = info.ActiveProcessorsAffinityMask; + } + return TRUE; +} + + +/*********************************************************************** + * SetProcessWorkingSetSize [KERNEL32.@] + * Sets the min/max working set sizes for a specified process. + * + * PARAMS + * process [I] Handle to the process of interest + * minset [I] Specifies minimum working set size + * maxset [I] Specifies maximum working set size + * + * RETURNS + * Success: TRUE + * Failure: FALSE + */ +BOOL WINAPI SetProcessWorkingSetSize(HANDLE process, SIZE_T minset, SIZE_T maxset) +{ + return SetProcessWorkingSetSizeEx(process, minset, maxset, 0); +} + +/*********************************************************************** + * GetProcessWorkingSetSize (KERNEL32.@) + */ +BOOL WINAPI GetProcessWorkingSetSize(HANDLE process, SIZE_T *minset, SIZE_T *maxset) +{ + return GetProcessWorkingSetSizeEx(process, minset, maxset, NULL); +} + + +/****************************************************************** + * GetProcessIoCounters (KERNEL32.@) + */ +BOOL WINAPI GetProcessIoCounters(HANDLE hProcess, PIO_COUNTERS ioc) +{ + return set_ntstatus( NtQueryInformationProcess(hProcess, ProcessIoCounters, ioc, sizeof(*ioc), NULL )); +} + +/*********************************************************************** + * RegisterServiceProcess (KERNEL32.@) + * + * A service process calls this function to ensure that it continues to run + * even after a user logged off. + */ +DWORD WINAPI RegisterServiceProcess(DWORD dwProcessId, DWORD dwType) +{ + /* I don't think that Wine needs to do anything in this function */ + return 1; /* success */ +} + + +/*********************************************************************** + * GetCurrentProcess (KERNEL32.@) + * + * Get a handle to the current process. + * + * PARAMS + * None. + * + * RETURNS + * A handle representing the current process. + */ +HANDLE WINAPI KERNEL32_GetCurrentProcess(void) +{ + return (HANDLE)~(ULONG_PTR)0; +} + + +/*********************************************************************** + * CreateActCtxA (KERNEL32.@) + */ +HANDLE WINAPI DECLSPEC_HOTPATCH CreateActCtxA( const ACTCTXA *actctx ) +{ + ACTCTXW actw; + SIZE_T len; + HANDLE ret = INVALID_HANDLE_VALUE; + LPWSTR src = NULL, assdir = NULL, resname = NULL, appname = NULL; + + TRACE("%p %08lx\n", actctx, actctx ? actctx->dwFlags : 0); + +#define CHECK_LIMIT( field ) (actctx->cbSize >= RTL_SIZEOF_THROUGH_FIELD( ACTCTXA, field )) + if (!actctx || !CHECK_LIMIT( lpSource ) || + ((actctx->dwFlags & ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID) && !CHECK_LIMIT( wProcessorArchitecture )) || + ((actctx->dwFlags & ACTCTX_FLAG_LANGID_VALID) && !CHECK_LIMIT( wLangId )) || + ((actctx->dwFlags & ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID) && !CHECK_LIMIT( lpAssemblyDirectory )) || + ((actctx->dwFlags & ACTCTX_FLAG_RESOURCE_NAME_VALID) && !CHECK_LIMIT( lpResourceName )) || + ((actctx->dwFlags & ACTCTX_FLAG_APPLICATION_NAME_VALID) && !CHECK_LIMIT( lpApplicationName )) || + ((actctx->dwFlags & ACTCTX_FLAG_HMODULE_VALID) && !CHECK_LIMIT( hModule ))) + { + SetLastError(ERROR_INVALID_PARAMETER); + return INVALID_HANDLE_VALUE; + } +#undef CHECK_LIMIT + + actw.cbSize = sizeof(actw); + actw.dwFlags = actctx->dwFlags; + if (actctx->lpSource) + { + len = MultiByteToWideChar(CP_ACP, 0, actctx->lpSource, -1, NULL, 0); + src = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); + if (!src) return INVALID_HANDLE_VALUE; + MultiByteToWideChar(CP_ACP, 0, actctx->lpSource, -1, src, len); + } + actw.lpSource = src; + + if (actw.dwFlags & ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID) + actw.wProcessorArchitecture = actctx->wProcessorArchitecture; + if (actw.dwFlags & ACTCTX_FLAG_LANGID_VALID) + actw.wLangId = actctx->wLangId; + if (actw.dwFlags & ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID) + { + len = MultiByteToWideChar(CP_ACP, 0, actctx->lpAssemblyDirectory, -1, NULL, 0); + assdir = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); + if (!assdir) goto done; + MultiByteToWideChar(CP_ACP, 0, actctx->lpAssemblyDirectory, -1, assdir, len); + actw.lpAssemblyDirectory = assdir; + } + if (actw.dwFlags & ACTCTX_FLAG_RESOURCE_NAME_VALID) + { + if ((ULONG_PTR)actctx->lpResourceName >> 16) + { + len = MultiByteToWideChar(CP_ACP, 0, actctx->lpResourceName, -1, NULL, 0); + resname = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); + if (!resname) goto done; + MultiByteToWideChar(CP_ACP, 0, actctx->lpResourceName, -1, resname, len); + actw.lpResourceName = resname; + } + else actw.lpResourceName = (LPCWSTR)actctx->lpResourceName; + } + if (actw.dwFlags & ACTCTX_FLAG_APPLICATION_NAME_VALID) + { + len = MultiByteToWideChar(CP_ACP, 0, actctx->lpApplicationName, -1, NULL, 0); + appname = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); + if (!appname) goto done; + MultiByteToWideChar(CP_ACP, 0, actctx->lpApplicationName, -1, appname, len); + actw.lpApplicationName = appname; + } + if (actw.dwFlags & ACTCTX_FLAG_HMODULE_VALID) + actw.hModule = actctx->hModule; + + ret = CreateActCtxW(&actw); + +done: + HeapFree(GetProcessHeap(), 0, src); + HeapFree(GetProcessHeap(), 0, assdir); + HeapFree(GetProcessHeap(), 0, resname); + HeapFree(GetProcessHeap(), 0, appname); + return ret; +} + +/*********************************************************************** + * FindActCtxSectionStringA (KERNEL32.@) + */ +BOOL WINAPI FindActCtxSectionStringA( DWORD flags, const GUID *guid, ULONG id, const char *search, + ACTCTX_SECTION_KEYED_DATA *info ) +{ + LPWSTR searchW; + DWORD len; + BOOL ret; + + TRACE("%08lx %s %lu %s %p\n", flags, debugstr_guid(guid), id, debugstr_a(search), info); + + if (!search || !info) + { + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + len = MultiByteToWideChar(CP_ACP, 0, search, -1, NULL, 0); + searchW = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); + MultiByteToWideChar(CP_ACP, 0, search, -1, searchW, len); + ret = FindActCtxSectionStringW( flags, guid, id, searchW, info ); + HeapFree(GetProcessHeap(), 0, searchW); + return ret; +} + + +/*********************************************************************** + * CmdBatNotification (KERNEL32.@) + * + * Notifies the system that a batch file has started or finished. + * + * PARAMS + * bBatchRunning [I] TRUE if a batch file has started or + * FALSE if a batch file has finished executing. + * + * RETURNS + * Unknown. + */ +BOOL WINAPI CmdBatNotification( BOOL bBatchRunning ) +{ + FIXME("%d\n", bBatchRunning); + return FALSE; +} +#endif +/*********************************************************************** + * RegisterApplicationRestart (KERNEL32.@) + */ +HRESULT WINAPI RegisterApplicationRestart(PCWSTR pwzCommandLine, DWORD dwFlags) +{ + FIXME("(%s,%ld)\n", debugstr_w(pwzCommandLine), dwFlags); + + return S_OK; +} + +/********************************************************************** + * GetSystemDEPPolicy (KERNEL32.@) + */ +DEP_SYSTEM_POLICY_TYPE WINAPI GetSystemDEPPolicy(void) +{ + return user_shared_data->NXSupportPolicy; +} + +/********************************************************************** + * SetProcessDEPPolicy (KERNEL32.@) + */ +BOOL WINAPI SetProcessDEPPolicy( DWORD flags ) +{ + ULONG dep_flags = 0; + + TRACE("%#lx\n", flags); + + if (flags & PROCESS_DEP_ENABLE) + dep_flags |= MEM_EXECUTE_OPTION_DISABLE | MEM_EXECUTE_OPTION_PERMANENT; + if (flags & PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION) + dep_flags |= MEM_EXECUTE_OPTION_DISABLE_THUNK_EMULATION; + + return set_ntstatus( NtSetInformationProcess( GetCurrentProcess(), ProcessExecuteFlags, + &dep_flags, sizeof(dep_flags) ) ); +} + +/********************************************************************** + * ApplicationRecoveryFinished (KERNEL32.@) + */ +VOID WINAPI ApplicationRecoveryFinished(BOOL success) +{ + FIXME(": stub\n"); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); +} + +/********************************************************************** + * ApplicationRecoveryInProgress (KERNEL32.@) + */ +HRESULT WINAPI ApplicationRecoveryInProgress(PBOOL canceled) +{ + FIXME(":%p stub\n", canceled); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return E_FAIL; +} + +/********************************************************************** + * RegisterApplicationRecoveryCallback (KERNEL32.@) + */ +HRESULT WINAPI RegisterApplicationRecoveryCallback(APPLICATION_RECOVERY_CALLBACK callback, PVOID param, DWORD pingint, DWORD flags) +{ + FIXME("%p, %p, %ld, %ld: stub, faking success\n", callback, param, pingint, flags); + return S_OK; +} + +static SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX *get_logical_processor_info(void) +{ + DWORD size = 0; + SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX *info; + + GetLogicalProcessorInformationEx( RelationGroup, NULL, &size ); + if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) return NULL; + if (!(info = HeapAlloc( GetProcessHeap(), 0, size ))) return NULL; + if (!GetLogicalProcessorInformationEx( RelationGroup, info, &size )) + { + HeapFree( GetProcessHeap(), 0, info ); + return NULL; + } + return info; +} + +#ifndef __REACTOS__ +/*********************************************************************** + * GetActiveProcessorGroupCount (KERNEL32.@) + */ +WORD WINAPI GetActiveProcessorGroupCount(void) +{ + WORD groups; + SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX *info; + + TRACE("()\n"); + + if (!(info = get_logical_processor_info())) return 0; + + groups = info->Group.ActiveGroupCount; + + HeapFree(GetProcessHeap(), 0, info); + return groups; +} + +/*********************************************************************** + * GetActiveProcessorCount (KERNEL32.@) + */ +DWORD WINAPI GetActiveProcessorCount(WORD group) +{ + DWORD cpus = 0; + SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX *info; + + TRACE("(0x%x)\n", group); + + if (!(info = get_logical_processor_info())) return 0; + + if (group == ALL_PROCESSOR_GROUPS) + { + for (group = 0; group < info->Group.ActiveGroupCount; group++) + cpus += info->Group.GroupInfo[group].ActiveProcessorCount; + } + else + { + if (group < info->Group.ActiveGroupCount) + cpus = info->Group.GroupInfo[group].ActiveProcessorCount; + } + + HeapFree(GetProcessHeap(), 0, info); + return cpus; +} +#endif + +/*********************************************************************** + * GetMaximumProcessorCount (KERNEL32.@) + */ +DWORD WINAPI GetMaximumProcessorCount(WORD group) +{ + DWORD cpus = 0; + SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX *info; + + TRACE("(0x%x)\n", group); + + if (!(info = get_logical_processor_info())) return 0; + + if (group == ALL_PROCESSOR_GROUPS) + { + for (group = 0; group < info->Group.MaximumGroupCount; group++) + cpus += info->Group.GroupInfo[group].MaximumProcessorCount; + } + else + { + if (group < info->Group.MaximumGroupCount) + cpus = info->Group.GroupInfo[group].MaximumProcessorCount; + } + + HeapFree(GetProcessHeap(), 0, info); + return cpus; +} + +/*********************************************************************** + * GetMaximumProcessorGroupCount (KERNEL32.@) + */ +WORD WINAPI GetMaximumProcessorGroupCount(void) +{ + WORD groups; + SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX *info; + + TRACE("()\n"); + + if (!(info = get_logical_processor_info())) return 0; + + groups = info->Group.MaximumGroupCount; + + HeapFree(GetProcessHeap(), 0, info); + return groups; +} +#ifndef __REACTOS__ +/*********************************************************************** + * GetFirmwareEnvironmentVariableA (KERNEL32.@) + */ +DWORD WINAPI GetFirmwareEnvironmentVariableA(LPCSTR name, LPCSTR guid, PVOID buffer, DWORD size) +{ + FIXME("stub: %s %s %p %lu\n", debugstr_a(name), debugstr_a(guid), buffer, size); + SetLastError(ERROR_INVALID_FUNCTION); + return 0; +} + +/*********************************************************************** + * GetFirmwareEnvironmentVariableW (KERNEL32.@) + */ +DWORD WINAPI GetFirmwareEnvironmentVariableW(LPCWSTR name, LPCWSTR guid, PVOID buffer, DWORD size) +{ + FIXME("stub: %s %s %p %lu\n", debugstr_w(name), debugstr_w(guid), buffer, size); + SetLastError(ERROR_INVALID_FUNCTION); + return 0; +} + +/*********************************************************************** + * SetFirmwareEnvironmentVariableA (KERNEL32.@) + */ +BOOL WINAPI SetFirmwareEnvironmentVariableA(const char *name, const char *guid, void *buffer, DWORD size) +{ + FIXME("stub: %s %s %p %lu\n", debugstr_a(name), debugstr_a(guid), buffer, size); + SetLastError(ERROR_INVALID_FUNCTION); + return FALSE; +} + +/*********************************************************************** + * SetFirmwareEnvironmentVariableW (KERNEL32.@) + */ +BOOL WINAPI SetFirmwareEnvironmentVariableW(const WCHAR *name, const WCHAR *guid, void *buffer, DWORD size) +{ + FIXME("stub: %s %s %p %lu\n", debugstr_w(name), debugstr_w(guid), buffer, size); + SetLastError(ERROR_INVALID_FUNCTION); + return FALSE; +} + +/*********************************************************************** + * GetFirmwareType (KERNEL32.@) + */ +BOOL WINAPI GetFirmwareType(FIRMWARE_TYPE *type) +{ + if (!type) + return FALSE; + + *type = FirmwareTypeUnknown; + return TRUE; +} + +/********************************************************************** + * GetNumaNodeProcessorMask (KERNEL32.@) + */ +BOOL WINAPI GetNumaNodeProcessorMask(UCHAR node, PULONGLONG mask) +{ + FIXME("(%c %p): stub\n", node, mask); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + +/********************************************************************** + * GetNumaAvailableMemoryNode (KERNEL32.@) + */ +BOOL WINAPI GetNumaAvailableMemoryNode(UCHAR node, PULONGLONG available_bytes) +{ + FIXME("(%c %p): stub\n", node, available_bytes); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} +#endif + +/********************************************************************** + * GetNumaAvailableMemoryNodeEx (KERNEL32.@) + */ +BOOL WINAPI GetNumaAvailableMemoryNodeEx(USHORT node, PULONGLONG available_bytes) +{ + FIXME("(%hu %p): stub\n", node, available_bytes); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + +#ifndef __REACTOS__ +/*********************************************************************** + * GetNumaProcessorNode (KERNEL32.@) + */ +BOOL WINAPI GetNumaProcessorNode(UCHAR processor, PUCHAR node) +{ + TRACE("(%d, %p)\n", processor, node); + + if (processor < system_info.NumberOfProcessors) + { + *node = 0; + return TRUE; + } + + *node = 0xFF; + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; +} +#endif + +/*********************************************************************** + * GetNumaProcessorNodeEx (KERNEL32.@) + */ +BOOL WINAPI GetNumaProcessorNodeEx(PPROCESSOR_NUMBER processor, PUSHORT node_number) +{ + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + +/*********************************************************************** + * GetNumaProximityNode (KERNEL32.@) + */ +BOOL WINAPI GetNumaProximityNode(ULONG proximity_id, PUCHAR node_number) +{ + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + +/********************************************************************** + * GetProcessDEPPolicy (KERNEL32.@) + */ +BOOL WINAPI GetProcessDEPPolicy(HANDLE process, LPDWORD flags, PBOOL permanent) +{ + ULONG dep_flags; + + TRACE("(%p %p %p)\n", process, flags, permanent); + + if (!set_ntstatus( NtQueryInformationProcess( GetCurrentProcess(), ProcessExecuteFlags, + &dep_flags, sizeof(dep_flags), NULL ))) + return FALSE; + + if (flags) + { + *flags = 0; + if (dep_flags & MEM_EXECUTE_OPTION_DISABLE) + *flags |= PROCESS_DEP_ENABLE; + if (dep_flags & MEM_EXECUTE_OPTION_DISABLE_THUNK_EMULATION) + *flags |= PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION; + } + + if (permanent) *permanent = (dep_flags & MEM_EXECUTE_OPTION_PERMANENT) != 0; + return TRUE; +} + +/*********************************************************************** + * UnregisterApplicationRestart (KERNEL32.@) + */ +HRESULT WINAPI UnregisterApplicationRestart(void) +{ + FIXME(": stub\n"); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return S_OK; +} + +/*********************************************************************** + * CreateUmsCompletionList (KERNEL32.@) + */ +BOOL WINAPI CreateUmsCompletionList(PUMS_COMPLETION_LIST *list) +{ + FIXME( "%p: stub\n", list ); + 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; +} + +/*********************************************************************** + * DeleteUmsCompletionList (KERNEL32.@) + */ +BOOL WINAPI DeleteUmsCompletionList(PUMS_COMPLETION_LIST list) +{ + FIXME( "%p: stub\n", list ); + 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; +} + +/*********************************************************************** + * DequeueUmsCompletionListItems (KERNEL32.@) + */ +BOOL WINAPI DequeueUmsCompletionListItems(void *list, DWORD timeout, PUMS_CONTEXT *ctx) +{ + FIXME( "%p,%08lx,%p: stub\n", list, timeout, 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; +} + +/*********************************************************************** + * 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; +} + +/*********************************************************************** + * QueryUmsThreadInformation (KERNEL32.@) + */ +BOOL WINAPI QueryUmsThreadInformation(PUMS_CONTEXT ctx, UMS_THREAD_INFO_CLASS class, + void *buf, ULONG length, ULONG *ret_length) +{ + FIXME( "%p,%08x,%p,%08lx,%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,%08lx: 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/dll/win32/kernel32/wine/transact.c b/dll/win32/kernel32/wine/transact.c new file mode 100644 index 00000000000..36bb8e5c8ce --- /dev/null +++ b/dll/win32/kernel32/wine/transact.c @@ -0,0 +1,192 @@ +/* + * File handling functions + * + * Copyright 1993 Erik Bos + * Copyright 1996, 2004 Alexandre Julliard + * Copyright 2003 Eric Pouech + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#include + +#define NDEBUG +#include +DEBUG_CHANNEL(kernel32file); + + +/************************************************************************** + * MoveFileTransactedA (KERNEL32.@) + */ +BOOL WINAPI MoveFileTransactedA(const char *source, const char *dest, LPPROGRESS_ROUTINE progress, void *data, DWORD flags, HANDLE handle) +{ + FIXME("(%s, %s, %p, %p, %ld, %p) semi-stub\n", debugstr_a(source), debugstr_a(dest), progress, data, flags, handle); + + return MoveFileWithProgressA(source, dest, progress, data, flags); +} + +/************************************************************************** + * MoveFileTransactedW (KERNEL32.@) + */ +BOOL WINAPI MoveFileTransactedW(const WCHAR *source, const WCHAR *dest, LPPROGRESS_ROUTINE progress, void *data, DWORD flags, HANDLE handle) +{ + FIXME("(%s, %s, %p, %p, %ld, %p) semi-stub\n", debugstr_w(source), debugstr_w(dest), progress, data, flags, handle); + + return MoveFileWithProgressW(source, dest, progress, data, flags); +} + +/************************************************************************* + * CreateFileTransactedA (KERNEL32.@) + */ +HANDLE WINAPI DECLSPEC_HOTPATCH CreateFileTransactedA( LPCSTR name, DWORD access, DWORD sharing, + LPSECURITY_ATTRIBUTES sa, DWORD creation, + DWORD attributes, HANDLE template, + HANDLE transaction, PUSHORT version, + PVOID param ) +{ + FIXME("(%s %lx %lx %p %lx %lx %p %p %p %p): semi-stub\n", debugstr_a(name), access, sharing, sa, + creation, attributes, template, transaction, version, param); + return CreateFileA(name, access, sharing, sa, creation, attributes, template); +} + +/************************************************************************* + * CreateFileTransactedW (KERNEL32.@) + */ +HANDLE WINAPI DECLSPEC_HOTPATCH CreateFileTransactedW( LPCWSTR name, DWORD access, DWORD sharing, + LPSECURITY_ATTRIBUTES sa, DWORD creation, + DWORD attributes, HANDLE template, HANDLE transaction, + PUSHORT version, PVOID param ) +{ + FIXME("(%s %lx %lx %p %lx %lx %p %p %p %p): semi-stub\n", debugstr_w(name), access, sharing, sa, + creation, attributes, template, transaction, version, param); + return CreateFileW(name, access, sharing, sa, creation, attributes, template); +} + +/*********************************************************************** + * CreateDirectoryTransactedA (KERNEL32.@) + */ +BOOL WINAPI DECLSPEC_HOTPATCH CreateDirectoryTransactedA(LPCSTR template, LPCSTR path, LPSECURITY_ATTRIBUTES sa, HANDLE transaction) +{ + FIXME("(%s %s %p %p): semi-stub\n", debugstr_a(template), debugstr_a(path), sa, transaction); + return CreateDirectoryExA(template, path, sa); +} + +/*********************************************************************** + * CreateDirectoryTransactedW (KERNEL32.@) + */ +BOOL WINAPI DECLSPEC_HOTPATCH CreateDirectoryTransactedW(LPCWSTR template, LPCWSTR path, LPSECURITY_ATTRIBUTES sa, HANDLE transaction) +{ + FIXME("(%s %s %p %p): semi-stub\n", debugstr_w(template), debugstr_w(path), sa, transaction); + return CreateDirectoryExW(template, path, sa); +} + +/*********************************************************************** + * DeleteFileTransactedA (KERNEL32.@) + */ +BOOL WINAPI DECLSPEC_HOTPATCH DeleteFileTransactedA(LPCSTR path, HANDLE transaction) +{ + FIXME("(%s %p): semi-stub\n", debugstr_a(path), transaction); + return DeleteFileA(path); +} + +/*********************************************************************** + * DeleteFileTransactedW (KERNEL32.@) + */ +BOOL WINAPI DECLSPEC_HOTPATCH DeleteFileTransactedW(LPCWSTR path, HANDLE transaction) +{ + FIXME("(%s %p): semi-stub\n", debugstr_w(path), transaction); + return DeleteFileW(path); +} + +/****************************************************************************** + * FindFirstFileTransactedA (KERNEL32.@) + */ +HANDLE WINAPI DECLSPEC_HOTPATCH FindFirstFileTransactedA( LPCSTR filename, FINDEX_INFO_LEVELS level, + LPVOID data, FINDEX_SEARCH_OPS search_op, + LPVOID filter, DWORD flags, HANDLE transaction ) +{ + FIXME("(%s %d %p %d %p %lx %p): semi-stub\n", debugstr_a(filename), level, data, search_op, filter, flags, transaction); + return FindFirstFileExA(filename, level, data, search_op, filter, flags); +} + +/****************************************************************************** + * FindFirstFileTransactedW (KERNEL32.@) + */ +HANDLE WINAPI DECLSPEC_HOTPATCH FindFirstFileTransactedW( LPCWSTR filename, FINDEX_INFO_LEVELS level, + LPVOID data, FINDEX_SEARCH_OPS search_op, + LPVOID filter, DWORD flags, HANDLE transaction ) +{ + FIXME("(%s %d %p %d %p %lx %p): semi-stub\n", debugstr_w(filename), level, data, search_op, filter, flags, transaction); + return FindFirstFileExW(filename, level, data, search_op, filter, flags); +} + + +/************************************************************************** + * GetFileAttributesTransactedA (KERNEL32.@) + */ +DWORD WINAPI DECLSPEC_HOTPATCH GetFileAttributesTransactedA(LPCSTR name, GET_FILEEX_INFO_LEVELS level, void *ptr, HANDLE transaction) +{ + FIXME("(%s %p): semi-stub\n", debugstr_a(name), transaction); + return GetFileAttributesExA(name, level, ptr); +} + +/************************************************************************** + * GetFileAttributesTransactedW (KERNEL32.@) + */ +DWORD WINAPI DECLSPEC_HOTPATCH GetFileAttributesTransactedW(LPCWSTR name, GET_FILEEX_INFO_LEVELS level, void *ptr, HANDLE transaction) +{ + FIXME("(%s %p): semi-stub\n", debugstr_w(name), transaction); + return GetFileAttributesExW(name, level, ptr); +} + +/*********************************************************************** + * RemoveDirectoryTransactedA (KERNEL32.@) + */ +BOOL WINAPI DECLSPEC_HOTPATCH RemoveDirectoryTransactedA(LPCSTR path, HANDLE transaction) +{ + FIXME("(%s %p): semi-stub\n", debugstr_a(path), transaction); + return RemoveDirectoryA(path); +} + +/*********************************************************************** + * RemoveDirectoryTransactedW (KERNEL32.@) + */ +BOOL WINAPI DECLSPEC_HOTPATCH RemoveDirectoryTransactedW(LPCWSTR path, HANDLE transaction) +{ + FIXME("(%s %p): semi-stub\n", debugstr_w(path), transaction); + return RemoveDirectoryW(path); +} + +/************************************************************************* + * CreateHardLinkTransactedA (KERNEL32.@) + */ +BOOL WINAPI CreateHardLinkTransactedA(LPCSTR link, LPCSTR target, LPSECURITY_ATTRIBUTES sa, HANDLE transaction) +{ + FIXME("(%s %s %p %p): stub\n", debugstr_a(link), debugstr_a(target), sa, transaction); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + +/************************************************************************* + * CreateHardLinkTransactedW (KERNEL32.@) + */ +BOOL WINAPI CreateHardLinkTransactedW(LPCWSTR link, LPCWSTR target, LPSECURITY_ATTRIBUTES sa, HANDLE transaction) +{ + FIXME("(%s %s %p %p): stub\n", debugstr_w(link), debugstr_w(target), sa, transaction); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + diff --git a/dll/win32/kernel32/winnls/string/lcformat.c b/dll/win32/kernel32/winnls/string/lcformat.c index 25a5e4e3259..bf0a90151e5 100644 --- a/dll/win32/kernel32/winnls/string/lcformat.c +++ b/dll/win32/kernel32/winnls/string/lcformat.c @@ -2163,7 +2163,6 @@ BOOL WINAPI EnumTimeFormatsW(TIMEFMT_ENUMPROCW proc, LCID lcid, DWORD flags) return NLS_EnumTimeFormats(&ctxt); } -#if _WIN32_WINNT >= 0x600 /************************************************************************** * EnumTimeFormatsEx (KERNEL32.@) */ @@ -2180,7 +2179,6 @@ BOOL WINAPI EnumTimeFormatsEx(TIMEFMT_ENUMPROCEX proc, const WCHAR *locale, DWOR return NLS_EnumTimeFormats(&ctxt); } -#endif /* _WIN32_WINNT >= 0x600 */ struct enumcalendar_context { enum enum_callback_type type; /* callback kind */ diff --git a/dll/win32/kernel32/winnls/string/locale.c b/dll/win32/kernel32/winnls/string/locale.c index f7d327e2142..6d9bb21f101 100644 --- a/dll/win32/kernel32/winnls/string/locale.c +++ b/dll/win32/kernel32/winnls/string/locale.c @@ -80,7 +80,6 @@ static const WCHAR szLangGroupsKeyName[] = { 'L','a','n','g','u','a','g','e',' ','G','r','o','u','p','s',0 }; -#if (WINVER >= 0x0600) /* Charset to codepage map, sorted by name. */ static const struct charset_entry { @@ -141,7 +140,6 @@ static const struct charset_entry { "KOI8U", 21866 }, { "UTF8", CP_UTF8 } }; -#endif struct locale_name @@ -332,7 +330,6 @@ static const union cptable *get_codepage_table( unsigned int codepage ) } #endif // !__REACTOS__ -#if (WINVER >= 0x0600) /*********************************************************************** * charset_cmp (internal) */ @@ -362,7 +359,6 @@ static UINT find_charset( const WCHAR *name ) if (entry) return entry->codepage; return 0; } -#endif // (WINVER >= 0x0600) static LANGID get_default_sublang( LANGID lang ) { @@ -382,7 +378,6 @@ static LANGID get_default_sublang( LANGID lang ) return lang; } -#if (WINVER >= 0x0600) /*********************************************************************** * find_locale_id_callback */ @@ -576,7 +571,6 @@ done: EnumResourceLanguagesW( kernel32_handle, (LPCWSTR)RT_STRING, (LPCWSTR)LOCALE_ILANGUAGE, find_locale_id_callback, (LPARAM)name ); } -#endif /*********************************************************************** @@ -1332,7 +1326,6 @@ BOOL WINAPI GetThreadPreferredUILanguages( DWORD flags, ULONG *count, WCHAR *buf return get_dummy_preferred_ui_language( flags, count, buf, size ); } -#if (WINVER >= 0x0600) /****************************************************************************** * GetUserPreferredUILanguages (KERNEL32.@) */ @@ -1358,7 +1351,6 @@ BOOL WINAPI GetUserPreferredUILanguages( DWORD flags, ULONG *count, WCHAR *buffe return get_dummy_preferred_ui_language( flags, count, buffer, size ); } -#endif // (WINVER >= 0x0600) #endif // !__REACTOS__ /*********************************************************************** @@ -1399,7 +1391,6 @@ LANGID WINAPI GetSystemDefaultUILanguage(void) return lang; } -#if (WINVER >= 0x0600) /*********************************************************************** * LocaleNameToLCID (KERNEL32.@) */ @@ -1441,8 +1432,6 @@ INT WINAPI LCIDToLocaleName( LCID lcid, LPWSTR name, INT count, DWORD flags ) return GetLocaleInfoW( lcid, LOCALE_SNAME | LOCALE_NOUSEROVERRIDE, name, count ); } -#endif - /****************************************************************************** * get_locale_registry_value @@ -1806,7 +1795,6 @@ INT WINAPI GetLocaleInfoW( LCID lcid, LCTYPE lctype, LPWSTR buffer, INT len ) return ret; } -#if (WINVER >= 0x0600) /****************************************************************************** * GetLocaleInfoEx (KERNEL32.@) */ @@ -1860,7 +1848,6 @@ GetUserDefaultLocaleName( TRACE( "GetUserDefaultLocaleName not implemented (lpLocaleName=%s, cchLocaleName=%d)\n", debugstr_w(lpLocaleName), cchLocaleName); return 0; } -#endif /****************************************************************************** * SetLocaleInfoA [KERNEL32.@] @@ -4152,8 +4139,7 @@ INT WINAPI CompareStringA(LCID lcid, DWORD flags, if (str2W != buf2W) HeapFree(GetProcessHeap(), 0, str2W); return ret; } - -#if (WINVER >= 0x0600) +#if (_WIN32_WINNT >= _WIN32_WINNT_VISTA) || (DLL_EXPORT_VERSION >= _WIN32_WINNT_VISTA) /****************************************************************************** * CompareStringOrdinal (KERNEL32.@) */ @@ -4174,8 +4160,7 @@ INT WINAPI CompareStringOrdinal(const WCHAR *str1, INT len1, const WCHAR *str2, if (ret > 0) return CSTR_GREATER_THAN; return CSTR_EQUAL; } -#endif // (WINVER >= 0x0600) - +#endif #ifndef __REACTOS__ /************************************************************************* * lstrcmp (KERNEL32.@) diff --git a/sdk/include/psdk/appmodel.h b/sdk/include/psdk/appmodel.h index 67bb5936192..69cf68e85a3 100644 --- a/sdk/include/psdk/appmodel.h +++ b/sdk/include/psdk/appmodel.h @@ -11,32 +11,69 @@ extern "C" { #endif + +typedef enum AppPolicyMediaFoundationCodecLoading +{ + AppPolicyMediaFoundationCodecLoading_All = 0, + AppPolicyMediaFoundationCodecLoading_InboxOnly = 1, +} AppPolicyMediaFoundationCodecLoading; + typedef enum AppPolicyProcessTerminationMethod { - AppPolicyProcessTerminationMethod_ExitProcess = 0, + AppPolicyProcessTerminationMethod_ExitProcess = 0, AppPolicyProcessTerminationMethod_TerminateProcess = 1, } AppPolicyProcessTerminationMethod; typedef enum AppPolicyThreadInitializationType { - AppPolicyThreadInitializationType_None = 0, + AppPolicyThreadInitializationType_None = 0, AppPolicyThreadInitializationType_InitializeWinRT = 1, } AppPolicyThreadInitializationType; typedef enum AppPolicyShowDeveloperDiagnostic { - AppPolicyShowDeveloperDiagnostic_None = 0, + AppPolicyShowDeveloperDiagnostic_None = 0, AppPolicyShowDeveloperDiagnostic_ShowUI = 1, } AppPolicyShowDeveloperDiagnostic; typedef enum AppPolicyWindowingModel { - AppPolicyWindowingModel_None = 0, - AppPolicyWindowingModel_Universal = 1, + AppPolicyWindowingModel_None = 0, + AppPolicyWindowingModel_Universal = 1, AppPolicyWindowingModel_ClassicDesktop = 2, - AppPolicyWindowingModel_ClassicPhone = 3 + AppPolicyWindowingModel_ClassicPhone = 3 } AppPolicyWindowingModel; +typedef struct PACKAGE_VERSION +{ + union + { + UINT64 Version; + struct + { + USHORT Revision; + USHORT Build; + USHORT Minor; + USHORT Major; + } + DUMMYSTRUCTNAME; + } + DUMMYUNIONNAME; +} +PACKAGE_VERSION; + +typedef struct PACKAGE_ID +{ + UINT32 reserved; + UINT32 processorArchitecture; + PACKAGE_VERSION version; + WCHAR *name; + WCHAR *publisher; + WCHAR *resourceId; + WCHAR *publisherId; +} +PACKAGE_ID; + WINBASEAPI _Check_return_ _Success_(return == ERROR_SUCCESS) diff --git a/sdk/include/psdk/ioringapi.h b/sdk/include/psdk/ioringapi.h new file mode 100644 index 00000000000..3ccbfc80654 --- /dev/null +++ b/sdk/include/psdk/ioringapi.h @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2023 Paul Gofman for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef __IORINGAPI_H_ +#define __IORINGAPI_H_ + +#include + +struct IORING_CAPABILITIES +{ + IORING_VERSION MaxVersion; + UINT32 MaxSubmissionQueueSize; + UINT32 MaxCompletionQueueSize; + IORING_FEATURE_FLAGS FeatureFlags; +}; +typedef struct IORING_CAPABILITIES IORING_CAPABILITIES; + +#ifdef __cplusplus +extern "C" { +#endif + +HRESULT WINAPI QueryIoRingCapabilities(IORING_CAPABILITIES *caps); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/sdk/include/psdk/processthreadsapi.h b/sdk/include/psdk/processthreadsapi.h index 913cc445c7f..73f42485cea 100644 --- a/sdk/include/psdk/processthreadsapi.h +++ b/sdk/include/psdk/processthreadsapi.h @@ -11,6 +11,15 @@ extern "C" { #endif +typedef enum _THREAD_INFORMATION_CLASS +{ + ThreadMemoryPriority, + ThreadAbsoluteCpuPriority, + ThreadDynamicCodePolicy, + ThreadPowerThrottling, + ThreadInformationClassMax +} THREAD_INFORMATION_CLASS; + WINBASEAPI BOOL WINAPI diff --git a/sdk/include/psdk/winbase.h b/sdk/include/psdk/winbase.h index 48310ab6a36..7c2dfa7b499 100644 --- a/sdk/include/psdk/winbase.h +++ b/sdk/include/psdk/winbase.h @@ -240,6 +240,11 @@ extern "C" { #define COPY_FILE_OPEN_SOURCE_FOR_WRITE 0x00000004 #define COPY_FILE_ALLOW_DECRYPTED_DESTINATION 0x00000008 +#if 1//(_WIN32_WINNT >= 0x0600) +#define COPY_FILE_COPY_SYMLINK 0x00000800 +#define COPY_FILE_NO_BUFFERING 0x00001000 +#endif + #define FILE_FLAG_WRITE_THROUGH 0x80000000 #define FILE_FLAG_OVERLAPPED 0x40000000 #define FILE_FLAG_NO_BUFFERING 0x20000000 @@ -646,7 +651,14 @@ extern "C" { #define INIT_ONCE_STATIC_INIT RTL_RUN_ONCE_INIT -#if (_WIN32_WINNT >= 0x0600) +#if 1//(_WIN32_WINNT >= 0x0600) +typedef enum _DEP_SYSTEM_POLICY_TYPE { + AlwaysOff = 0, + AlwaysOn = 1, + OptIn = 2, + OptOut = 3 +} DEP_SYSTEM_POLICY_TYPE; + #define PROCESS_DEP_ENABLE 0x00000001 #define PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION 0x00000002 #endif @@ -1439,7 +1451,7 @@ typedef enum _COMPUTER_NAME_FORMAT { } COMPUTER_NAME_FORMAT; #endif /* (_WIN32_WINNT >= 0x0500) */ -#if (_WIN32_WINNT >= 0x0600) +#if 1//(_WIN32_WINNT >= 0x0600) typedef RTL_SRWLOCK SRWLOCK, *PSRWLOCK; typedef RTL_CONDITION_VARIABLE CONDITION_VARIABLE, *PCONDITION_VARIABLE; #endif @@ -1451,25 +1463,54 @@ typedef struct _PROC_THREAD_ATTRIBUTE_LIST *PPROC_THREAD_ATTRIBUTE_LIST, *LPPROC #define PROC_THREAD_ATTRIBUTE_INPUT 0x00020000 #define PROC_THREAD_ATTRIBUTE_ADDITIVE 0x00040000 -typedef enum _PROC_THREAD_ATTRIBUTE_NUM { - ProcThreadAttributeParentProcess = 0, - ProcThreadAttributeHandleList = 2, - ProcThreadAttributeGroupAffinity = 3, - ProcThreadAttributeIdealProcessor = 5, - ProcThreadAttributeUmsThread = 6, - ProcThreadAttributeMitigationPolicy = 7, - ProcThreadAttributeSecurityCapabilities = 9, - ProcThreadAttributeProtectionLevel = 11, - ProcThreadAttributeJobList = 13, - ProcThreadAttributeChildProcessPolicy = 14, - ProcThreadAttributeAllApplicationPackagesPolicy = 15, - ProcThreadAttributeWin32kFilter = 16, - ProcThreadAttributeSafeOpenPromptOriginClaim = 17, +typedef enum _PROC_THREAD_ATTRIBUTE_NUM +{ + ProcThreadAttributeParentProcess = 0, + ProcThreadAttributeExtendedFlags = 1, + ProcThreadAttributeHandleList = 2, + ProcThreadAttributeGroupAffinity = 3, + ProcThreadAttributePreferredNode = 4, + ProcThreadAttributeIdealProcessor = 5, + ProcThreadAttributeUmsThread = 6, + ProcThreadAttributeMitigationPolicy = 7, + ProcThreadAttributeSecurityCapabilities = 9, + ProcThreadAttributeProtectionLevel = 11, + ProcThreadAttributeJobList = 13, + ProcThreadAttributeChildProcessPolicy = 14, + ProcThreadAttributeAllApplicationPackagesPolicy = 15, + ProcThreadAttributeWin32kFilter = 16, + ProcThreadAttributeSafeOpenPromptOriginClaim = 17, + ProcThreadAttributeDesktopAppPolicy = 18, + ProcThreadAttributePseudoConsole = 22, + ProcThreadAttributeMitigationAuditPolicy = 24, + ProcThreadAttributeMachineType = 25, + ProcThreadAttributeComponentFilter = 26, + ProcThreadAttributeEnableOptionalXStateFeatures = 27, + ProcThreadAttributeTrustedApp = 29, } PROC_THREAD_ATTRIBUTE_NUM; -#define PROC_THREAD_ATTRIBUTE_IDEAL_PROCESSOR (ProcThreadAttributeIdealProcessor | PROC_THREAD_ATTRIBUTE_THREAD | PROC_THREAD_ATTRIBUTE_INPUT) -#define PROC_THREAD_ATTRIBUTE_HANDLE_LIST (ProcThreadAttributeHandleList | PROC_THREAD_ATTRIBUTE_INPUT) + #define PROC_THREAD_ATTRIBUTE_PARENT_PROCESS (ProcThreadAttributeParentProcess | PROC_THREAD_ATTRIBUTE_INPUT) +#define PROC_THREAD_ATTRIBUTE_EXTENDED_FLAGS (ProcThreadAttributeExtendedFlags | PROC_THREAD_ATTRIBUTE_INPUT | PROC_THREAD_ATTRIBUTE_ADDITIVE) +#define PROC_THREAD_ATTRIBUTE_HANDLE_LIST (ProcThreadAttributeHandleList | PROC_THREAD_ATTRIBUTE_INPUT) +#define PROC_THREAD_ATTRIBUTE_GROUP_AFFINITY (ProcThreadAttributeGroupAffinity | PROC_THREAD_ATTRIBUTE_THREAD | PROC_THREAD_ATTRIBUTE_INPUT) +#define PROC_THREAD_ATTRIBUTE_PREFERRED_NODE (ProcThreadAttributePreferredNode | PROC_THREAD_ATTRIBUTE_INPUT) +#define PROC_THREAD_ATTRIBUTE_IDEAL_PROCESSOR (ProcThreadAttributeIdealProcessor | PROC_THREAD_ATTRIBUTE_THREAD | PROC_THREAD_ATTRIBUTE_INPUT) +#define PROC_THREAD_ATTRIBUTE_UMS_THREAD (ProcThreadAttributeUmsThread | PROC_THREAD_ATTRIBUTE_THREAD | PROC_THREAD_ATTRIBUTE_INPUT) +#define PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY (ProcThreadAttributeMitigationPolicy | PROC_THREAD_ATTRIBUTE_INPUT) +#define PROC_THREAD_ATTRIBUTE_SECURITY_CAPABILITIES (ProcThreadAttributeSecurityCapabilities | PROC_THREAD_ATTRIBUTE_INPUT) +#define PROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL (ProcThreadAttributeProtectionLevel | PROC_THREAD_ATTRIBUTE_INPUT) +#define PROC_THREAD_ATTRIBUTE_JOB_LIST (ProcThreadAttributeJobList | PROC_THREAD_ATTRIBUTE_INPUT) +#define PROC_THREAD_ATTRIBUTE_CHILD_PROCESS_POLICY (ProcThreadAttributeChildProcessPolicy | PROC_THREAD_ATTRIBUTE_INPUT) +#define PROC_THREAD_ATTRIBUTE_ALL_APPLICATION_PACKAGES_POLICY (ProcThreadAttributeAllApplicationPackagesPolicy | PROC_THREAD_ATTRIBUTE_INPUT) +#define PROC_THREAD_ATTRIBUTE_WIN32K_FILTER (ProcThreadAttributeWin32kFilter | PROC_THREAD_ATTRIBUTE_INPUT) +#define PROC_THREAD_ATTRIBUTE_DESKTOP_APP_POLICY (ProcThreadAttributeDesktopAppPolicy | PROC_THREAD_ATTRIBUTE_INPUT) +#define PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE (ProcThreadAttributePseudoConsole | PROC_THREAD_ATTRIBUTE_INPUT) +#define PROC_THREAD_ATTRIBUTE_MITIGATION_AUDIT_POLICY (ProcThreadAttributeMitigationAuditPolicy | PROC_THREAD_ATTRIBUTE_INPUT) +#define PROC_THREAD_ATTRIBUTE_MACHINE_TYPE (ProcThreadAttributeMachineType | PROC_THREAD_ATTRIBUTE_INPUT) +#define PROC_THREAD_ATTRIBUTE_COMPONENT_FILTER (ProcThreadAttributeComponentFilter | PROC_THREAD_ATTRIBUTE_INPUT) +#define PROC_THREAD_ATTRIBUTE_ENABLE_OPTIONAL_XSTATE_FEATURES (ProcThreadAttributeEnableOptionalXStateFeatures | PROC_THREAD_ATTRIBUTE_THREAD | PROC_THREAD_ATTRIBUTE_INPUT) + typedef DWORD (WINAPI *PFE_EXPORT_FUNC)( @@ -1494,7 +1535,7 @@ typedef LONG(CALLBACK *PTOP_LEVEL_EXCEPTION_FILTER)(LPEXCEPTION_POINTERS); typedef PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER; typedef void(APIENTRY *PAPCFUNC)(ULONG_PTR); typedef void(CALLBACK *PTIMERAPCROUTINE)(PVOID,DWORD,DWORD); -#if (_WIN32_WINNT >= 0x0600) +#if 1//(_WIN32_WINNT >= 0x0600) typedef DWORD (WINAPI *APPLICATION_RECOVERY_CALLBACK)(PVOID); #endif @@ -3985,6 +4026,28 @@ typedef BOOL _Inout_opt_ PVOID Parameter, _Outptr_opt_result_maybenull_ PVOID *Context); +typedef struct _REASON_CONTEXT +{ + ULONG Version; + DWORD Flags; + union + { + struct + { + HMODULE LocalizedReasonModule; + ULONG LocalizedReasonId; + ULONG ReasonStringCount; + LPWSTR *ReasonStrings; + } Detailed; + LPWSTR SimpleReasonString; + } Reason; +} REASON_CONTEXT, *PREASON_CONTEXT; + +#define RESOURCE_ENUM_LN 0x0001 +#define RESOURCE_ENUM_MUI 0x0002 +#define RESOURCE_ENUM_MUI_SYSTEM 0x0004 +#define RESOURCE_ENUM_VALIDATE 0x0008 + #if _WIN32_WINNT >= 0x0601 #define COPYFILE2_MESSAGE_COPY_OFFLOAD 0x00000001L diff --git a/sdk/include/psdk/winnls.h b/sdk/include/psdk/winnls.h index c76a2edf2f1..d386fd57ce1 100644 --- a/sdk/include/psdk/winnls.h +++ b/sdk/include/psdk/winnls.h @@ -495,7 +495,7 @@ extern "C" { #define LGRPID_GEORGIAN 16 #define LGRPID_ARMENIAN 17 -#if (WINVER >= 0x0500) +#if 1//(WINVER >= 0x0500) #define LOCALE_SYEARMONTH 0x1006 #define LOCALE_SENGCURRNAME 0x1007 #define LOCALE_SNATIVECURRNAME 0x1008 @@ -513,7 +513,7 @@ extern "C" { #define CAL_RETURN_NUMBER LOCALE_RETURN_NUMBER #define CAL_USE_CP_ACP LOCALE_USE_CP_ACP #endif /* (WINVER >= 0x0500) */ -#if WINVER >= 0x0600 +#if 1//WINVER >= 0x0600 #define IDN_ALLOW_UNASSIGNED 0x1 #define IDN_USE_STD3_ASCII_RULES 0x2 #define VS_ALLOW_LATIN 0x1 @@ -523,7 +523,7 @@ extern "C" { typedef long LONG_PTR; #endif -#if (WINVER >= 0x0600) +#if 1//(WINVER >= 0x0600) #define MUI_FULL_LANGUAGE 0x01 #define MUI_LANGUAGE_ID 0x04 #define MUI_LANGUAGE_NAME 0x08 diff --git a/sdk/include/psdk/winternl.h b/sdk/include/psdk/winternl.h index af2301842b5..a0448716239 100644 --- a/sdk/include/psdk/winternl.h +++ b/sdk/include/psdk/winternl.h @@ -467,19 +467,252 @@ NtQueryObject( _In_ ULONG ObjectInformationLength, _Out_opt_ PULONG ReturnLength); -typedef enum _SYSTEM_INFORMATION_CLASS -{ +typedef enum _SYSTEM_INFORMATION_CLASS { SystemBasicInformation = 0, + SystemCpuInformation = 1, SystemPerformanceInformation = 2, - SystemTimeOfDayInformation = 3, + SystemTimeOfDayInformation = 3, /* was SystemTimeInformation */ + SystemPathInformation = 4, SystemProcessInformation = 5, + SystemCallCountInformation = 6, + SystemDeviceInformation = 7, SystemProcessorPerformanceInformation = 8, + SystemFlagsInformation = 9, + SystemCallTimeInformation = 10, + SystemModuleInformation = 11, + SystemLocksInformation = 12, + SystemStackTraceInformation = 13, + SystemPagedPoolInformation = 14, + SystemNonPagedPoolInformation = 15, + SystemHandleInformation = 16, + SystemObjectInformation = 17, + SystemPageFileInformation = 18, + SystemVdmInstemulInformation = 19, + SystemVdmBopInformation = 20, + SystemFileCacheInformation = 21, + SystemPoolTagInformation = 22, SystemInterruptInformation = 23, + SystemDpcBehaviorInformation = 24, + SystemFullMemoryInformation = 25, + SystemNotImplemented6 = 25, + SystemLoadGdiDriverInformation = 26, + SystemUnloadGdiDriverInformation = 27, + SystemTimeAdjustmentInformation = 28, + SystemTimeAdjustment = 28, + SystemSummaryMemoryInformation = 29, + SystemMirrorMemoryInformation = 30, + SystemPerformanceTraceInformation = 31, + SystemObsolete0 = 32, SystemExceptionInformation = 33, + SystemCrashDumpStateInformation = 34, + SystemKernelDebuggerInformation = 35, + SystemContextSwitchInformation = 36, SystemRegistryQuotaInformation = 37, + SystemExtendServiceTableInformation = 38, + SystemPrioritySeparation = 39, + SystemVerifierAddDriverInformation = 40, + SystemVerifierRemoveDriverInformation = 41, + SystemProcessorIdleInformation = 42, + SystemLegacyDriverInformation = 43, + SystemCurrentTimeZoneInformation = 44, SystemLookasideInformation = 45, + SystemTimeSlipNotification = 46, + SystemSessionCreate = 47, + SystemSessionDetach = 48, + SystemSessionInformation = 49, + SystemRangeStartInformation = 50, + SystemVerifierInformation = 51, + SystemVerifierThunkExtend = 52, + SystemSessionProcessesInformation = 53, + SystemLoadGdiDriverInSystemSpace = 54, + SystemNumaProcessorMap = 55, + SystemPrefetcherInformation = 56, + SystemExtendedProcessInformation = 57, + SystemRecommendedSharedDataAlignment = 58, + SystemComPlusPackage = 59, + SystemNumaAvailableMemory = 60, + SystemProcessorPowerInformation = 61, + SystemEmulationBasicInformation = 62, + SystemEmulationProcessorInformation = 63, + SystemExtendedHandleInformation = 64, + SystemLostDelayedWriteInformation = 65, + SystemBigPoolInformation = 66, + SystemSessionPoolTagInformation = 67, + SystemSessionMappedViewInformation = 68, + SystemHotpatchInformation = 69, + SystemObjectSecurityMode = 70, + SystemWatchdogTimerHandler = 71, + SystemWatchdogTimerInformation = 72, + SystemLogicalProcessorInformation = 73, + SystemWow64SharedInformationObsolete = 74, + SystemRegisterFirmwareTableInformationHandler = 75, + SystemFirmwareTableInformation = 76, + SystemModuleInformationEx = 77, + SystemVerifierTriageInformation = 78, + SystemSuperfetchInformation = 79, + SystemMemoryListInformation = 80, + SystemFileCacheInformationEx = 81, + SystemThreadPriorityClientIdInformation = 82, + SystemProcessorIdleCycleTimeInformation = 83, + SystemVerifierCancellationInformation = 84, + SystemProcessorPowerInformationEx = 85, + SystemRefTraceInformation = 86, + SystemSpecialPoolInformation = 87, + SystemProcessIdInformation = 88, + SystemErrorPortInformation = 89, + SystemBootEnvironmentInformation = 90, + SystemHypervisorInformation = 91, + SystemVerifierInformationEx = 92, + SystemTimeZoneInformation = 93, + SystemImageFileExecutionOptionsInformation = 94, + SystemCoverageInformation = 95, + SystemPrefetchPatchInformation = 96, + SystemVerifierFaultsInformation = 97, + SystemSystemPartitionInformation = 98, + SystemSystemDiskInformation = 99, + SystemProcessorPerformanceDistribution = 100, + SystemNumaProximityNodeInformation = 101, + SystemDynamicTimeZoneInformation = 102, + SystemCodeIntegrityInformation = 103, + SystemProcessorMicrocodeUpdateInformation = 104, + SystemProcessorBrandString = 105, + SystemVirtualAddressInformation = 106, + SystemLogicalProcessorInformationEx = 107, + SystemProcessorCycleTimeInformation = 108, + SystemStoreInformation = 109, + SystemRegistryAppendString = 110, + SystemAitSamplingValue = 111, + SystemVhdBootInformation = 112, + SystemCpuQuotaInformation = 113, + SystemNativeBasicInformation = 114, + SystemErrorPortTimeouts = 115, + SystemLowPriorityIoInformation = 116, + SystemTpmBootEntropyInformation = 117, + SystemVerifierCountersInformation = 118, + SystemPagedPoolInformationEx = 119, + SystemSystemPtesInformationEx = 120, + SystemNodeDistanceInformation = 121, + SystemAcpiAuditInformation = 122, + SystemBasicPerformanceInformation = 123, + SystemQueryPerformanceCounterInformation = 124, + SystemSessionBigPoolInformation = 125, + SystemBootGraphicsInformation = 126, + SystemScrubPhysicalMemoryInformation = 127, + SystemBadPageInformation = 128, + SystemProcessorProfileControlArea = 129, + SystemCombinePhysicalMemoryInformation = 130, + SystemEntropyInterruptTimingInformation = 131, + SystemConsoleInformation = 132, + SystemPlatformBinaryInformation = 133, SystemPolicyInformation = 134, -} SYSTEM_INFORMATION_CLASS; + SystemHypervisorProcessorCountInformation = 135, + SystemDeviceDataInformation = 136, + SystemDeviceDataEnumerationInformation = 137, + SystemMemoryTopologyInformation = 138, + SystemMemoryChannelInformation = 139, + SystemBootLogoInformation = 140, + SystemProcessorPerformanceInformationEx = 141, + SystemCriticalProcessErrorLogInformation = 142, + SystemSecureBootPolicyInformation = 143, + SystemPageFileInformationEx = 144, + SystemSecureBootInformation = 145, + SystemEntropyInterruptTimingRawInformation = 146, + SystemPortableWorkspaceEfiLauncherInformation = 147, + SystemFullProcessInformation = 148, + SystemKernelDebuggerInformationEx = 149, + SystemBootMetadataInformation = 150, + SystemSoftRebootInformation = 151, + SystemElamCertificateInformation = 152, + SystemOfflineDumpConfigInformation = 153, + SystemProcessorFeaturesInformation = 154, + SystemRegistryReconciliationInformation = 155, + SystemEdidInformation = 156, + SystemManufacturingInformation = 157, + SystemEnergyEstimationConfigInformation = 158, + SystemHypervisorDetailInformation = 159, + SystemProcessorCycleStatsInformation = 160, + SystemVmGenerationCountInformation = 161, + SystemTrustedPlatformModuleInformation = 162, + SystemKernelDebuggerFlags = 163, + SystemCodeIntegrityPolicyInformation = 164, + SystemIsolatedUserModeInformation = 165, + SystemHardwareSecurityTestInterfaceResultsInformation = 166, + SystemSingleModuleInformation = 167, + SystemAllowedCpuSetsInformation = 168, + SystemVsmProtectionInformation = 169, + SystemInterruptCpuSetsInformation = 170, + SystemSecureBootPolicyFullInformation = 171, + SystemCodeIntegrityPolicyFullInformation = 172, + SystemAffinitizedInterruptProcessorInformation = 173, + SystemRootSiloInformation = 174, + SystemCpuSetInformation = 175, + SystemCpuSetTagInformation = 176, + SystemWin32WerStartCallout = 177, + SystemSecureKernelProfileInformation = 178, + SystemCodeIntegrityPlatformManifestInformation = 179, + SystemInterruptSteeringInformation = 180, + SystemSupportedProcessorArchitectures = 181, + SystemMemoryUsageInformation = 182, + SystemCodeIntegrityCertificateInformation = 183, + SystemPhysicalMemoryInformation = 184, + SystemControlFlowTransition = 185, + SystemKernelDebuggingAllowed = 186, + SystemActivityModerationExeState = 187, + SystemActivityModerationUserSettings = 188, + SystemCodeIntegrityPoliciesFullInformation = 189, + SystemCodeIntegrityUnlockInformation = 190, + SystemIntegrityQuotaInformation = 191, + SystemFlushInformation = 192, + SystemProcessorIdleMaskInformation = 193, + SystemSecureDumpEncryptionInformation = 194, + SystemWriteConstraintInformation = 195, + SystemKernelVaShadowInformation = 196, + SystemHypervisorSharedPageInformation = 197, + SystemFirmwareBootPerformanceInformation = 198, + SystemCodeIntegrityVerificationInformation = 199, + SystemFirmwarePartitionInformation = 200, + SystemSpeculationControlInformation = 201, + SystemDmaGuardPolicyInformation = 202, + SystemEnclaveLaunchControlInformation = 203, + SystemWorkloadAllowedCpuSetsInformation = 204, + SystemCodeIntegrityUnlockModeInformation = 205, + SystemLeapSecondInformation = 206, + SystemFlags2Information = 207, + SystemSecurityModelInformation = 208, + SystemCodeIntegritySyntheticCacheInformation = 209, + SystemFeatureConfigurationInformation = 210, + SystemFeatureConfigurationSectionInformation = 211, + SystemFeatureUsageSubscriptionInformation = 212, + SystemSecureSpeculationControlInformation = 213, + SystemSpacesBootInformation = 214, + SystemFwRamdiskInformation = 215, + SystemWheaIpmiHardwareInformation = 216, + SystemDifSetRuleClassInformation = 217, + SystemDifClearRuleClassInformation = 218, + SystemDifApplyPluginVerificationOnDriver = 219, + SystemDifRemovePluginVerificationOnDriver = 220, + SystemShadowStackInformation = 221, + SystemBuildVersionInformation = 222, + SystemPoolLimitInformation = 223, + SystemCodeIntegrityAddDynamicStore = 224, + SystemCodeIntegrityClearDynamicStores = 225, + SystemDifPoolTrackingInformation = 226, + SystemPoolZeroingInformation = 227, + SystemDpcWatchdogInformation = 228, + SystemDpcWatchdogInformation2 = 229, + SystemSupportedProcessorArchitectures2 = 230, + SystemSingleProcessorRelationshipInformation = 231, + SystemXfgCheckFailureInformation = 232, + SystemIommuStateInformation = 233, + SystemHypervisorMinrootInformation = 234, + SystemHypervisorBootPagesInformation = 235, + SystemPointerAuthInformation = 236, + SystemSecureKernelDebuggerInformation = 237, + SystemOriginalImageFeatureInformation = 238, +#ifdef __WINESRC__ + SystemWineVersionInformation = 1000, +#endif +} SYSTEM_INFORMATION_CLASS, *PSYSTEM_INFORMATION_CLASS; typedef struct _SYSTEM_BASIC_INFORMATION { diff --git a/sdk/include/reactos/wine/winternl.h b/sdk/include/reactos/wine/winternl.h index 39e1e3d8b82..3e25e8455ce 100644 --- a/sdk/include/reactos/wine/winternl.h +++ b/sdk/include/reactos/wine/winternl.h @@ -163,6 +163,50 @@ typedef struct _CLIENT_ID HANDLE UniqueThread; } CLIENT_ID, *PCLIENT_ID; +typedef struct +{ + UINT next; + UINT id; + ULONGLONG addr; + ULONGLONG size; + UINT args[4]; +} CROSS_PROCESS_WORK_ENTRY; + +typedef union +{ + struct + { + UINT first; + UINT counter; + }; + volatile LONGLONG hdr; +} CROSS_PROCESS_WORK_HDR; + +typedef struct +{ + CROSS_PROCESS_WORK_HDR free_list; + CROSS_PROCESS_WORK_HDR work_list; + ULONGLONG unknown[4]; + CROSS_PROCESS_WORK_ENTRY entries[1]; +} CROSS_PROCESS_WORK_LIST; + +typedef enum +{ + CrossProcessPreVirtualAlloc = 0, + CrossProcessPostVirtualAlloc = 1, + CrossProcessPreVirtualFree = 2, + CrossProcessPostVirtualFree = 3, + CrossProcessPreVirtualProtect = 4, + CrossProcessPostVirtualProtect = 5, + CrossProcessFlushCache = 6, + CrossProcessFlushCacheHeavy = 7, + CrossProcessMemoryWrite = 8, +} CROSS_PROCESS_NOTIFICATION; + +#define CROSS_PROCESS_LIST_FLUSH 0x80000000 +#define CROSS_PROCESS_LIST_ENTRY(list,pos) \ + ((CROSS_PROCESS_WORK_ENTRY *)((char *)(list) + ((pos) & ~CROSS_PROCESS_LIST_FLUSH))) + typedef struct _CURDIR { UNICODE_STRING DosPath; @@ -507,6 +551,19 @@ typedef enum _FILE_INFORMATION_CLASS { FileReplaceCompletionInformation, FileHardLinkFullIdInformation, FileIdExtdBothDirectoryInformation, + FileDispositionInformationEx, + FileRenameInformationEx, + FileRenameInformationExBypassAccessCheck, + FileDesiredStorageClassInformation, + FileStatInformation, + FileMemoryPartitionInformation, + FileStatLxInformation, + FileCaseSensitiveInformation, + FileLinkInformationEx, + FileLinkInformationExBypassAccessCheck, + FileStorageReserveIdInformation, + FileCaseSensitiveInformationForceAccessCheck, + FileKnownFolderInformation, FileMaximumInformation } FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS; @@ -792,6 +849,21 @@ typedef struct _FILE_REPARSE_POINT_INFORMATION { #define FILE_PIPE_CONNECTED_STATE 0x03 #define FILE_PIPE_CLOSING_STATE 0x04 +typedef struct _FILE_OBJECTID_BUFFER +{ + BYTE ObjectId[16]; + union + { + struct + { + BYTE BirthVolumeId[16]; + BYTE BirthObjectId[16]; + BYTE DomainId[16]; + } DUMMYSTRUCTNAME; + BYTE ExtendedInfo[48]; + } DUMMYUNIONNAME; +} FILE_OBJECTID_BUFFER, *PFILE_OBJECTID_BUFFER; + typedef struct _FILE_ALL_INFORMATION { FILE_BASIC_INFORMATION BasicInformation; FILE_STANDARD_INFORMATION StandardInformation; @@ -1003,7 +1075,7 @@ typedef enum _SYSTEM_INFORMATION_CLASS { } SYSTEM_INFORMATION_CLASS, *PSYSTEM_INFORMATION_CLASS; typedef enum _THREADINFOCLASS { - ThreadBasicInformation, + ThreadBasicInformation = 0, ThreadTimes, ThreadPriority, ThreadBasePriority, @@ -1037,7 +1109,32 @@ typedef enum _THREADINFOCLASS { ThreadUmsInformation, ThreadCounterProfiling, ThreadIdealProcessorEx, - MaxThreadInfoClass + ThreadCpuAccountingInformation, + ThreadSuspendCount, + ThreadHeterogeneousCpuPolicy, + ThreadContainerId, + ThreadNameInformation, + ThreadSelectedCpuSets, + ThreadSystemThreadInformation, + ThreadActualGroupAffinity, + ThreadDynamicCodePolicyInfo, + ThreadExplicitCaseSensitivity, + ThreadWorkOnBehalfTicket, + ThreadSubsystemInformation, + ThreadDbgkWerReportActive, + ThreadAttachContainer, + ThreadManageWritesToExecutableMemory, + ThreadPowerThrottlingState, + ThreadWorkloadClass, + ThreadCreateStateChange, + ThreadApplyStateChange, + ThreadStrongerBadHandleChecks, + ThreadEffectiveIoPriority, + ThreadEffectivePagePriority, + MaxThreadInfoClass, +#ifdef __WINESRC__ + ThreadWineNativeThreadName = 1000, +#endif } THREADINFOCLASS; typedef struct _THREAD_BASIC_INFORMATION @@ -2340,6 +2437,173 @@ typedef struct _SYSTEM_MODULE BYTE Name[MAXIMUM_FILENAME_LENGTH]; /* 1c/28 */ } SYSTEM_MODULE, *PSYSTEM_MODULE; +typedef struct _WOW64_CPURESERVED +{ + USHORT Flags; + USHORT Machine; + /* CONTEXT context */ + /* CONTEXT_EX *context_ex */ +} WOW64_CPURESERVED, *PWOW64_CPURESERVED; + +#define WOW64_CPURESERVED_FLAG_RESET_STATE 1 + +typedef struct _WOW64_CPU_AREA_INFO +{ + void *Context; + void *ContextEx; + void *ContextFlagsLocation; + WOW64_CPURESERVED *CpuReserved; + ULONG ContextFlag; + USHORT Machine; +} WOW64_CPU_AREA_INFO, *PWOW64_CPU_AREA_INFO; + +typedef struct _RTL_PROCESS_MODULE_INFORMATION +{ + PVOID Section; /* 00/00 */ + PVOID MappedBaseAddress; /* 04/08 */ + PVOID ImageBaseAddress; /* 08/10 */ + ULONG ImageSize; /* 0c/18 */ + ULONG Flags; /* 10/1c */ + WORD LoadOrderIndex; /* 14/20 */ + WORD InitOrderIndex; /* 16/22 */ + WORD LoadCount; /* 18/24 */ + WORD NameOffset; /* 1a/26 */ + BYTE Name[MAXIMUM_FILENAME_LENGTH]; /* 1c/28 */ +} RTL_PROCESS_MODULE_INFORMATION, *PRTL_PROCESS_MODULE_INFORMATION; + +typedef struct _RTL_PROCESS_MODULES +{ + ULONG ModulesCount; + RTL_PROCESS_MODULE_INFORMATION Modules[1]; /* FIXME: should be Modules[0] */ +} RTL_PROCESS_MODULES, *PRTL_PROCESS_MODULES; + +#define PROCESS_CREATE_FLAGS_BREAKAWAY 0x00000001 +#define PROCESS_CREATE_FLAGS_NO_DEBUG_INHERIT 0x00000002 +#define PROCESS_CREATE_FLAGS_INHERIT_HANDLES 0x00000004 +#define PROCESS_CREATE_FLAGS_OVERRIDE_ADDRESS_SPACE 0x00000008 +#define PROCESS_CREATE_FLAGS_LARGE_PAGES 0x00000010 +#define PROCESS_CREATE_FLAGS_LARGE_PAGE_SYSTEM_DLL 0x00000020 +#define PROCESS_CREATE_FLAGS_PROTECTED_PROCESS 0x00000040 +#define PROCESS_CREATE_FLAGS_CREATE_SESSION 0x00000080 +#define PROCESS_CREATE_FLAGS_INHERIT_FROM_PARENT 0x00000100 +#define PROCESS_CREATE_FLAGS_SUSPENDED 0x00000200 +#define PROCESS_CREATE_FLAGS_EXTENDED_UNKNOWN 0x00000400 + +typedef struct _RTL_PROCESS_MODULE_INFORMATION_EX +{ + USHORT NextOffset; + RTL_PROCESS_MODULE_INFORMATION BaseInfo; + ULONG ImageCheckSum; + ULONG TimeDateStamp; + void *DefaultBase; +} RTL_PROCESS_MODULE_INFORMATION_EX; + +#define THREAD_CREATE_FLAGS_CREATE_SUSPENDED 0x00000001 +#define THREAD_CREATE_FLAGS_SKIP_THREAD_ATTACH 0x00000002 +#define THREAD_CREATE_FLAGS_HIDE_FROM_DEBUGGER 0x00000004 +#define THREAD_CREATE_FLAGS_HAS_SECURITY_DESCRIPTOR 0x00000010 +#define THREAD_CREATE_FLAGS_ACCESS_CHECK_IN_TARGET 0x00000020 +#define THREAD_CREATE_FLAGS_INITIAL_THREAD 0x00000080 + +#ifdef __WINESRC__ + +/* Wine-specific exceptions codes */ + +#define EXCEPTION_WINE_STUB 0x80000100 /* stub entry point called */ +#define EXCEPTION_WINE_ASSERTION 0x80000101 /* assertion failed */ + +/* Wine extension; Windows doesn't have a name for this code. This is an + undocumented exception understood by MS VC debugger, allowing the program + to name a particular thread. */ +#define EXCEPTION_WINE_NAME_THREAD 0x406D1388 + +/* used for C++ exceptions in msvcrt + * parameters: + * [0] CXX_FRAME_MAGIC + * [1] pointer to exception object + * [2] pointer to type + */ +#define EXCEPTION_WINE_CXX_EXCEPTION 0xe06d7363 +#define EXCEPTION_WINE_CXX_FRAME_MAGIC 0x19930520 + +#endif + +typedef LONG (CALLBACK *PRTL_EXCEPTION_FILTER)(PEXCEPTION_POINTERS); + +typedef void (CALLBACK *PTP_IO_CALLBACK)(PTP_CALLBACK_INSTANCE,void*,void*,IO_STATUS_BLOCK*,PTP_IO); + +#define PS_ATTRIBUTE_THREAD 0x00010000 +#define PS_ATTRIBUTE_INPUT 0x00020000 +#define PS_ATTRIBUTE_ADDITIVE 0x00040000 + +typedef enum _PS_ATTRIBUTE_NUM +{ + PsAttributeParentProcess, + PsAttributeDebugPort, + PsAttributeToken, + PsAttributeClientId, + PsAttributeTebAddress, + PsAttributeImageName, + PsAttributeImageInfo, + PsAttributeMemoryReserve, + PsAttributePriorityClass, + PsAttributeErrorMode, + PsAttributeStdHandleInfo, + PsAttributeHandleList, + PsAttributeGroupAffinity, + PsAttributePreferredNode, + PsAttributeIdealProcessor, + PsAttributeUmsThread, + PsAttributeMitigationOptions, + PsAttributeProtectionLevel, + PsAttributeSecureProcess, + PsAttributeJobList, + PsAttributeChildProcessPolicy, + PsAttributeAllApplicationPackagesPolicy, + PsAttributeWin32kFilter, + PsAttributeSafeOpenPromptOriginClaim, + PsAttributeBnoIsolation, + PsAttributeDesktopAppPolicy, + PsAttributeChpe, + PsAttributeMitigationAuditOptions, + PsAttributeMachineType, + PsAttributeComponentFilter, + PsAttributeEnableOptionalXStateFeatures, + PsAttributeMax +} PS_ATTRIBUTE_NUM; + +#define PS_ATTRIBUTE_PARENT_PROCESS (PsAttributeParentProcess | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_ADDITIVE) +#define PS_ATTRIBUTE_DEBUG_PORT (PsAttributeDebugPort | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_ADDITIVE) +#define PS_ATTRIBUTE_TOKEN (PsAttributeToken | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_ADDITIVE) +#define PS_ATTRIBUTE_CLIENT_ID (PsAttributeClientId | PS_ATTRIBUTE_THREAD) +#define PS_ATTRIBUTE_TEB_ADDRESS (PsAttributeTebAddress | PS_ATTRIBUTE_THREAD) +#define PS_ATTRIBUTE_IMAGE_NAME (PsAttributeImageName | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_IMAGE_INFO (PsAttributeImageInfo) +#define PS_ATTRIBUTE_MEMORY_RESERVE (PsAttributeMemoryReserve | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_PRIORITY_CLASS (PsAttributePriorityClass | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_ERROR_MODE (PsAttributeErrorMode | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_STD_HANDLE_INFO (PsAttributeStdHandleInfo | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_HANDLE_LIST (PsAttributeHandleList | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_GROUP_AFFINITY (PsAttributeGroupAffinity | PS_ATTRIBUTE_THREAD | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_PREFERRED_NODE (PsAttributePreferredNode | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_IDEAL_PROCESSOR (PsAttributeIdealProcessor | PS_ATTRIBUTE_THREAD | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_MITIGATION_OPTIONS (PsAttributeMitigationOptions | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_PROTECTION_LEVEL (PsAttributeProtectionLevel | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_ADDITIVE) +#define PS_ATTRIBUTE_SECURE_PROCESS (PsAttributeSecureProcess | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_JOB_LIST (PsAttributeJobList | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_CHILD_PROCESS_POLICY (PsAttributeChildProcessPolicy | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_ALL_APPLICATION_PACKAGES_POLICY (PsAttributeAllApplicationPackagesPolicy | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_WIN32K_FILTER (PsAttributeWin32kFilter | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_SAFE_OPEN_PROMPT_ORIGIN_CLAIM (PsAttributeSafeOpenPromptOriginClaim | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_BNO_ISOLATION (PsAttributeBnoIsolation | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_DESKTOP_APP_POLICY (PsAttributeDesktopAppPolicy | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_CHPE (PsAttributeChpe | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_ADDITIVE) +#define PS_ATTRIBUTE_MITIGATION_AUDIT_OPTIONS (PsAttributeMitigationAuditOptions | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_MACHINE_TYPE (PsAttributeMachineType | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_ADDITIVE) +#define PS_ATTRIBUTE_COMPONENT_FILTER (PsAttributeComponentFilter | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_ENABLE_OPTIONAL_XSTATE_FEATURES (PsAttributeEnableOptionalXStateFeatures | PS_ATTRIBUTE_THREAD | PS_ATTRIBUTE_INPUT) + + typedef struct _SYSTEM_MODULE_INFORMATION { ULONG ModulesCount; @@ -2952,12 +3216,65 @@ NTSYSAPI NTSTATUS WINAPI RtlpNtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRI NTSYSAPI NTSTATUS WINAPI RtlpNtEnumerateSubKey(HANDLE,UNICODE_STRING *, ULONG); NTSYSAPI NTSTATUS WINAPI RtlpWaitForCriticalSection(RTL_CRITICAL_SECTION *); NTSYSAPI NTSTATUS WINAPI RtlpUnWaitCriticalSection(RTL_CRITICAL_SECTION *); +NTSYSAPI NTSTATUS WINAPI TpAllocCleanupGroup(TP_CLEANUP_GROUP **); +NTSYSAPI NTSTATUS WINAPI TpAllocIoCompletion(TP_IO **,HANDLE,PTP_IO_CALLBACK,void *,TP_CALLBACK_ENVIRON *); +NTSYSAPI NTSTATUS WINAPI TpAllocPool(TP_POOL **,PVOID); +NTSYSAPI NTSTATUS WINAPI TpAllocTimer(TP_TIMER **,PTP_TIMER_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *); +NTSYSAPI NTSTATUS WINAPI TpAllocWait(TP_WAIT **,PTP_WAIT_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *); +NTSYSAPI NTSTATUS WINAPI TpAllocWork(TP_WORK **,PTP_WORK_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *); +NTSYSAPI void WINAPI TpCallbackLeaveCriticalSectionOnCompletion(TP_CALLBACK_INSTANCE *,RTL_CRITICAL_SECTION *); +NTSYSAPI NTSTATUS WINAPI TpCallbackMayRunLong(TP_CALLBACK_INSTANCE *); +NTSYSAPI void WINAPI TpCallbackReleaseMutexOnCompletion(TP_CALLBACK_INSTANCE *,HANDLE); +NTSYSAPI void WINAPI TpCallbackReleaseSemaphoreOnCompletion(TP_CALLBACK_INSTANCE *,HANDLE,DWORD); +NTSYSAPI void WINAPI TpCallbackSetEventOnCompletion(TP_CALLBACK_INSTANCE *,HANDLE); +NTSYSAPI void WINAPI TpCallbackUnloadDllOnCompletion(TP_CALLBACK_INSTANCE *,HMODULE); +NTSYSAPI void WINAPI TpCancelAsyncIoOperation(TP_IO *); +NTSYSAPI void WINAPI TpDisassociateCallback(TP_CALLBACK_INSTANCE *); +NTSYSAPI BOOL WINAPI TpIsTimerSet(TP_TIMER *); +NTSYSAPI void WINAPI TpPostWork(TP_WORK *); +NTSYSAPI NTSTATUS WINAPI TpQueryPoolStackInformation(TP_POOL *, TP_POOL_STACK_INFORMATION *stack_info); +NTSYSAPI void WINAPI TpReleaseCleanupGroup(TP_CLEANUP_GROUP *); +NTSYSAPI void WINAPI TpReleaseCleanupGroupMembers(TP_CLEANUP_GROUP *,BOOL,PVOID); +NTSYSAPI void WINAPI TpReleaseIoCompletion(TP_IO *); +NTSYSAPI void WINAPI TpReleasePool(TP_POOL *); +NTSYSAPI void WINAPI TpReleaseTimer(TP_TIMER *); +NTSYSAPI void WINAPI TpReleaseWait(TP_WAIT *); +NTSYSAPI void WINAPI TpReleaseWork(TP_WORK *); +NTSYSAPI void WINAPI TpSetPoolMaxThreads(TP_POOL *,DWORD); +NTSYSAPI BOOL WINAPI TpSetPoolMinThreads(TP_POOL *,DWORD); +NTSYSAPI NTSTATUS WINAPI TpSetPoolStackInformation(TP_POOL *, TP_POOL_STACK_INFORMATION *stack_info); +NTSYSAPI void WINAPI TpSetTimer(TP_TIMER *, LARGE_INTEGER *,LONG,LONG); +NTSYSAPI void WINAPI TpSetWait(TP_WAIT *,HANDLE,LARGE_INTEGER *); +NTSYSAPI NTSTATUS WINAPI TpSimpleTryPost(PTP_SIMPLE_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *); +NTSYSAPI void WINAPI TpStartAsyncIoOperation(TP_IO *); +NTSYSAPI void WINAPI TpWaitForIoCompletion(TP_IO *,BOOL); +NTSYSAPI void WINAPI TpWaitForTimer(TP_TIMER *,BOOL); +NTSYSAPI void WINAPI TpWaitForWait(TP_WAIT *,BOOL); +NTSYSAPI void WINAPI TpWaitForWork(TP_WORK *,BOOL); NTSYSAPI NTSTATUS WINAPI vDbgPrintEx(ULONG,ULONG,LPCSTR,__ms_va_list); NTSYSAPI NTSTATUS WINAPI vDbgPrintExWithPrefix(LPCSTR,ULONG,ULONG,LPCSTR,__ms_va_list); /* 32-bit only functions */ -#ifndef _WIN64 +#ifdef _WIN64 +NTSYSAPI void WINAPI RtlOpenCrossProcessEmulatorWorkConnection(HANDLE,HANDLE*,void**); +NTSYSAPI NTSTATUS WINAPI RtlWow64GetCpuAreaInfo(WOW64_CPURESERVED*,ULONG,WOW64_CPU_AREA_INFO*); +NTSYSAPI NTSTATUS WINAPI RtlWow64GetCurrentCpuArea(USHORT*,void**,void**); +NTSYSAPI NTSTATUS WINAPI RtlWow64GetThreadContext(HANDLE,WOW64_CONTEXT*); +NTSYSAPI NTSTATUS WINAPI RtlWow64GetThreadSelectorEntry(HANDLE,THREAD_DESCRIPTOR_INFORMATION*,ULONG,ULONG*); +NTSYSAPI CROSS_PROCESS_WORK_ENTRY * WINAPI RtlWow64PopAllCrossProcessWorkFromWorkList(CROSS_PROCESS_WORK_HDR*,BOOLEAN*); +NTSYSAPI CROSS_PROCESS_WORK_ENTRY * WINAPI RtlWow64PopCrossProcessWorkFromFreeList(CROSS_PROCESS_WORK_HDR*); +NTSYSAPI BOOLEAN WINAPI RtlWow64PushCrossProcessWorkOntoFreeList(CROSS_PROCESS_WORK_HDR*,CROSS_PROCESS_WORK_ENTRY*); +NTSYSAPI BOOLEAN WINAPI RtlWow64PushCrossProcessWorkOntoWorkList(CROSS_PROCESS_WORK_HDR*,CROSS_PROCESS_WORK_ENTRY*,void**); +NTSYSAPI BOOLEAN WINAPI RtlWow64RequestCrossProcessHeavyFlush(CROSS_PROCESS_WORK_HDR*); +NTSYSAPI NTSTATUS WINAPI RtlWow64SetThreadContext(HANDLE,const WOW64_CONTEXT*); +#else +NTSYSAPI NTSTATUS WINAPI NtWow64AllocateVirtualMemory64(HANDLE,ULONG64*,ULONG64,ULONG64*,ULONG,ULONG); +NTSYSAPI NTSTATUS WINAPI NtWow64GetNativeSystemInformation(SYSTEM_INFORMATION_CLASS,void*,ULONG,ULONG*); +NTSYSAPI NTSTATUS WINAPI NtWow64IsProcessorFeaturePresent(UINT); +NTSYSAPI NTSTATUS WINAPI NtWow64QueryInformationProcess64(HANDLE,PROCESSINFOCLASS,void*,ULONG,ULONG*); +NTSYSAPI NTSTATUS WINAPI NtWow64ReadVirtualMemory64(HANDLE,ULONG64,void*,ULONG64,ULONG64*); +NTSYSAPI NTSTATUS WINAPI NtWow64WriteVirtualMemory64(HANDLE,ULONG64,const void*,ULONG64,ULONG64*); NTSYSAPI LONGLONG WINAPI RtlConvertLongToLargeInteger(LONG); NTSYSAPI ULONGLONG WINAPI RtlConvertUlongToLargeInteger(ULONG); NTSYSAPI LONGLONG WINAPI RtlEnlargedIntegerMultiply(INT,INT); @@ -2966,9 +3283,9 @@ NTSYSAPI UINT WINAPI RtlEnlargedUnsignedDivide(ULONGLONG,UINT,UINT *); NTSYSAPI LONGLONG WINAPI RtlExtendedMagicDivide(LONGLONG,LONGLONG,INT); NTSYSAPI LONGLONG WINAPI RtlExtendedIntegerMultiply(LONGLONG,INT); NTSYSAPI LONGLONG WINAPI RtlExtendedLargeIntegerDivide(LONGLONG,INT,INT *); +NTSYSAPI LONGLONG WINAPI RtlInterlockedCompareExchange64(LONGLONG*,LONGLONG,LONGLONG); NTSYSAPI LONGLONG WINAPI RtlLargeIntegerAdd(LONGLONG,LONGLONG); NTSYSAPI LONGLONG WINAPI RtlLargeIntegerArithmeticShift(LONGLONG,INT); -NTSYSAPI ULONGLONG WINAPI RtlLargeIntegerDivide( ULONGLONG,ULONGLONG,ULONGLONG *); NTSYSAPI LONGLONG WINAPI RtlLargeIntegerNegate(LONGLONG); NTSYSAPI LONGLONG WINAPI RtlLargeIntegerShiftLeft(LONGLONG,INT); NTSYSAPI LONGLONG WINAPI RtlLargeIntegerShiftRight(LONGLONG,INT); diff --git a/sdk/lib/rtl/CMakeLists.txt b/sdk/lib/rtl/CMakeLists.txt index 688d9258587..a409586f769 100644 --- a/sdk/lib/rtl/CMakeLists.txt +++ b/sdk/lib/rtl/CMakeLists.txt @@ -134,6 +134,7 @@ list(APPEND SOURCE_VISTA condvar.c runonce.c srw.c + threadpool.c utf8.c) add_library(rtl_vista ${SOURCE_VISTA})