From: Emanuele Aliberti Date: Thu, 23 Sep 2004 21:01:23 +0000 (+0000) Subject: Emanuele Aliberti X-Git-Tag: backups/alex_2gb+hdrtests@12432~159 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=bf3b5cc67761f64e835fe47ab6d2de38055727dd;hp=b0f758cf33d7a68244877528c186c52ec5e8ead0 Emanuele Aliberti - Some stubs for ts moved in process/session.c. - Implemented ProcessIdToSessionId. svn path=/trunk/; revision=11017 --- diff --git a/reactos/lib/kernel32/kernel32.def b/reactos/lib/kernel32/kernel32.def index 2bac4b656a0..eed507248d1 100644 --- a/reactos/lib/kernel32/kernel32.def +++ b/reactos/lib/kernel32/kernel32.def @@ -168,8 +168,8 @@ DisconnectNamedPipe@4 DnsHostnameToComputerNameA@12 DnsHostnameToComputerNameW@12 DosDateTimeToFileTime@12 -;DosPathToSessionPathA -;DosPathToSessionPathW +DosPathToSessionPathA@12 +DosPathToSessionPathW@12 DuplicateConsoleHandle@16 DuplicateHandle@28 EndUpdateResourceA@8 diff --git a/reactos/lib/kernel32/kernel32.rc b/reactos/lib/kernel32/kernel32.rc index b48d4ca768a..62d85e448a3 100644 --- a/reactos/lib/kernel32/kernel32.rc +++ b/reactos/lib/kernel32/kernel32.rc @@ -29,6 +29,7 @@ BEGIN VALUE "OriginalFilename", "kernel32.dll\0" VALUE "ProductName", RES_STR_PRODUCT_NAME VALUE "ProductVersion", RES_STR_PRODUCT_VERSION + VALUE "Build Date", RES_STR_BUILD_DATE END END BLOCK "VarFileInfo" diff --git a/reactos/lib/kernel32/misc/stubs.c b/reactos/lib/kernel32/misc/stubs.c index d3646da5480..cdd9dea3ef2 100644 --- a/reactos/lib/kernel32/misc/stubs.c +++ b/reactos/lib/kernel32/misc/stubs.c @@ -1,4 +1,4 @@ -/* $Id: stubs.c,v 1.91 2004/09/23 19:03:26 weiden Exp $ +/* $Id: stubs.c,v 1.92 2004/09/23 21:01:23 ea Exp $ * * KERNEL32.DLL stubs (STUB functions) * Remove from this file, if you implement them. @@ -1197,17 +1197,6 @@ WriteFileGather( return 0; } -/* - * @unimplemented - */ -DWORD -STDCALL -WTSGetActiveConsoleSessionId(VOID) -{ - STUB; - return 0; -} - /* * @unimplemented */ diff --git a/reactos/lib/kernel32/process/session.c b/reactos/lib/kernel32/process/session.c index d79e9e8fa45..385195a59cc 100644 --- a/reactos/lib/kernel32/process/session.c +++ b/reactos/lib/kernel32/process/session.c @@ -1,4 +1,4 @@ -/* $Id: session.c,v 1.5 2003/07/10 18:50:51 chorns Exp $ +/* $Id: session.c,v 1.6 2004/09/23 21:01:23 ea Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS system libraries @@ -10,22 +10,91 @@ */ #include +DWORD ActiveConsoleSessionId = 0; + + +/* + * @unimplemented + */ +DWORD STDCALL +DosPathToSessionPathW (DWORD SessionID, LPWSTR InPath, LPWSTR * OutPath) +{ + return 0; +} + /* + * From: ActiveVB.DE + * + * Declare Function DosPathToSessionPath _ + * Lib "kernel32.dll" _ + * Alias "DosPathToSessionPathA" ( _ + * ByVal SessionId As Long, _ + * ByVal pInPath As String, _ + * ByVal ppOutPath As String ) _ + * As Long + * * @unimplemented */ -BOOL STDCALL ProcessIdToSessionId ( - DWORD dwProcessId, - DWORD* pSessionId - ) +DWORD STDCALL +DosPathToSessionPathA (DWORD SessionId, LPSTR InPath, LPSTR * OutPath) +{ + //DosPathToSessionPathW (SessionId,InPathW,OutPathW); + return 0; +} + +/* + * @implemented + */ +BOOL STDCALL ProcessIdToSessionId (IN DWORD dwProcessId, + OUT DWORD* pSessionId) { - if (NULL != pSessionId) + NTSTATUS Status = STATUS_SUCCESS; + HANDLE ProcessHandle = INVALID_HANDLE_VALUE; + OBJECT_ATTRIBUTES Oa = { sizeof (OBJECT_ATTRIBUTES), 0, }; + DWORD SessionId = 0; + + if (IsBadWritePtr(pSessionId, sizeof (DWORD))) + { + SetLastError (ERROR_INVALID_DATA); //FIXME + goto ProcessIdToSessionId_FAIL_EXIT; + } + Status = NtOpenProcess ( + & ProcessHandle, + PROCESS_QUERY_INFORMATION, + & Oa, + NULL); + if (!NT_SUCCESS(Status)) + { + goto ProcessIdToSessionId_FAIL; + } + Status = NtQueryInformationProcess ( + ProcessHandle, + ProcessSessionInformation, + & SessionId, + sizeof SessionId, + NULL); + if (!NT_SUCCESS(Status)) { - /* TODO: implement TS */ - *pSessionId = 0; /* no TS */ - return TRUE; + NtClose (ProcessHandle); + goto ProcessIdToSessionId_FAIL; } + NtClose (ProcessHandle); + *pSessionId = SessionId; + return TRUE; + +ProcessIdToSessionId_FAIL: + SetLastErrorByStatus(Status); +ProcessIdToSessionId_FAIL_EXIT: return FALSE; } +/* + * @implemented + */ +DWORD STDCALL +WTSGetActiveConsoleSessionId (VOID) +{ + return ActiveConsoleSessionId; +} /* EOF */