From 90f14ccef3d9d344b7021407b4c59a7234a19614 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sun, 21 Jan 2018 22:01:34 +0100 Subject: [PATCH] [WTSAPI32] Sync with Wine 3.0. CORE-14225 --- dll/win32/wtsapi32/wtsapi32.c | 95 ++++------------------------------- media/doc/README.WINE | 2 +- 2 files changed, 10 insertions(+), 87 deletions(-) diff --git a/dll/win32/wtsapi32/wtsapi32.c b/dll/win32/wtsapi32/wtsapi32.c index a7f4c873d9c..92a7396f54e 100644 --- a/dll/win32/wtsapi32/wtsapi32.c +++ b/dll/win32/wtsapi32/wtsapi32.c @@ -28,9 +28,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(wtsapi); -/* FIXME: Inspect */ -#define GetCurrentProcessToken() ((HANDLE)~(ULONG_PTR)3) - /************************************************************ * WTSCloseServer (WTSAPI32.@) @@ -99,13 +96,8 @@ BOOL WINAPI WTSEnumerateProcessesA(HANDLE hServer, DWORD Reserved, DWORD Version BOOL WINAPI WTSEnumerateProcessesW(HANDLE hServer, DWORD Reserved, DWORD Version, PWTS_PROCESS_INFOW* ppProcessInfo, DWORD* pCount) { - WTS_PROCESS_INFOW *processInfo; - SYSTEM_PROCESS_INFORMATION *spi; - ULONG size = 0x4000; - void *buf = NULL; - NTSTATUS status; - DWORD count; - WCHAR *name; + FIXME("Stub %p 0x%08x 0x%08x %p %p\n", hServer, Reserved, Version, + ppProcessInfo, pCount); if (!ppProcessInfo || !pCount || Reserved != 0 || Version != 1) { @@ -113,71 +105,9 @@ BOOL WINAPI WTSEnumerateProcessesW(HANDLE hServer, DWORD Reserved, DWORD Version return FALSE; } - if (hServer != WTS_CURRENT_SERVER_HANDLE) - { - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return FALSE; - } + *pCount = 0; + *ppProcessInfo = NULL; - do - { - size *= 2; - HeapFree(GetProcessHeap(), 0, buf); - buf = HeapAlloc(GetProcessHeap(), 0, size); - if (!buf) - { - SetLastError(ERROR_OUTOFMEMORY); - return FALSE; - } - status = NtQuerySystemInformation(SystemProcessInformation, buf, size, NULL); - } - while (status == STATUS_INFO_LENGTH_MISMATCH); - - if (status != STATUS_SUCCESS) - { - HeapFree(GetProcessHeap(), 0, buf); - SetLastError(RtlNtStatusToDosError(status)); - return FALSE; - } - - spi = buf; - count = size = 0; - for (;;) - { - size += sizeof(WTS_PROCESS_INFOW) + spi->ProcessName.Length + sizeof(WCHAR); - count++; - if (spi->NextEntryOffset == 0) break; - spi = (SYSTEM_PROCESS_INFORMATION *)(((PCHAR)spi) + spi->NextEntryOffset); - } - - processInfo = HeapAlloc(GetProcessHeap(), 0, size); - if (!processInfo) - { - HeapFree(GetProcessHeap(), 0, buf); - SetLastError(ERROR_OUTOFMEMORY); - return FALSE; - } - name = (WCHAR *)&processInfo[count]; - - *ppProcessInfo = processInfo; - *pCount = count; - - spi = buf; - while (count--) - { - processInfo->SessionId = 0; - processInfo->ProcessId = HandleToUlong(spi->UniqueProcessId); - processInfo->pProcessName = name; - processInfo->pUserSid = NULL; - memcpy( name, spi->ProcessName.Buffer, spi->ProcessName.Length ); - name[ spi->ProcessName.Length/sizeof(WCHAR) ] = 0; - - processInfo++; - name += (spi->ProcessName.Length + sizeof(WCHAR))/sizeof(WCHAR); - spi = (SYSTEM_PROCESS_INFORMATION *)(((PCHAR)spi) + spi->NextEntryOffset); - } - - HeapFree(GetProcessHeap(), 0, buf); return TRUE; } @@ -241,7 +171,9 @@ BOOL WINAPI WTSEnumerateSessionsW(HANDLE hServer, DWORD Reserved, DWORD Version, */ void WINAPI WTSFreeMemory(PVOID pMemory) { - HeapFree(GetProcessHeap(), 0, pMemory); + static int once; + + if (!once++) FIXME("Stub %p\n", pMemory); } /************************************************************ @@ -314,16 +246,7 @@ BOOL WINAPI WTSQuerySessionInformationW( BOOL WINAPI WTSQueryUserToken(ULONG session_id, PHANDLE token) { FIXME("%u %p\n", session_id, token); - - if (!token) - { - SetLastError(ERROR_INVALID_PARAMETER); - return FALSE; - } - - return DuplicateHandle(GetCurrentProcess(), GetCurrentProcessToken(), - GetCurrentProcess(), token, - 0, FALSE, DUPLICATE_SAME_ACCESS); + return FALSE; } /************************************************************ @@ -357,7 +280,7 @@ BOOL WINAPI WTSRegisterSessionNotification(HWND hWnd, DWORD dwFlags) } /************************************************************ - * WTSRegisterSessionNotification (WTSAPI32.@) + * WTSRegisterSessionNotificationEx (WTSAPI32.@) */ BOOL WINAPI WTSRegisterSessionNotificationEx(HANDLE hServer, HWND hWnd, DWORD dwFlags) { diff --git a/media/doc/README.WINE b/media/doc/README.WINE index f366990215a..69bf99b9c66 100644 --- a/media/doc/README.WINE +++ b/media/doc/README.WINE @@ -212,7 +212,7 @@ reactos/dll/win32/wmi # Synced to WineStaging-2.9 reactos/dll/win32/wmiutils # Synced to WineStaging-2.9 reactos/dll/win32/wmvcore # Synced to Wine-3.0 reactos/dll/win32/wshom.ocx # Synced to Wine-3.0 -reactos/dll/win32/wtsapi32 # Synced to WineStaging-2.9 +reactos/dll/win32/wtsapi32 # Synced to Wine-3.0 reactos/dll/win32/wuapi # Synced to WineStaging-2.9 reactos/dll/win32/xinput1_1 # Synced to WineStaging-2.9 reactos/dll/win32/xinput1_2 # Synced to WineStaging-2.9