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
15 DWORD ActiveConsoleSessionId
= 0;
23 DosPathToSessionPathW(DWORD SessionID
,
34 * Declare Function DosPathToSessionPath _
35 * Lib "kernel32.dll" _
36 * Alias "DosPathToSessionPathA" ( _
37 * ByVal SessionId As Long, _
38 * ByVal pInPath As String, _
39 * ByVal ppOutPath As String ) _
46 DosPathToSessionPathA(DWORD SessionId
,
50 //DosPathToSessionPathW (SessionId,InPathW,OutPathW);
60 ProcessIdToSessionId(IN DWORD dwProcessId
,
61 OUT DWORD
*pSessionId
)
63 PROCESS_SESSION_INFORMATION SessionInformation
;
64 OBJECT_ATTRIBUTES ObjectAttributes
;
69 if (IsBadWritePtr(pSessionId
, sizeof(DWORD
)))
71 SetLastError(ERROR_INVALID_PARAMETER
);
75 ClientId
.UniqueProcess
= UlongToHandle(dwProcessId
);
76 ClientId
.UniqueThread
= 0;
78 InitializeObjectAttributes(&ObjectAttributes
, NULL
, 0, NULL
, NULL
);
80 Status
= NtOpenProcess(&ProcessHandle
,
81 PROCESS_QUERY_INFORMATION
,
84 if (NT_SUCCESS(Status
))
86 Status
= NtQueryInformationProcess(ProcessHandle
,
87 ProcessSessionInformation
,
89 sizeof(SessionInformation
),
91 NtClose(ProcessHandle
);
93 if (NT_SUCCESS(Status
))
95 *pSessionId
= SessionInformation
.SessionId
;
100 SetLastErrorByStatus(Status
);
109 WTSGetActiveConsoleSessionId(VOID
)
111 return ActiveConsoleSessionId
;