1 /* $Id: session.c,v 1.6 2004/09/23 21:01:23 ea Exp $
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 STDCALL
ProcessIdToSessionId (IN DWORD dwProcessId
,
49 OUT DWORD
* pSessionId
)
51 NTSTATUS Status
= STATUS_SUCCESS
;
52 HANDLE ProcessHandle
= INVALID_HANDLE_VALUE
;
53 OBJECT_ATTRIBUTES Oa
= { sizeof (OBJECT_ATTRIBUTES
), 0, };
56 if (IsBadWritePtr(pSessionId
, sizeof (DWORD
)))
58 SetLastError (ERROR_INVALID_DATA
); //FIXME
59 goto ProcessIdToSessionId_FAIL_EXIT
;
61 Status
= NtOpenProcess (
63 PROCESS_QUERY_INFORMATION
,
66 if (!NT_SUCCESS(Status
))
68 goto ProcessIdToSessionId_FAIL
;
70 Status
= NtQueryInformationProcess (
72 ProcessSessionInformation
,
76 if (!NT_SUCCESS(Status
))
78 NtClose (ProcessHandle
);
79 goto ProcessIdToSessionId_FAIL
;
81 NtClose (ProcessHandle
);
82 *pSessionId
= SessionId
;
85 ProcessIdToSessionId_FAIL
:
86 SetLastErrorByStatus(Status
);
87 ProcessIdToSessionId_FAIL_EXIT
:
95 WTSGetActiveConsoleSessionId (VOID
)
97 return ActiveConsoleSessionId
;