Module: wine Branch: master Commit: 7995d6869a0b232dfb0956005ba8c863653a0845 URL: https://source.winehq.org/git/wine.git/?a=commit;h=7995d6869a0b232dfb0956005...
Author: Alexandre Julliard julliard@winehq.org Date: Thu Jul 1 15:30:48 2021 +0200
kernelbase: Implement ProcessIdToSessionId().
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/kernelbase/process.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/dlls/kernelbase/process.c b/dlls/kernelbase/process.c index 7296e085382..101d3fa3213 100644 --- a/dlls/kernelbase/process.c +++ b/dlls/kernelbase/process.c @@ -1024,11 +1024,20 @@ HANDLE WINAPI DECLSPEC_HOTPATCH OpenProcess( DWORD access, BOOL inherit, DWORD i /*********************************************************************** * ProcessIdToSessionId (kernelbase.@) */ -BOOL WINAPI DECLSPEC_HOTPATCH ProcessIdToSessionId( DWORD procid, DWORD *sessionid ) +BOOL WINAPI DECLSPEC_HOTPATCH ProcessIdToSessionId( DWORD pid, DWORD *id ) { - if (procid != GetCurrentProcessId()) FIXME( "Unsupported for other process %x\n", procid ); - *sessionid = NtCurrentTeb()->Peb->SessionId; - return TRUE; + HANDLE process; + NTSTATUS status; + + if (pid == GetCurrentProcessId()) + { + *id = NtCurrentTeb()->Peb->SessionId; + return TRUE; + } + if (!(process = OpenProcess( PROCESS_QUERY_LIMITED_INFORMATION, FALSE, pid ))) return FALSE; + status = NtQueryInformationProcess( process, ProcessSessionInformation, id, sizeof(*id), NULL ); + CloseHandle( process ); + return set_ntstatus( status ); }