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
13 DWORD ActiveConsoleSessionId
= 0;
20 DosPathToSessionPathW (DWORD SessionID
, LPWSTR InPath
, LPWSTR
* OutPath
)
28 * Declare Function DosPathToSessionPath _
29 * Lib "kernel32.dll" _
30 * Alias "DosPathToSessionPathA" ( _
31 * ByVal SessionId As Long, _
32 * ByVal pInPath As String, _
33 * ByVal ppOutPath As String ) _
39 DosPathToSessionPathA (DWORD SessionId
, LPSTR InPath
, LPSTR
* OutPath
)
41 //DosPathToSessionPathW (SessionId,InPathW,OutPathW);
48 BOOL WINAPI
ProcessIdToSessionId (IN DWORD dwProcessId
,
49 OUT DWORD
* pSessionId
)
51 PROCESS_SESSION_INFORMATION SessionInformation
;
52 OBJECT_ATTRIBUTES ObjectAttributes
;
57 if(IsBadWritePtr(pSessionId
, sizeof(DWORD
)))
59 SetLastError(ERROR_INVALID_PARAMETER
);
63 ClientId
.UniqueProcess
= (HANDLE
)(ULONG_PTR
)dwProcessId
;
64 ClientId
.UniqueThread
= 0;
66 InitializeObjectAttributes(&ObjectAttributes
, NULL
, 0, NULL
, NULL
);
68 Status
= NtOpenProcess(&ProcessHandle
,
69 PROCESS_QUERY_INFORMATION
,
72 if(NT_SUCCESS(Status
))
74 Status
= NtQueryInformationProcess(ProcessHandle
,
75 ProcessSessionInformation
,
77 sizeof(SessionInformation
),
79 NtClose(ProcessHandle
);
81 if(NT_SUCCESS(Status
))
83 *pSessionId
= SessionInformation
.SessionId
;
88 SetLastErrorByStatus(Status
);
96 WTSGetActiveConsoleSessionId (VOID
)
98 return ActiveConsoleSessionId
;