https://git.reactos.org/?p=reactos.git;a=commitdiff;h=90f14ccef3d9d344b7021…
commit 90f14ccef3d9d344b7021407b4c59a7234a19614
Author: Amine Khaldi <amine.khaldi(a)reactos.org>
AuthorDate: Sun Jan 21 22:01:34 2018 +0100
Commit: Amine Khaldi <amine.khaldi(a)reactos.org>
CommitDate: Sun Jan 21 22:01:34 2018 +0100
[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 a7f4c873d9..92a7396f54 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;
- }
-
- 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);
- }
+ *pCount = 0;
+ *ppProcessInfo = NULL;
- 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 f366990215..69bf99b9c6 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