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;
23 DosPathToSessionPathW (DWORD SessionID
, LPWSTR InPath
, LPWSTR
* OutPath
)
32 * Declare Function DosPathToSessionPath _
33 * Lib "kernel32.dll" _
34 * Alias "DosPathToSessionPathA" ( _
35 * ByVal SessionId As Long, _
36 * ByVal pInPath As String, _
37 * ByVal ppOutPath As String ) _
43 DosPathToSessionPathA (DWORD SessionId
, LPSTR InPath
, LPSTR
* OutPath
)
45 //DosPathToSessionPathW (SessionId,InPathW,OutPathW);
53 BOOL WINAPI
ProcessIdToSessionId (IN DWORD dwProcessId
,
54 OUT DWORD
* pSessionId
)
56 PROCESS_SESSION_INFORMATION SessionInformation
;
57 OBJECT_ATTRIBUTES ObjectAttributes
;
62 if(IsBadWritePtr(pSessionId
, sizeof(DWORD
)))
64 SetLastError(ERROR_INVALID_PARAMETER
);
68 ClientId
.UniqueProcess
= (HANDLE
)dwProcessId
;
69 ClientId
.UniqueThread
= 0;
71 InitializeObjectAttributes(&ObjectAttributes
, NULL
, 0, NULL
, NULL
);
73 Status
= NtOpenProcess(&ProcessHandle
,
74 PROCESS_QUERY_INFORMATION
,
77 if(NT_SUCCESS(Status
))
79 Status
= NtQueryInformationProcess(ProcessHandle
,
80 ProcessSessionInformation
,
82 sizeof(SessionInformation
),
84 NtClose(ProcessHandle
);
86 if(NT_SUCCESS(Status
))
88 *pSessionId
= SessionInformation
.SessionId
;
93 SetLastErrorByStatus(Status
);
101 WTSGetActiveConsoleSessionId (VOID
)
103 return ActiveConsoleSessionId
;