3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS system libraries
5 * FILE: lib/kernel32/proc/session.c
6 * PURPOSE: Win32 session (TS) functions
7 * PROGRAMMER: Emanuele Aliberti
12 #include <wine/debug.h>
14 WINE_DEFAULT_DEBUG_CHANNEL(kernel32session
);
16 DWORD ActiveConsoleSessionId
= 0;
24 DosPathToSessionPathW(DWORD SessionID
,
35 * Declare Function DosPathToSessionPath _
36 * Lib "kernel32.dll" _
37 * Alias "DosPathToSessionPathA" ( _
38 * ByVal SessionId As Long, _
39 * ByVal pInPath As String, _
40 * ByVal ppOutPath As String ) _
47 DosPathToSessionPathA(DWORD SessionId
,
51 //DosPathToSessionPathW (SessionId,InPathW,OutPathW);
61 ProcessIdToSessionId(IN DWORD dwProcessId
,
62 OUT DWORD
*pSessionId
)
64 PROCESS_SESSION_INFORMATION SessionInformation
;
65 OBJECT_ATTRIBUTES ObjectAttributes
;
70 if (IsBadWritePtr(pSessionId
, sizeof(DWORD
)))
72 SetLastError(ERROR_INVALID_PARAMETER
);
76 ClientId
.UniqueProcess
= UlongToHandle(dwProcessId
);
77 ClientId
.UniqueThread
= 0;
79 InitializeObjectAttributes(&ObjectAttributes
, NULL
, 0, NULL
, NULL
);
81 Status
= NtOpenProcess(&ProcessHandle
,
82 PROCESS_QUERY_INFORMATION
,
85 if (NT_SUCCESS(Status
))
87 Status
= NtQueryInformationProcess(ProcessHandle
,
88 ProcessSessionInformation
,
90 sizeof(SessionInformation
),
92 NtClose(ProcessHandle
);
94 if (NT_SUCCESS(Status
))
96 *pSessionId
= SessionInformation
.SessionId
;
101 SetLastErrorByStatus(Status
);
110 WTSGetActiveConsoleSessionId(VOID
)
112 return ActiveConsoleSessionId
;