Alexandre Julliard : kernelbase: Implement ProcessIdToSessionId().
Alexandre Julliard
julliard at winehq.org
Thu Jul 1 15:53:50 CDT 2021
Module: wine
Branch: master
Commit: 7995d6869a0b232dfb0956005ba8c863653a0845
URL: https://source.winehq.org/git/wine.git/?a=commit;h=7995d6869a0b232dfb0956005ba8c863653a0845
Author: Alexandre Julliard <julliard at winehq.org>
Date: Thu Jul 1 15:30:48 2021 +0200
kernelbase: Implement ProcessIdToSessionId().
Signed-off-by: Alexandre Julliard <julliard at 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 );
}
More information about the wine-cvs
mailing list