ReactOS.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
List overview
Download
Ros-diffs
August 2013
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
ros-diffs@reactos.org
10 participants
327 discussions
Start a n
N
ew thread
[ion] 59872: [BASESRV]: Stubplement all the APIs so that our IDs match with Windows. Windows kernel32 now dies when calling NLSCreateSection.
by ion@svn.reactos.org
Author: ion Date: Thu Aug 29 17:00:10 2013 New Revision: 59872 URL:
http://svn.reactos.org/svn/reactos?rev=59872&view=rev
Log: [BASESRV]: Stubplement all the APIs so that our IDs match with Windows. Windows kernel32 now dies when calling NLSCreateSection. Added: trunk/reactos/subsystems/win/basesrv/nls.c (with props) Modified: trunk/reactos/include/reactos/subsys/win/basemsg.h trunk/reactos/subsystems/win/basesrv/CMakeLists.txt trunk/reactos/subsystems/win/basesrv/api.h trunk/reactos/subsystems/win/basesrv/init.c trunk/reactos/subsystems/win/basesrv/proc.c trunk/reactos/subsystems/win/basesrv/vdm.c Modified: trunk/reactos/include/reactos/subsys/win/basemsg.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/subsys/win…
============================================================================== --- trunk/reactos/include/reactos/subsys/win/basemsg.h [iso-8859-1] (original) +++ trunk/reactos/include/reactos/subsys/win/basemsg.h [iso-8859-1] Thu Aug 29 17:00:10 2013 @@ -22,33 +22,32 @@ BasepCreateThread, BasepGetTempFile, BasepExitProcess, - // BasepDebugProcess, - // BasepCheckVDM, - // BasepUpdateVDMEntry, - // BasepGetNextVDMCommand, - // BasepExitVDM, - // BasepIsFirstVDM, - // BasepGetVDMExitCode, - // BasepSetReenterCount, + BasepDebugProcess, + BasepCheckVDM, + BasepUpdateVDMEntry, + BasepGetNextVDMCommand, + BasepExitVDM, + BasepIsFirstVDM, + BasepGetVDMExitCode, + BasepSetReenterCount, BasepSetProcessShutdownParam, BasepGetProcessShutdownParam, - // BasepNlsSetUserInfo, - // BasepNlsSetMultipleUserInfo, - // BasepNlsCreateSection, - // BasepSetVDMCurDirs, - // BasepGetVDMCurDirs, - // BasepBatNotification, - // BasepRegisterWowExec, + BasepNlsSetUserInfo, + BasepNlsSetMultipleUserInfo, + BasepNlsCreateSection, + BasepSetVDMCurDirs, + BasepGetVDMCurDirs, + BasepBatNotification, + BasepRegisterWowExec, BasepSoundSentryNotification, - // BasepRefreshIniFileMapping, + BasepRefreshIniFileMapping, BasepDefineDosDevice, - // BasepSetTermsrvAppInstallMode, - // BasepNlsUpdateCacheCount, - // BasepSetTermsrvClientTimeZone, - // BasepSxsCreateActivationContext, - // BasepRegisterThread, - // BasepNlsGetUserInfo, - + BasepSetTermsrvAppInstallMode, + BasepNlsUpdateCacheCount, + BasepSetTermsrvClientTimeZone, + BasepSxsCreateActivationContext, + BasepRegisterThread, + BasepNlsGetUserInfo, BasepMaxApiNumber } BASESRV_API_NUMBER, *PBASESRV_API_NUMBER; Modified: trunk/reactos/subsystems/win/basesrv/CMakeLists.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win/basesrv/CMa…
============================================================================== --- trunk/reactos/subsystems/win/basesrv/CMakeLists.txt [iso-8859-1] (original) +++ trunk/reactos/subsystems/win/basesrv/CMakeLists.txt [iso-8859-1] Thu Aug 29 17:00:10 2013 @@ -8,6 +8,8 @@ init.c proc.c sndsntry.c + vdm.c + nls.c basesrv.rc ${CMAKE_CURRENT_BINARY_DIR}/basesrv.def) Modified: trunk/reactos/subsystems/win/basesrv/api.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win/basesrv/api…
============================================================================== --- trunk/reactos/subsystems/win/basesrv/api.h [iso-8859-1] (original) +++ trunk/reactos/subsystems/win/basesrv/api.h [iso-8859-1] Thu Aug 29 17:00:10 2013 @@ -21,8 +21,34 @@ CSR_API(BaseSrvExitProcess); CSR_API(BaseSrvGetProcessShutdownParam); CSR_API(BaseSrvSetProcessShutdownParam); +CSR_API(BaseSrvDebugProcess); +CSR_API(BaseSrvRegisterThread); +CSR_API(BaseSrvSxsCreateActivationContext); +CSR_API(BaseSrvSetTermsrvAppInstallMode); +CSR_API(BaseSrvSetTermsrvClientTimeZone); /* sndsntry.c */ CSR_API(BaseSrvSoundSentryNotification); +/* vdm.c */ +CSR_API(BaseSrvCheckVDM); +CSR_API(BaseSrvUpdateVDMEntry); +CSR_API(BaseSrvGetNextVDMCommand); +CSR_API(BaseSrvExitVDM); +CSR_API(BaseSrvIsFirstVDM); +CSR_API(BaseSrvGetVDMExitCode); +CSR_API(BaseSrvSetReenterCount); +CSR_API(BaseSrvSetVDMCurDirs); +CSR_API(BaseSrvGetVDMCurDirs); +CSR_API(BaseSrvBatNotification); +CSR_API(BaseSrvRegisterWowExec); +CSR_API(BaseSrvRefreshIniFileMapping); + +/* nls.c */ +CSR_API(BaseSrvNlsSetUserInfo); +CSR_API(BaseSrvNlsSetMultipleUserInfo); +CSR_API(BaseSrvNlsCreateSection); +CSR_API(BaseSrvNlsUpdateCacheCount); +CSR_API(BaseSrvNlsGetUserInfo); + /* EOF */ Modified: trunk/reactos/subsystems/win/basesrv/init.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win/basesrv/ini…
============================================================================== --- trunk/reactos/subsystems/win/basesrv/init.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win/basesrv/init.c [iso-8859-1] Thu Aug 29 17:00:10 2013 @@ -30,32 +30,32 @@ BaseSrvCreateThread, BaseSrvGetTempFile, BaseSrvExitProcess, - // BaseSrvDebugProcess, - // BaseSrvCheckVDM, - // BaseSrvUpdateVDMEntry, - // BaseSrvGetNextVDMCommand, - // BaseSrvExitVDM, - // BaseSrvIsFirstVDM, - // BaseSrvGetVDMExitCode, - // BaseSrvSetReenterCount, + BaseSrvDebugProcess, + BaseSrvCheckVDM, + BaseSrvUpdateVDMEntry, + BaseSrvGetNextVDMCommand, + BaseSrvExitVDM, + BaseSrvIsFirstVDM, + BaseSrvGetVDMExitCode, + BaseSrvSetReenterCount, BaseSrvSetProcessShutdownParam, BaseSrvGetProcessShutdownParam, - // BaseSrvNlsSetUserInfo, - // BaseSrvNlsSetMultipleUserInfo, - // BaseSrvNlsCreateSection, - // BaseSrvSetVDMCurDirs, - // BaseSrvGetVDMCurDirs, - // BaseSrvBatNotification, - // BaseSrvRegisterWowExec, + BaseSrvNlsSetUserInfo, + BaseSrvNlsSetMultipleUserInfo, + BaseSrvNlsCreateSection, + BaseSrvSetVDMCurDirs, + BaseSrvGetVDMCurDirs, + BaseSrvBatNotification, + BaseSrvRegisterWowExec, BaseSrvSoundSentryNotification, - // BaseSrvRefreshIniFileMapping, + BaseSrvRefreshIniFileMapping, BaseSrvDefineDosDevice, - // BaseSrvSetTermsrvAppInstallMode, - // BaseSrvNlsUpdateCacheCount, - // BaseSrvSetTermsrvClientTimeZone, - // BaseSrvSxsCreateActivationContext, - // BaseSrvRegisterThread, - // BaseSrvNlsGetUserInfo, + BaseSrvSetTermsrvAppInstallMode, + BaseSrvNlsUpdateCacheCount, + BaseSrvSetTermsrvClientTimeZone, + BaseSrvSxsCreateActivationContext, + BaseSrvRegisterThread, + BaseSrvNlsGetUserInfo, }; BOOLEAN BaseServerApiServerValidTable[BasepMaxApiNumber - BASESRV_FIRST_API_NUMBER] = @@ -64,32 +64,32 @@ TRUE, // BaseSrvCreateThread TRUE, // BaseSrvGetTempFile FALSE, // BaseSrvExitProcess - // FALSE, // BaseSrvDebugProcess - // TRUE, // BaseSrvCheckVDM - // TRUE, // BaseSrvUpdateVDMEntry - // TRUE, // BaseSrvGetNextVDMCommand - // TRUE, // BaseSrvExitVDM - // TRUE, // BaseSrvIsFirstVDM - // TRUE, // BaseSrvGetVDMExitCode - // TRUE, // BaseSrvSetReenterCount + FALSE, // BaseSrvDebugProcess + TRUE, // BaseSrvCheckVDM + TRUE, // BaseSrvUpdateVDMEntry + TRUE, // BaseSrvGetNextVDMCommand + TRUE, // BaseSrvExitVDM + TRUE, // BaseSrvIsFirstVDM + TRUE, // BaseSrvGetVDMExitCode + TRUE, // BaseSrvSetReenterCount TRUE, // BaseSrvSetProcessShutdownParam TRUE, // BaseSrvGetProcessShutdownParam - // TRUE, // BaseSrvNlsSetUserInfo - // TRUE, // BaseSrvNlsSetMultipleUserInfo - // TRUE, // BaseSrvNlsCreateSection - // TRUE, // BaseSrvSetVDMCurDirs - // TRUE, // BaseSrvGetVDMCurDirs - // TRUE, // BaseSrvBatNotification - // TRUE, // BaseSrvRegisterWowExec + TRUE, // BaseSrvNlsSetUserInfo + TRUE, // BaseSrvNlsSetMultipleUserInfo + TRUE, // BaseSrvNlsCreateSection + TRUE, // BaseSrvSetVDMCurDirs + TRUE, // BaseSrvGetVDMCurDirs + TRUE, // BaseSrvBatNotification + TRUE, // BaseSrvRegisterWowExec TRUE, // BaseSrvSoundSentryNotification - // TRUE, // BaseSrvRefreshIniFileMapping + TRUE, // BaseSrvRefreshIniFileMapping TRUE, // BaseSrvDefineDosDevice - // FALSE, // BaseSrvSetTermsrvAppInstallMode - // FALSE, // BaseSrvNlsUpdateCacheCount - // FALSE, // BaseSrvSetTermsrvClientTimeZone - // FALSE, // BaseSrvSxsCreateActivationContext - // FALSE, // BaseSrvRegisterThread - // FALSE, // BaseSrvNlsGetUserInfo + FALSE, // BaseSrvSetTermsrvAppInstallMode + FALSE, // BaseSrvNlsUpdateCacheCount + FALSE, // BaseSrvSetTermsrvClientTimeZone + FALSE, // BaseSrvSxsCreateActivationContext + FALSE, // BaseSrvRegisterThread + FALSE, // BaseSrvNlsGetUserInfo }; PCHAR BaseServerApiNameTable[BasepMaxApiNumber - BASESRV_FIRST_API_NUMBER] = @@ -98,32 +98,32 @@ "BaseCreateThread", "BaseGetTempFile", "BaseExitProcess", - // "BaseDebugProcess", - // "BaseCheckVDM", - // "BaseUpdateVDMEntry", - // "BaseGetNextVDMCommand", - // "BaseExitVDM", - // "BaseIsFirstVDM", - // "BaseGetVDMExitCode", - // "BaseSetReenterCount", + "BaseDebugProcess", + "BaseCheckVDM", + "BaseUpdateVDMEntry", + "BaseGetNextVDMCommand", + "BaseExitVDM", + "BaseIsFirstVDM", + "BaseGetVDMExitCode", + "BaseSetReenterCount", "BaseSetProcessShutdownParam", "BaseGetProcessShutdownParam", - // "BaseNlsSetUserInfo", - // "BaseNlsSetMultipleUserInfo", - // "BaseNlsCreateSection", - // "BaseSetVDMCurDirs", - // "BaseGetVDMCurDirs", - // "BaseBatNotification", - // "BaseRegisterWowExec", + "BaseNlsSetUserInfo", + "BaseNlsSetMultipleUserInfo", + "BaseNlsCreateSection", + "BaseSetVDMCurDirs", + "BaseGetVDMCurDirs", + "BaseBatNotification", + "BaseRegisterWowExec", "BaseSoundSentryNotification", - // "BaseRefreshIniFileMapping", + "BaseRefreshIniFileMapping", "BaseDefineDosDevice", - // "BaseSetTermsrvAppInstallMode", - // "BaseNlsUpdateCacheCount", - // "BaseSetTermsrvClientTimeZone", - // "BaseSxsCreateActivationContext", - // "BaseRegisterThread", - // "BaseNlsGetUserInfo", + "BaseSetTermsrvAppInstallMode", + "BaseNlsUpdateCacheCount", + "BaseSetTermsrvClientTimeZone", + "BaseSxsCreateActivationContext", + "BaseRegisterThread", + "BaseNlsGetUserInfo", }; Added: trunk/reactos/subsystems/win/basesrv/nls.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win/basesrv/nls…
============================================================================== --- trunk/reactos/subsystems/win/basesrv/nls.c (added) +++ trunk/reactos/subsystems/win/basesrv/nls.c [iso-8859-1] Thu Aug 29 17:00:10 2013 @@ -0,0 +1,49 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS Base API Server DLL + * FILE: subsystems/win/basesrv/vdm.c + * PURPOSE: Virtual DOS Machines (VDM) Support + * PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca(a)sfr.fr) + */ + +/* INCLUDES *******************************************************************/ + +#include "basesrv.h" + +#define NDEBUG +#include <debug.h> + +/* PUBLIC SERVER APIS *********************************************************/ + +CSR_API(BaseSrvNlsSetUserInfo) +{ + DPRINT1("%s not yet implemented\n", __FUNCTION__); + return STATUS_NOT_IMPLEMENTED; +} + +CSR_API(BaseSrvNlsSetMultipleUserInfo) +{ + DPRINT1("%s not yet implemented\n", __FUNCTION__); + return STATUS_NOT_IMPLEMENTED; +} + +CSR_API(BaseSrvNlsCreateSection) + +{ + DPRINT1("%s not yet implemented\n", __FUNCTION__); + return STATUS_NOT_IMPLEMENTED; +} + +CSR_API(BaseSrvNlsUpdateCacheCount) +{ + DPRINT1("%s not yet implemented\n", __FUNCTION__); + return STATUS_NOT_IMPLEMENTED; +} + +CSR_API(BaseSrvNlsGetUserInfo) +{ + DPRINT1("%s not yet implemented\n", __FUNCTION__); + return STATUS_NOT_IMPLEMENTED; +} + +/* EOF */ Propchange: trunk/reactos/subsystems/win/basesrv/nls.c ------------------------------------------------------------------------------ svn:eol-style = native Modified: trunk/reactos/subsystems/win/basesrv/proc.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win/basesrv/pro…
============================================================================== --- trunk/reactos/subsystems/win/basesrv/proc.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win/basesrv/proc.c [iso-8859-1] Thu Aug 29 17:00:10 2013 @@ -14,6 +14,35 @@ #include <debug.h> /* PUBLIC SERVER APIS *********************************************************/ + +CSR_API(BaseSrvDebugProcess) +{ + DPRINT1("%s not yet implemented\n", __FUNCTION__); + return STATUS_NOT_IMPLEMENTED; +} + +CSR_API(BaseSrvRegisterThread) +{ + DPRINT1("%s not yet implemented\n", __FUNCTION__); + return STATUS_NOT_IMPLEMENTED; +} +CSR_API(BaseSrvSxsCreateActivationContext) +{ + DPRINT1("%s not yet implemented\n", __FUNCTION__); + return STATUS_NOT_IMPLEMENTED; +} + +CSR_API(BaseSrvSetTermsrvAppInstallMode) +{ + DPRINT1("%s not yet implemented\n", __FUNCTION__); + return STATUS_NOT_IMPLEMENTED; +} + +CSR_API(BaseSrvSetTermsrvClientTimeZone) +{ + DPRINT1("%s not yet implemented\n", __FUNCTION__); + return STATUS_NOT_IMPLEMENTED; +} CSR_API(BaseSrvGetTempFile) { Modified: trunk/reactos/subsystems/win/basesrv/vdm.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win/basesrv/vdm…
============================================================================== --- trunk/reactos/subsystems/win/basesrv/vdm.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win/basesrv/vdm.c [iso-8859-1] Thu Aug 29 17:00:10 2013 @@ -13,4 +13,78 @@ #define NDEBUG #include <debug.h> +/* PUBLIC SERVER APIS *********************************************************/ + +CSR_API(BaseSrvCheckVDM) +{ + DPRINT1("%s not yet implemented\n", __FUNCTION__); + return STATUS_NOT_IMPLEMENTED; +} + +CSR_API(BaseSrvUpdateVDMEntry) +{ + DPRINT1("%s not yet implemented\n", __FUNCTION__); + return STATUS_NOT_IMPLEMENTED; +} + +CSR_API(BaseSrvGetNextVDMCommand) +{ + DPRINT1("%s not yet implemented\n", __FUNCTION__); + return STATUS_NOT_IMPLEMENTED; +} + +CSR_API(BaseSrvExitVDM) +{ + DPRINT1("%s not yet implemented\n", __FUNCTION__); + return STATUS_NOT_IMPLEMENTED; +} + +CSR_API(BaseSrvIsFirstVDM) +{ + DPRINT1("%s not yet implemented\n", __FUNCTION__); + return STATUS_NOT_IMPLEMENTED; +} + +CSR_API(BaseSrvGetVDMExitCode) +{ + DPRINT1("%s not yet implemented\n", __FUNCTION__); + return STATUS_NOT_IMPLEMENTED; +} + +CSR_API(BaseSrvSetReenterCount) +{ + DPRINT1("%s not yet implemented\n", __FUNCTION__); + return STATUS_NOT_IMPLEMENTED; +} + +CSR_API(BaseSrvSetVDMCurDirs) +{ + DPRINT1("%s not yet implemented\n", __FUNCTION__); + return STATUS_NOT_IMPLEMENTED; +} + +CSR_API(BaseSrvGetVDMCurDirs) +{ + DPRINT1("%s not yet implemented\n", __FUNCTION__); + return STATUS_NOT_IMPLEMENTED; +} + +CSR_API(BaseSrvBatNotification) +{ + DPRINT1("%s not yet implemented\n", __FUNCTION__); + return STATUS_NOT_IMPLEMENTED; +} + +CSR_API(BaseSrvRegisterWowExec) +{ + DPRINT1("%s not yet implemented\n", __FUNCTION__); + return STATUS_NOT_IMPLEMENTED; +} + +CSR_API(BaseSrvRefreshIniFileMapping) +{ + DPRINT1("%s not yet implemented\n", __FUNCTION__); + return STATUS_NOT_IMPLEMENTED; +} + /* EOF */
11 years, 3 months
1
0
0
0
[ion] 59871: [KERNEL32]: Fix a bug in QueryActCtx
by ion@svn.reactos.org
Author: ion Date: Thu Aug 29 16:42:14 2013 New Revision: 59871 URL:
http://svn.reactos.org/svn/reactos?rev=59871&view=rev
Log: [KERNEL32]: Fix a bug in QueryActCtx Modified: trunk/reactos/dll/win32/kernel32/client/actctx.c Modified: trunk/reactos/dll/win32/kernel32/client/actctx.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/client/…
============================================================================== --- trunk/reactos/dll/win32/kernel32/client/actctx.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/kernel32/client/actctx.c [iso-8859-1] Thu Aug 29 16:42:14 2013 @@ -336,6 +336,7 @@ BaseSetLastNTError(STATUS_INVALID_PARAMETER_3); return FALSE; } + break; default: @@ -373,7 +374,7 @@ } /* These 3 flags are mutually exclusive -- only one should be present */ - switch (dwFlags & (QUERY_ACTCTX_FLAG_VALID & ~ QUERY_ACTCTX_FLAG_NO_ADDREF)) + switch (dwFlags & (QUERY_ACTCTX_FLAG_VALID & ~QUERY_ACTCTX_FLAG_NO_ADDREF)) { /* Convert into native format */ case QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX: @@ -401,6 +402,10 @@ } /* Now call the native API */ + DPRINT1("SXS: %s() Calling Native API with Native Flags %lx for Win32 Flags %lx\n", + __FUNCTION__, + NativeFlags, + dwFlags); Status = RtlQueryInformationActivationContext(NativeFlags, hActCtx, pvSubInstance,
11 years, 3 months
1
0
0
0
[hbelusca] 59870: [KERNEL32] Use GetSystemDirectoryW for building the path to console.dll
by hbelusca@svn.reactos.org
Author: hbelusca Date: Thu Aug 29 14:31:06 2013 New Revision: 59870 URL:
http://svn.reactos.org/svn/reactos?rev=59870&view=rev
Log: [KERNEL32] Use GetSystemDirectoryW for building the path to console.dll Modified: trunk/reactos/dll/win32/kernel32/client/console/init.c Modified: trunk/reactos/dll/win32/kernel32/client/console/init.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/client/…
============================================================================== --- trunk/reactos/dll/win32/kernel32/client/console/init.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/kernel32/client/console/init.c [iso-8859-1] Thu Aug 29 14:31:06 2013 @@ -64,8 +64,8 @@ { WCHAR szBuffer[MAX_PATH]; - GetWindowsDirectoryW(szBuffer, MAX_PATH); - wcscat(szBuffer, L"\\system32\\console.dll"); + GetSystemDirectoryW(szBuffer, MAX_PATH); + wcscat(szBuffer, L"\\console.dll"); ConsoleLibrary = LoadLibraryW(szBuffer); if (ConsoleLibrary == NULL)
11 years, 3 months
1
0
0
0
[hbelusca] 59869: [KERNEL32] Fix some headers information. CORE-7421 #resolve #comment Fixed in revision r59869, thanks :)
by hbelusca@svn.reactos.org
Author: hbelusca Date: Thu Aug 29 12:20:29 2013 New Revision: 59869 URL:
http://svn.reactos.org/svn/reactos?rev=59869&view=rev
Log: [KERNEL32] Fix some headers information. CORE-7421 #resolve #comment Fixed in revision r59869, thanks :) Modified: trunk/reactos/dll/win32/kernel32/client/actctx.c trunk/reactos/dll/win32/kernel32/client/thread.c trunk/reactos/dll/win32/kernel32/wine/actctx.c Modified: trunk/reactos/dll/win32/kernel32/client/actctx.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/client/…
============================================================================== --- trunk/reactos/dll/win32/kernel32/client/actctx.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/kernel32/client/actctx.c [iso-8859-1] Thu Aug 29 12:20:29 2013 @@ -1,11 +1,11 @@ /* * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS system libraries - * FILE: lib/kernel32/thread/thread.c - * PURPOSE: Thread functions - * PROGRAMMERS: Alex Ionescu (alex(a)relsoft.net) - * Ariadne ( ariadne(a)xs4all.nl) + * FILE: dll/win32/kernel32/client/actctx.c + * PURPOSE: Activation contexts - NT-compatible helpers + * PROGRAMMERS: Alex Ionescu (alex.ionescu(a)reactos.org) * + * NOTE: See also kernel32/wine/actctx.c */ /* INCLUDES ******************************************************************/ Modified: trunk/reactos/dll/win32/kernel32/client/thread.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/client/…
============================================================================== --- trunk/reactos/dll/win32/kernel32/client/thread.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/kernel32/client/thread.c [iso-8859-1] Thu Aug 29 12:20:29 2013 @@ -1,10 +1,10 @@ /* * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS system libraries - * FILE: lib/kernel32/thread/thread.c + * FILE: dll/win32/kernel32/client/thread.c * PURPOSE: Thread functions - * PROGRAMMERS: Alex Ionescu (alex(a)relsoft.net) - * Ariadne ( ariadne(a)xs4all.nl) + * PROGRAMMERS: Alex Ionescu (alex.ionescu(a)reactos.org) + * Ariadne (ariadne(a)xs4all.nl) * */ Modified: trunk/reactos/dll/win32/kernel32/wine/actctx.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/wine/ac…
============================================================================== --- trunk/reactos/dll/win32/kernel32/wine/actctx.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/kernel32/wine/actctx.c [iso-8859-1] Thu Aug 29 12:20:29 2013 @@ -1,7 +1,7 @@ /* * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS system libraries - * FILE: dll/win32/kernel32/misc/actctx.c + * FILE: dll/win32/kernel32/wine/actctx.c * PURPOSE: Activation contexts * PROGRAMMERS: Jacek Caban for CodeWeavers * Eric Pouech
11 years, 3 months
1
0
0
0
[ion] 59868: CORE-6639 #resolve #time 1d #comment Guard pages now work ; -) [NDK]: Fix definition of a global flag. [RTL]: RtlpCreateUserStack: 1) If the image is invalid, bail out. 2) If the stack ...
by ion@svn.reactos.org
Author: ion Date: Thu Aug 29 07:33:10 2013 New Revision: 59868 URL:
http://svn.reactos.org/svn/reactos?rev=59868&view=rev
Log: CORE-6639 #resolve #time 1d #comment Guard pages now work ;-) [NDK]: Fix definition of a global flag. [RTL]: RtlpCreateUserStack: 1) If the image is invalid, bail out. 2) If the stack commit is higher than reserve, adjust reserve. 3) After allocating a guard page, the stack limit is now ABOVE the guard page, not BELOW it (stack grows backward!). [RTL]: Remove the hack which always Commited the "StackReserve" value. Threads now have a 4-64KB stack, instead of a 1MB stack. [NTOSKRNL]: Implement MiAccessCheck and MiCheckForUserStackOverflow, which handle guard page + stack expansion. [USER32]: Because threads now correctly run with a smaller stack than usual (and expand as needed), remove some checks in user-mode callbacks which forced larger stacks. Modified: trunk/reactos/include/ndk/pstypes.h trunk/reactos/lib/rtl/thread.c trunk/reactos/ntoskrnl/mm/ARM3/pagfault.c trunk/reactos/win32ss/user/user32/windows/message.c Modified: trunk/reactos/include/ndk/pstypes.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ndk/pstypes.h?rev=…
============================================================================== --- trunk/reactos/include/ndk/pstypes.h [iso-8859-1] (original) +++ trunk/reactos/include/ndk/pstypes.h [iso-8859-1] Thu Aug 29 07:33:10 2013 @@ -69,7 +69,7 @@ #define FLG_KERNEL_STACK_TRACE_DB 0x00002000 #define FLG_MAINTAIN_OBJECT_TYPELIST 0x00004000 #define FLG_HEAP_ENABLE_TAG_BY_DLL 0x00008000 -#define FLG_IGNORE_DEBUG_PRIV 0x00010000 +#define FLG_DISABLE_STACK_EXTENSION 0x00010000 #define FLG_ENABLE_CSRDEBUG 0x00020000 #define FLG_ENABLE_KDEBUG_SYMBOL_LOAD 0x00040000 #define FLG_DISABLE_PAGE_KERNEL_STACKS 0x00080000 Modified: trunk/reactos/lib/rtl/thread.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/rtl/thread.c?rev=59868…
============================================================================== --- trunk/reactos/lib/rtl/thread.c [iso-8859-1] (original) +++ trunk/reactos/lib/rtl/thread.c [iso-8859-1] Thu Aug 29 07:33:10 2013 @@ -46,6 +46,7 @@ { /* Get the Image Headers */ Headers = RtlImageNtHeader(NtCurrentPeb()->ImageBaseAddress); + if (!Headers) return STATUS_INVALID_IMAGE_FORMAT; /* If we didn't get the parameters, find them ourselves */ if (!StackReserve) StackReserve = Headers->OptionalHeader. @@ -60,14 +61,16 @@ if (!StackCommit) StackCommit = SystemBasicInfo.PageSize; } + /* Check if the commit is higher than the reserve*/ + if (StackCommit >= StackReserve) + { + /* Grow the reserve beyond the commit, up to 1MB alignment */ + StackReserve = ROUND_UP(StackCommit, 1024 * 1024); + } + /* Align everything to Page Size */ StackReserve = ROUND_UP(StackReserve, SystemBasicInfo.AllocationGranularity); StackCommit = ROUND_UP(StackCommit, SystemBasicInfo.PageSize); - - // FIXME: Remove once Guard Page support is here - #if 1 - StackCommit = StackReserve; - #endif /* Reserve memory for the stack */ Status = ZwAllocateVirtualMemory(hProcess, @@ -121,7 +124,7 @@ if (!NT_SUCCESS(Status)) return Status; /* Update the Stack Limit keeping in mind the Guard Page */ - InitialTeb->StackLimit = (PVOID)((ULONG_PTR)InitialTeb->StackLimit - + InitialTeb->StackLimit = (PVOID)((ULONG_PTR)InitialTeb->StackLimit + GuardPageSize); } Modified: trunk/reactos/ntoskrnl/mm/ARM3/pagfault.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/ARM3/pagfault.…
============================================================================== --- trunk/reactos/ntoskrnl/mm/ARM3/pagfault.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/mm/ARM3/pagfault.c [iso-8859-1] Thu Aug 29 07:33:10 2013 @@ -23,6 +23,162 @@ #endif /* PRIVATE FUNCTIONS **********************************************************/ + +NTSTATUS +NTAPI +MiCheckForUserStackOverflow(IN PVOID Address, + IN PVOID TrapInformation) +{ + PETHREAD CurrentThread = PsGetCurrentThread(); + PTEB Teb = CurrentThread->Tcb.Teb; + PVOID StackBase, DeallocationStack, NextStackAddress; + ULONG GuranteedSize; + NTSTATUS Status; + + /* Do we own the address space lock? */ + if (CurrentThread->AddressSpaceOwner == 1) + { + /* This isn't valid */ + DPRINT1("Process owns address space lock\n"); + ASSERT(KeAreAllApcsDisabled() == TRUE); + return STATUS_GUARD_PAGE_VIOLATION; + } + + /* Are we attached? */ + if (KeIsAttachedProcess()) + { + /* This isn't valid */ + DPRINT1("Process is attached\n"); + return STATUS_GUARD_PAGE_VIOLATION; + } + + /* Read the current settings */ + StackBase = Teb->NtTib.StackBase; + DeallocationStack = Teb->DeallocationStack; + GuranteedSize = Teb->GuaranteedStackBytes; + DPRINT1("Handling guard page fault with Stacks Addresses 0x%p and 0x%p, guarantee: %lx\n", + StackBase, DeallocationStack, GuranteedSize); + + /* Guarantees make this code harder, for now, assume there aren't any */ + ASSERT(GuranteedSize == 0); + + /* So allocate only the minimum guard page size */ + GuranteedSize = PAGE_SIZE; + + /* Does this faulting stack address actually exist in the stack? */ + if ((Address >= StackBase) || (Address < DeallocationStack)) + { + /* That's odd... */ + DPRINT1("Faulting address outside of stack bounds\n"); + return STATUS_GUARD_PAGE_VIOLATION; + } + + /* This is where the stack will start now */ + NextStackAddress = (PVOID)((ULONG_PTR)PAGE_ALIGN(Address) - GuranteedSize); + + /* Do we have at least one page between here and the end of the stack? */ + if (((ULONG_PTR)NextStackAddress - PAGE_SIZE) <= (ULONG_PTR)DeallocationStack) + { + /* We don't -- Windows would try to make this guard page valid now */ + DPRINT1("Close to our death...\n"); + ASSERT(FALSE); + return STATUS_STACK_OVERFLOW; + } + + /* Don't handle this flag yet */ + ASSERT((PsGetCurrentProcess()->Peb->NtGlobalFlag & FLG_DISABLE_STACK_EXTENSION) == 0); + + /* Update the stack limit */ + Teb->NtTib.StackLimit = (PVOID)((ULONG_PTR)NextStackAddress + GuranteedSize); + + /* Now move the guard page to the next page */ + Status = ZwAllocateVirtualMemory(NtCurrentProcess(), + &NextStackAddress, + 0, + &GuranteedSize, + MEM_COMMIT, + PAGE_READWRITE | PAGE_GUARD); + if ((NT_SUCCESS(Status) || (Status == STATUS_ALREADY_COMMITTED))) + { + /* We did it! */ + DPRINT1("Guard page handled successfully for %p\n", Address); + return STATUS_PAGE_FAULT_GUARD_PAGE; + } + + /* Fail, we couldn't move the guard page */ + DPRINT1("Guard page failure: %lx\n", Status); + ASSERT(FALSE); + return STATUS_STACK_OVERFLOW; +} + +NTSTATUS +NTAPI +MiAccessCheck(IN PMMPTE PointerPte, + IN BOOLEAN StoreInstruction, + IN KPROCESSOR_MODE PreviousMode, + IN ULONG ProtectionCode, + IN PVOID TrapFrame, + IN BOOLEAN LockHeld) +{ + MMPTE TempPte; + + /* Check for invalid user-mode access */ + if ((PreviousMode == UserMode) && (PointerPte > MiHighestUserPte)) + { + return STATUS_ACCESS_VIOLATION; + } + + /* Capture the PTE -- is it valid? */ + TempPte = *PointerPte; + if (TempPte.u.Hard.Valid) + { + /* Was someone trying to write to it? */ + if (StoreInstruction) + { + /* Is it writable?*/ + if ((TempPte.u.Hard.Write) || (TempPte.u.Hard.CopyOnWrite)) + { + /* Then there's nothing to worry about */ + return STATUS_SUCCESS; + } + + /* Oops! This isn't allowed */ + return STATUS_ACCESS_VIOLATION; + } + + /* Someone was trying to read from a valid PTE, that's fine too */ + return STATUS_SUCCESS; + } + + /* Convert any fault flag to 1 only */ + if (StoreInstruction) StoreInstruction = 1; + +#if 0 + /* Check if the protection on the page allows what is being attempted */ + if ((MmReadWrite[Protection] - StoreInstruction) < 10) + { + return STATUS_ACCESS_VIOLATION; + } +#endif + + /* Check if this is a guard page */ + if (ProtectionCode & MM_DECOMMIT) + { + /* Attached processes can't expand their stack */ + if (KeIsAttachedProcess()) return STATUS_ACCESS_VIOLATION; + + /* No support for transition PTEs yet */ + ASSERT(((TempPte.u.Soft.Transition == 1) && + (TempPte.u.Soft.Prototype == 0)) == FALSE); + + /* Remove the guard page bit, and return a guard page violation */ + PointerPte->u.Soft.Protection = ProtectionCode & ~MM_DECOMMIT; + return STATUS_GUARD_PAGE_VIOLATION; + } + + /* Nothing to do */ + return STATUS_SUCCESS; +} PMMPTE NTAPI @@ -800,7 +956,14 @@ { if (!PteContents.u.Proto.ReadOnly) { - /* FIXME: CHECK FOR ACCESS */ + /* Check for page acess in software */ + Status = MiAccessCheck(PointerProtoPte, + StoreInstruction, + KernelMode, + TempPte.u.Soft.Protection, + TrapInformation, + TRUE); + ASSERT(Status == STATUS_SUCCESS); /* Check for copy on write page */ if ((TempPte.u.Soft.Protection & MM_WRITECOPY) == MM_WRITECOPY) @@ -1682,9 +1845,6 @@ return Status; } - /* No guard page support yet */ - ASSERT((ProtectionCode & MM_DECOMMIT) == 0); - /* * Check if this is a real user-mode address or actually a kernel-mode * page table for a user mode address @@ -1693,6 +1853,24 @@ { /* Add an additional page table reference */ MiIncrementPageTableReferences(Address); + } + + /* Is this a guard page? */ + if (ProtectionCode & MM_DECOMMIT) + { + /* Remove the bit */ + PointerPte->u.Soft.Protection = ProtectionCode & ~MM_DECOMMIT; + + /* Not supported */ + ASSERT(ProtoPte == NULL); + ASSERT(CurrentThread->ApcNeeded == 0); + + /* Drop the working set lock */ + MiUnlockProcessWorkingSet(CurrentProcess, CurrentThread); + ASSERT(KeGetCurrentIrql() == OldIrql); + + /* Handle stack expansion */ + return MiCheckForUserStackOverflow(Address, TrapInformation); } /* Did we get a prototype PTE back? */ @@ -1781,8 +1959,7 @@ return STATUS_PAGE_FAULT_DEMAND_ZERO; } - /* No guard page support yet */ - ASSERT((ProtectionCode & MM_DECOMMIT) == 0); + /* We should have a valid protection here */ ASSERT(ProtectionCode != 0x100); /* Write the prototype PTE */ @@ -1831,7 +2008,36 @@ } } - /* FIXME: Run MiAccessCheck */ + /* Do we have a valid protection code? */ + if (ProtectionCode != 0x100) + { + /* Run a software access check first, including to detect guard pages */ + Status = MiAccessCheck(PointerPte, + StoreInstruction, + Mode, + ProtectionCode, + TrapInformation, + FALSE); + if (Status != STATUS_SUCCESS) + { + /* Not supported */ + ASSERT(CurrentThread->ApcNeeded == 0); + + /* Drop the working set lock */ + MiUnlockProcessWorkingSet(CurrentProcess, CurrentThread); + ASSERT(KeGetCurrentIrql() == OldIrql); + + /* Did we hit a guard page? */ + if (Status == STATUS_GUARD_PAGE_VIOLATION) + { + /* Handle stack expansion */ + return MiCheckForUserStackOverflow(Address, TrapInformation); + } + + /* Otherwise, fail back to the caller directly */ + return Status; + } + } /* Dispatch the fault */ Status = MiDispatchFault(StoreInstruction, Modified: trunk/reactos/win32ss/user/user32/windows/message.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/user32/window…
============================================================================== --- trunk/reactos/win32ss/user/user32/windows/message.c [iso-8859-1] (original) +++ trunk/reactos/win32ss/user/user32/windows/message.c [iso-8859-1] Thu Aug 29 07:33:10 2013 @@ -1288,7 +1288,6 @@ { MSG AnsiMsg; MSG UnicodeMsg; - ULONG_PTR LowLimit; BOOL Hook = FALSE, MsgOverride = FALSE, Dialog; LRESULT Result = 0, PreResult = 0; DWORD Data = 0; @@ -1297,14 +1296,6 @@ { WARN("IntCallWindowsProcW() called with WndProc = NULL!\n"); return FALSE; - } - - // Safeguard against excessive recursions. - LowLimit = (ULONG_PTR)NtCurrentTeb()->NtTib.StackLimit; - if (((ULONG_PTR)&lParam - LowLimit) < PAGE_SIZE ) - { - ERR("IntCallWindowsProcW() Exceeded Stack!\n"); - return FALSE; } if (pWnd) @@ -2766,7 +2757,6 @@ PWINDOWPROC_CALLBACK_ARGUMENTS CallbackArgs; MSG KMMsg, UMMsg; PWND pWnd = NULL; - ULONG_PTR LowLimit; PCLIENTINFO pci = GetWin32ClientInfo(); /* Make sure we don't try to access mem beyond what we were given */ @@ -2774,13 +2764,6 @@ { return STATUS_INFO_LENGTH_MISMATCH; } - - LowLimit = (ULONG_PTR)NtCurrentTeb()->NtTib.StackLimit; - if (((ULONG_PTR)&ArgumentLength - LowLimit) < PAGE_SIZE ) - { - ERR("Callback from Win32k Exceeded Stack!\n"); - return STATUS_BAD_STACK; - } CallbackArgs = (PWINDOWPROC_CALLBACK_ARGUMENTS) Arguments; KMMsg.hwnd = CallbackArgs->Wnd;
11 years, 3 months
1
0
0
0
[ion] 59867: [HIDPARSE]: Stop the HID debug spam.
by ion@svn.reactos.org
Author: ion Date: Thu Aug 29 06:09:28 2013 New Revision: 59867 URL:
http://svn.reactos.org/svn/reactos?rev=59867&view=rev
Log: [HIDPARSE]: Stop the HID debug spam. Modified: trunk/reactos/drivers/hid/hidparse/hidparse.c Modified: trunk/reactos/drivers/hid/hidparse/hidparse.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/hid/hidparse/hidpa…
============================================================================== --- trunk/reactos/drivers/hid/hidparse/hidparse.c [iso-8859-1] (original) +++ trunk/reactos/drivers/hid/hidparse/hidparse.c [iso-8859-1] Thu Aug 29 06:09:28 2013 @@ -71,7 +71,7 @@ DebugFunction( IN LPCSTR FormatStr, ...) { - +#if HID_DBG va_list args; char printbuffer[1024]; @@ -80,6 +80,7 @@ va_end(args); DbgPrint(printbuffer); +#endif } VOID
11 years, 3 months
1
0
0
0
[ion] 59866: [NDK]: Add some RTL_ACTIVATION_CONTEXT flags from the ASSERTs in the checked ntdll.dll. Guess some other ones based on what seems to be the naming pattern (can't find them on Google, s...
by ion@svn.reactos.org
Author: ion Date: Thu Aug 29 04:34:00 2013 New Revision: 59866 URL:
http://svn.reactos.org/svn/reactos?rev=59866&view=rev
Log: [NDK]: Add some RTL_ACTIVATION_CONTEXT flags from the ASSERTs in the checked ntdll.dll. Guess some other ones based on what seems to be the naming pattern (can't find them on Google, so who knows). [RTL]: Make the Wine RtlActivationContext* APIs use the native RTL flags, not the Win32 flags. [KERNEL32]: Separate Wine-specific ActCtx code from NT-compatible ActCtx code, and reimplement the latter. Now all ActCtx APIs except CreateActCtx (which is a mess on Windows) are compatible with the real NT RtlActivationContext APIs in terms of flags. [KERNEL32]: Fix the hacks which were sending Win32 flags to the NT Native Rtl* functions. Added: trunk/reactos/dll/win32/kernel32/client/actctx.c (with props) Modified: trunk/reactos/dll/win32/kernel32/CMakeLists.txt trunk/reactos/dll/win32/kernel32/client/thread.c trunk/reactos/dll/win32/kernel32/wine/actctx.c trunk/reactos/include/ndk/rtltypes.h trunk/reactos/lib/rtl/actctx.c Modified: trunk/reactos/dll/win32/kernel32/CMakeLists.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/CMakeLi…
============================================================================== --- trunk/reactos/dll/win32/kernel32/CMakeLists.txt [iso-8859-1] (original) +++ trunk/reactos/dll/win32/kernel32/CMakeLists.txt [iso-8859-1] Thu Aug 29 04:34:00 2013 @@ -4,6 +4,7 @@ spec2def(kernel32.dll kernel32.spec ADD_IMPORTLIB) list(APPEND SOURCE + client/actctx.c client/appcache.c client/atom.c client/compname.c Added: trunk/reactos/dll/win32/kernel32/client/actctx.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/client/…
============================================================================== --- trunk/reactos/dll/win32/kernel32/client/actctx.c (added) +++ trunk/reactos/dll/win32/kernel32/client/actctx.c [iso-8859-1] Thu Aug 29 04:34:00 2013 @@ -0,0 +1,418 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS system libraries + * FILE: lib/kernel32/thread/thread.c + * PURPOSE: Thread functions + * PROGRAMMERS: Alex Ionescu (alex(a)relsoft.net) + * Ariadne ( ariadne(a)xs4all.nl) + * + */ + +/* INCLUDES ******************************************************************/ + +#include <k32.h> +#define NDEBUG +#include <debug.h> + +#define QUERY_ACTCTX_FLAG_VALID (QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX | \ + QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE | \ + QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS | \ + QUERY_ACTCTX_FLAG_NO_ADDREF) + +/* PRIVATE FUNCTIONS *********************************************************/ + + +VOID +NTAPI +BasepFreeActivationContextActivationBlock(IN PBASEP_ACTCTX_BLOCK ActivationBlock) +{ + /* Exit if there was nothing passed in */ + if (!ActivationBlock) return; + + /* Do we have a context? */ + if (ActivationBlock->ActivationContext) + { + /* Release and clear it */ + RtlReleaseActivationContext(ActivationBlock->ActivationContext); + ActivationBlock->ActivationContext = NULL; + } + + /* Free the block */ + RtlFreeHeap(RtlGetProcessHeap(), 0, ActivationBlock); +} + +NTSTATUS +NTAPI +BasepAllocateActivationContextActivationBlock(IN DWORD Flags, + IN PVOID CompletionRoutine, + IN PVOID CompletionContext, + OUT PBASEP_ACTCTX_BLOCK *ActivationBlock) +{ + NTSTATUS Status; + ACTIVATION_CONTEXT_BASIC_INFORMATION ContextInfo; + + /* Clear the info structure */ + ContextInfo.dwFlags = 0; + ContextInfo.hActCtx = NULL; + + /* Assume failure */ + if (ActivationBlock) *ActivationBlock = NULL; + + /* Only support valid flags */ + if (Flags & ~(1 | 2)) // FIXME: What are they? 2 looks like BASEP_ACTCTX_FORCE_BLOCK + { + /* Fail if unknown flags are passed in */ + Status = STATUS_INVALID_PARAMETER_1; + goto Quickie; + } + + /* Caller should have passed in an activation block */ + if (!ActivationBlock) + { + /* Fail otherwise */ + Status = STATUS_INVALID_PARAMETER_4; + goto Quickie; + } + + /* Query RTL for information on the current activation context */ + Status = RtlQueryInformationActivationContext(RTL_QUERY_ACTIVATION_CONTEXT_FLAG_USE_ACTIVE_ACTIVATION_CONTEXT, + NULL, + NULL, + ActivationContextBasicInformation, + &ContextInfo, + sizeof(ContextInfo), + NULL); + if (!NT_SUCCESS(Status)) + { + /* Failed -- bail out */ + DPRINT1("SXS: %s - Failure getting active activation context; ntstatus %08lx\n", + __FUNCTION__, Status); + goto Quickie; + } + + /* Check if the current one should be freed */ + if (ContextInfo.dwFlags & 1) + { + /* Release and clear it */ + RtlReleaseActivationContext(ContextInfo.hActCtx); + ContextInfo.hActCtx = NULL; + } + + /* Check if there's an active context, or if the caller is forcing one */ + if (!(Flags & 2) || (ContextInfo.hActCtx)) + { + /* Allocate the block */ + *ActivationBlock = RtlAllocateHeap(RtlGetProcessHeap(), + 0, + sizeof(BASEP_ACTCTX_BLOCK)); + if (!(*ActivationBlock)) + { + /* Ran out of memory, fail */ + Status = STATUS_NO_MEMORY; + goto Quickie; + } + + /* Fill it out */ + (*ActivationBlock)->ActivationContext = ContextInfo.hActCtx; + (*ActivationBlock)->Flags = 0; + if (Flags & 1) (*ActivationBlock)->Flags |= 1; // Not sure about this flag + (*ActivationBlock)->CompletionRoutine = CompletionRoutine; + (*ActivationBlock)->CompletionContext = CompletionContext; + + /* Tell Quickie below not to free anything, since this is success */ + ContextInfo.hActCtx = NULL; + } + + /* Set success status */ + Status = STATUS_SUCCESS; + +Quickie: + /* Failure or success path, return to caller and free on failure */ + if (ContextInfo.hActCtx) RtlReleaseActivationContext(ContextInfo.hActCtx); + return Status; +} + +/* PUBLIC FUNCTIONS **********************************************************/ + +/* + * @implemented + */ +VOID +WINAPI +AddRefActCtx(IN HANDLE hActCtx) +{ + /* Call the native API */ + RtlAddRefActivationContext(hActCtx); +} + +/* + * @implemented + */ +VOID +WINAPI +ReleaseActCtx(IN HANDLE hActCtx) +{ + /* Call the native API */ + RtlReleaseActivationContext(hActCtx); +} + +/* + * @implemented + */ +BOOL +WINAPI +ZombifyActCtx(HANDLE hActCtx) +{ + NTSTATUS Status; + + /* Call the native API */ + Status = RtlZombifyActivationContext(hActCtx); + if (NT_SUCCESS(Status)) return TRUE; + + /* Set last error if we failed */ + BaseSetLastNTError(Status); + return FALSE; +} + +/* + * @implemented + */ +BOOL +WINAPI +ActivateActCtx(IN HANDLE hActCtx, + OUT PULONG_PTR ulCookie) +{ + NTSTATUS Status; + + /* Check if the handle was invalid */ + if (hActCtx == INVALID_HANDLE_VALUE) + { + /* Set error and bail out */ + BaseSetLastNTError(STATUS_INVALID_PARAMETER); + return FALSE; + } + + /* Call the native API */ + Status = RtlActivateActivationContext(0, hActCtx, ulCookie); + if (!NT_SUCCESS(Status)) + { + /* Set error and bail out */ + BaseSetLastNTError(STATUS_INVALID_PARAMETER); + return FALSE; + } + + /* It worked */ + return TRUE; +} + +/* + * @implemented + */ +BOOL +WINAPI +DeactivateActCtx(IN DWORD dwFlags, + IN ULONG_PTR ulCookie) +{ + ULONG NativeFlags; + + /* Check if the flags are invalid */ + if ((dwFlags & ~DEACTIVATE_ACTCTX_FLAG_FORCE_EARLY_DEACTIVATION) != 0) + { + /* Set error and bail out */ + BaseSetLastNTError(STATUS_INVALID_PARAMETER); + return FALSE; + } + + /* Convert flags */ + NativeFlags = 0; + if (dwFlags & DEACTIVATE_ACTCTX_FLAG_FORCE_EARLY_DEACTIVATION) + { + NativeFlags = RTL_DEACTIVATE_ACTIVATION_CONTEXT_FLAG_FORCE_EARLY_DEACTIVATION; + } + + /* Call the native API -- it can never fail */ + RtlDeactivateActivationContext(NativeFlags, ulCookie); + return TRUE; +} + +/* + * @implemented + */ +BOOL +WINAPI +GetCurrentActCtx(OUT PHANDLE phActCtx) +{ + NTSTATUS Status; + + /* Check if the output handle pointer was invalid */ + if (phActCtx == NULL) + { + /* Set error and bail out */ + BaseSetLastNTError(STATUS_INVALID_PARAMETER); + return FALSE; + } + + /* Call the native API */ + Status = RtlGetActiveActivationContext(phActCtx); + if (!NT_SUCCESS(Status)) + { + /* Set error and bail out */ + BaseSetLastNTError(STATUS_INVALID_PARAMETER); + return FALSE; + } + + /* It worked */ + return TRUE; +} + +/* + * @implemented + */ +BOOL +WINAPI +QueryActCtxW(IN DWORD dwFlags, + IN HANDLE hActCtx, + IN PVOID pvSubInstance, + IN ULONG ulInfoClass, + IN PVOID pvBuffer, + IN SIZE_T cbBuffer, + IN OUT SIZE_T *pcbWrittenOrRequired OPTIONAL) +{ + ULONG NativeFlags = 0; + NTSTATUS Status; + + /* Assume failure */ + if (pcbWrittenOrRequired) *pcbWrittenOrRequired = 0; + + /* Check if native flags were passed in to the Win32 function */ + switch (dwFlags & 3) + { + case RTL_QUERY_ACTIVATION_CONTEXT_FLAG_USE_ACTIVE_ACTIVATION_CONTEXT: + dwFlags |= QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX; + break; + case RTL_QUERY_ACTIVATION_CONTEXT_FLAG_IS_HMODULE: + dwFlags |= QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE; + break; + case (RTL_QUERY_ACTIVATION_CONTEXT_FLAG_IS_ADDRESS - 1): // Yep, not sure why + dwFlags |= QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS; + break; + } + + /* Now mask out the native flags */ + dwFlags &= ~3; + + /* Check if any invalid flags are left */ + if (dwFlags & ~QUERY_ACTCTX_FLAG_VALID) + { + /* Yep, bail out */ + DPRINT1("SXS: %s() bad flags(passed: 0x%lx, allowed: 0x%lx, bad: 0x%lx)\n", + __FUNCTION__, + dwFlags, + QUERY_ACTCTX_FLAG_VALID, + dwFlags & ~QUERY_ACTCTX_FLAG_VALID); + BaseSetLastNTError(STATUS_INVALID_PARAMETER_1); + return FALSE; + } + + /* See if additional parameters are required */ + switch (ulInfoClass) + { + case ActivationContextBasicInformation: + case ActivationContextDetailedInformation: + + /* Nothing to check */ + break; + + case AssemblyDetailedInformationInActivationContext: + case FileInformationInAssemblyOfAssemblyInActivationContext: + + /* We need a subinstance for these queries*/ + if (!pvSubInstance) + { + /* None present, bail out */ + DPRINT1("SXS: %s() InfoClass 0x%lx requires SubInstance != NULL\n", + __FUNCTION__, + ulInfoClass); + BaseSetLastNTError(STATUS_INVALID_PARAMETER_3); + return FALSE; + } + + default: + + /* Invalid class, bail out */ + DPRINT1("SXS: %s() bad InfoClass(0x%lx)\n", + __FUNCTION__, + ulInfoClass); + BaseSetLastNTError(STATUS_INVALID_PARAMETER_2); + return FALSE; + } + + /* Check if no buffer was passed in*/ + if (!pvBuffer) + { + /* But a non-zero length was? */ + if (cbBuffer) + { + /* This is bogus... */ + DPRINT1("SXS: %s() (pvBuffer == NULL) && ((cbBuffer=0x%lu) != 0)\n", + __FUNCTION__, + cbBuffer); + BaseSetLastNTError(STATUS_INVALID_PARAMETER_4); + return FALSE; + } + + /* But the caller doesn't want to know how big to make it? */ + if (!pcbWrittenOrRequired) + { + /* That's bogus */ + DPRINT1("SXS: %s() (pvBuffer == NULL) && (pcbWrittenOrRequired == NULL)\n", + __FUNCTION__); + BaseSetLastNTError(STATUS_INVALID_PARAMETER_5); + return FALSE; + } + } + + /* These 3 flags are mutually exclusive -- only one should be present */ + switch (dwFlags & (QUERY_ACTCTX_FLAG_VALID & ~ QUERY_ACTCTX_FLAG_NO_ADDREF)) + { + /* Convert into native format */ + case QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX: + NativeFlags = RTL_QUERY_ACTIVATION_CONTEXT_FLAG_USE_ACTIVE_ACTIVATION_CONTEXT; + break; + case QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE: + NativeFlags = RTL_QUERY_ACTIVATION_CONTEXT_FLAG_IS_HMODULE; + break; + case QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS: + NativeFlags = RTL_QUERY_ACTIVATION_CONTEXT_FLAG_IS_ADDRESS; + break; + + /* More than one flag is set... */ + default: + /* Bail out */ + DPRINT1("SXS: %s(dwFlags=0x%lx) more than one flag in 0x%lx was passed\n", 0x1C); + BaseSetLastNTError(STATUS_INVALID_PARAMETER_1); + return FALSE; + } + + /* Convert this last flag */ + if (dwFlags & QUERY_ACTCTX_FLAG_NO_ADDREF) + { + NativeFlags |= RTL_QUERY_ACTIVATION_CONTEXT_FLAG_NO_ADDREF; + } + + /* Now call the native API */ + Status = RtlQueryInformationActivationContext(NativeFlags, + hActCtx, + pvSubInstance, + ulInfoClass, + pvBuffer, + cbBuffer, + pcbWrittenOrRequired); + if (NT_SUCCESS(Status)) return TRUE; + + /* Failed, set error and return */ + BaseSetLastNTError(Status); + return FALSE; +} + +/* EOF */ Propchange: trunk/reactos/dll/win32/kernel32/client/actctx.c ------------------------------------------------------------------------------ svn:eol-style = native Modified: trunk/reactos/dll/win32/kernel32/client/thread.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/client/…
============================================================================== --- trunk/reactos/dll/win32/kernel32/client/thread.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/kernel32/client/thread.c [iso-8859-1] Thu Aug 29 04:34:00 2013 @@ -260,8 +260,7 @@ Teb->ActivationContextStackPointer = ActivationContextStack; /* Query the Context */ - // WARNING!!! THIS IS USING THE WIN32 FLAG BECAUSE REACTOS CONTINUES TO BE A POS!!! /// - Status = RtlQueryInformationActivationContext(QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX, + Status = RtlQueryInformationActivationContext(RTL_QUERY_ACTIVATION_CONTEXT_FLAG_USE_ACTIVE_ACTIVATION_CONTEXT, NULL, 0, ActivationContextBasicInformation, @@ -934,8 +933,7 @@ /* Zero the activation context and query information on it */ RtlZeroMemory(&ActCtxInfo, sizeof(ActCtxInfo)); - // WARNING!!! THIS IS USING THE WIN32 FLAG BECAUSE REACTOS CONTINUES TO BE A POS!!! /// - Status = RtlQueryInformationActivationContext(QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX, + Status = RtlQueryInformationActivationContext(RTL_QUERY_ACTIVATION_CONTEXT_FLAG_USE_ACTIVE_ACTIVATION_CONTEXT, NULL, 0, ActivationContextBasicInformation, Modified: trunk/reactos/dll/win32/kernel32/wine/actctx.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/wine/ac…
============================================================================== --- trunk/reactos/dll/win32/kernel32/wine/actctx.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/kernel32/wine/actctx.c [iso-8859-1] Thu Aug 29 04:34:00 2013 @@ -116,84 +116,6 @@ } /*********************************************************************** - * ActivateActCtx (KERNEL32.@) - * - * Activate an activation context. - */ -BOOL WINAPI ActivateActCtx(HANDLE hActCtx, ULONG_PTR *ulCookie) -{ - NTSTATUS status; - - if ((status = RtlActivateActivationContext( 0, hActCtx, ulCookie ))) - { - SetLastError(RtlNtStatusToDosError(status)); - return FALSE; - } - return TRUE; -} - -/*********************************************************************** - * DeactivateActCtx (KERNEL32.@) - * - * Deactivate an activation context. - */ -BOOL WINAPI DeactivateActCtx(DWORD dwFlags, ULONG_PTR ulCookie) -{ - RtlDeactivateActivationContext( dwFlags, ulCookie ); - return TRUE; -} - -/*********************************************************************** - * GetCurrentActCtx (KERNEL32.@) - * - * Get the current activation context. - */ -BOOL WINAPI GetCurrentActCtx(HANDLE* phActCtx) -{ - NTSTATUS status; - - if ((status = RtlGetActiveActivationContext(phActCtx))) - { - SetLastError(RtlNtStatusToDosError(status)); - return FALSE; - } - return TRUE; -} - -/*********************************************************************** - * AddRefActCtx (KERNEL32.@) - * - * Add a reference to an activation context. - */ -void WINAPI AddRefActCtx(HANDLE hActCtx) -{ - RtlAddRefActivationContext(hActCtx); -} - -/*********************************************************************** - * ReleaseActCtx (KERNEL32.@) - * - * Release a reference to an activation context. - */ -void WINAPI ReleaseActCtx(HANDLE hActCtx) -{ - RtlReleaseActivationContext(hActCtx); -} - -/*********************************************************************** - * ZombifyActCtx (KERNEL32.@) - * - * Release a reference to an activation context. - */ -BOOL WINAPI ZombifyActCtx(HANDLE hActCtx) -{ - FIXME("%p\n", hActCtx); - if (hActCtx != ACTCTX_FAKE_HANDLE) - return FALSE; - return TRUE; -} - -/*********************************************************************** * FindActCtxSectionStringA (KERNEL32.@) * * Find information about a string in an activation context. @@ -261,136 +183,5 @@ return FALSE; } -/*********************************************************************** - * QueryActCtxW (KERNEL32.@) - * - * Get information about an activation context. - */ -BOOL WINAPI QueryActCtxW(DWORD dwFlags, HANDLE hActCtx, PVOID pvSubInst, - ULONG ulClass, PVOID pvBuff, SIZE_T cbBuff, - SIZE_T *pcbLen) -{ - NTSTATUS status; - - if ((status = RtlQueryInformationActivationContext( dwFlags, hActCtx, pvSubInst, ulClass, - pvBuff, cbBuff, pcbLen ))) - { - SetLastError(RtlNtStatusToDosError(status)); - return FALSE; - } - return TRUE; -} - -/* REACTOS PRIVATE ************************************************************/ - -VOID -NTAPI -BasepFreeActivationContextActivationBlock(IN PBASEP_ACTCTX_BLOCK ActivationBlock) -{ - /* Exit if there was nothing passed in */ - if (!ActivationBlock) return; - - /* Do we have a context? */ - if (ActivationBlock->ActivationContext) - { - /* Release and clear it */ - RtlReleaseActivationContext(ActivationBlock->ActivationContext); - ActivationBlock->ActivationContext = NULL; - } - - /* Free the block */ - RtlFreeHeap(RtlGetProcessHeap(), 0, ActivationBlock); -} - -NTSTATUS -NTAPI -BasepAllocateActivationContextActivationBlock(IN DWORD Flags, - IN PVOID CompletionRoutine, - IN PVOID CompletionContext, - OUT PBASEP_ACTCTX_BLOCK *ActivationBlock) -{ - NTSTATUS Status; - ACTIVATION_CONTEXT_BASIC_INFORMATION ContextInfo; - - /* Clear the info structure */ - ContextInfo.dwFlags = 0; - ContextInfo.hActCtx = NULL; - - /* Assume failure */ - if (ActivationBlock) *ActivationBlock = NULL; - - /* Only support valid flags */ - if (Flags & ~(1 | 2)) // FIXME: What are they? 2 looks like BASEP_ACTCTX_FORCE_BLOCK - { - /* Fail if unknown flags are passed in */ - Status = STATUS_INVALID_PARAMETER_1; - goto Quickie; - } - - /* Caller should have passed in an activation block */ - if (!ActivationBlock) - { - /* Fail otherwise */ - Status = STATUS_INVALID_PARAMETER_4; - goto Quickie; - } - - /* Query RTL for information on the current activation context */ - Status = RtlQueryInformationActivationContext(1, - NULL, - 0, - ActivationContextBasicInformation, - &ContextInfo, - sizeof(ContextInfo), - NULL); - if (!NT_SUCCESS(Status)) - { - /* Failed -- bail out */ - DPRINT1("SXS: %s - Failure getting active activation context; ntstatus %08lx\n", - __FUNCTION__, Status); - goto Quickie; - } - - /* Check if the current one should be freed */ - if (ContextInfo.dwFlags & 1) - { - /* Release and clear it */ - RtlReleaseActivationContext(ContextInfo.hActCtx); - ContextInfo.hActCtx = NULL; - } - - /* Check if there's an active context, or if the caller is forcing one */ - if (!(Flags & 2) || (ContextInfo.hActCtx)) - { - /* Allocate the block */ - *ActivationBlock = RtlAllocateHeap(RtlGetProcessHeap(), - 0, - sizeof(BASEP_ACTCTX_BLOCK)); - if (!(*ActivationBlock)) - { - /* Ran out of memory, fail */ - Status = STATUS_NO_MEMORY; - goto Quickie; - } - - /* Fill it out */ - (*ActivationBlock)->ActivationContext = ContextInfo.hActCtx; - (*ActivationBlock)->Flags = 0; - if (Flags & 1) (*ActivationBlock)->Flags |= 1; // Not sure about this flag - (*ActivationBlock)->CompletionRoutine = CompletionRoutine; - (*ActivationBlock)->CompletionContext = CompletionContext; - - /* Tell Quickie below not to free anything, since this is success */ - ContextInfo.hActCtx = NULL; - } - - /* Set success status */ - Status = STATUS_SUCCESS; - -Quickie: - /* Failure or success path, return to caller and free on failure */ - if (ContextInfo.hActCtx) RtlReleaseActivationContext(ContextInfo.hActCtx); - return Status; -} /* EOF */ Modified: trunk/reactos/include/ndk/rtltypes.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ndk/rtltypes.h?rev…
============================================================================== --- trunk/reactos/include/ndk/rtltypes.h [iso-8859-1] (original) +++ trunk/reactos/include/ndk/rtltypes.h [iso-8859-1] Thu Aug 29 04:34:00 2013 @@ -72,16 +72,37 @@ #define RTL_RANGE_CONFLICT 0x02 // -// Activation Context Frame Flags -// -#define RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_FORMAT_WHISTLER \ - 0x1 - -// -// RtlActivateActivationContextEx Flags -// -#define RTL_ACTIVATE_ACTIVATION_CONTEXT_EX_FLAG_RELEASE_ON_STACK_DEALLOCATION \ - 0x1 +// Flags in RTL_ACTIVATION_CONTEXT_STACK_FRAME (from Checked NTDLL) +// +#define RTL_ACTIVATION_CONTEXT_STACK_FRAME_FLAG_NO_DEACTIVATE 0x02 +#define RTL_ACTIVATION_CONTEXT_STACK_FRAME_FLAG_ON_FREE_LIST 0x04 +#define RTL_ACTIVATION_CONTEXT_STACK_FRAME_FLAG_HEAP_ALLOCATED 0x08 +#define RTL_ACTIVATION_CONTEXT_STACK_FRAME_FLAG_NOT_REALLY_ACTIVATED 0x10 +#define RTL_ACTIVATION_CONTEXT_STACK_FRAME_FLAG_ACTIVATED 0x20 +#define RTL_ACTIVATION_CONTEXT_STACK_FRAME_FLAG_DEACTIVATED 0x40 + +// +// Activation Context Frame Flags (from Checked NTDLL) +// +#define RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_FORMAT_WHISTLER 0x01 + +// +// RtlActivateActivationContextEx Flags (from Checked NTDLL) +// +#define RTL_ACTIVATE_ACTIVATION_CONTEXT_EX_FLAG_RELEASE_ON_STACK_DEALLOCATION 0x01 + +// +// RtlDeactivateActivationContext Flags (based on Win32 flag and name of above) +// +#define RTL_DEACTIVATE_ACTIVATION_CONTEXT_FLAG_FORCE_EARLY_DEACTIVATION 0x01 + +// +// RtlQueryActivationContext Flags (based on Win32 flag and name of above) +// +#define RTL_QUERY_ACTIVATION_CONTEXT_FLAG_USE_ACTIVE_ACTIVATION_CONTEXT 0x01 +#define RTL_QUERY_ACTIVATION_CONTEXT_FLAG_IS_HMODULE 0x02 +#define RTL_QUERY_ACTIVATION_CONTEXT_FLAG_IS_ADDRESS 0x04 +#define RTL_QUERY_ACTIVATION_CONTEXT_FLAG_NO_ADDREF 0x80000000 // // Public Heap Flags Modified: trunk/reactos/lib/rtl/actctx.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/rtl/actctx.c?rev=59866…
============================================================================== --- trunk/reactos/lib/rtl/actctx.c [iso-8859-1] (original) +++ trunk/reactos/lib/rtl/actctx.c [iso-8859-1] Thu Aug 29 04:34:00 2013 @@ -2099,14 +2099,14 @@ { NTSTATUS status = STATUS_SUCCESS; - if (flags & QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX) + if (flags & RTL_QUERY_ACTIVATION_CONTEXT_FLAG_USE_ACTIVE_ACTIVATION_CONTEXT) { if (*handle) return STATUS_INVALID_PARAMETER; if (NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame) *handle = NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame->ActivationContext; } - else if (flags & (QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS|QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE)) + else if (flags & (RTL_QUERY_ACTIVATION_CONTEXT_FLAG_IS_ADDRESS | RTL_QUERY_ACTIVATION_CONTEXT_FLAG_IS_HMODULE)) { ULONG magic; LDR_DATA_TABLE_ENTRY *pldr; @@ -2116,7 +2116,7 @@ LdrLockLoaderLock( 0, NULL, &magic ); if (!LdrFindEntryForAddress( *handle, &pldr )) { - if ((flags & QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE) && *handle != pldr->DllBase) + if ((flags & RTL_QUERY_ACTIVATION_CONTEXT_FLAG_IS_HMODULE) && *handle != pldr->DllBase) status = STATUS_DLL_NOT_FOUND; else *handle = pldr->EntryPointActivationContext; @@ -2417,7 +2417,7 @@ if (!frame) RtlRaiseStatus( STATUS_SXS_INVALID_DEACTIVATION ); - if (frame != top && !(flags & DEACTIVATE_ACTCTX_FLAG_FORCE_EARLY_DEACTIVATION)) + if (frame != top && !(flags & RTL_DEACTIVATE_ACTIVATION_CONTEXT_FLAG_FORCE_EARLY_DEACTIVATION)) RtlRaiseStatus( STATUS_SXS_EARLY_DEACTIVATION ); /* pop everything up to and including frame */ @@ -2524,7 +2524,7 @@ info->hActCtx = handle; info->dwFlags = 0; /* FIXME */ - if (!(flags & QUERY_ACTCTX_FLAG_NO_ADDREF)) RtlAddRefActivationContext( handle ); + if (!(flags & RTL_QUERY_ACTIVATION_CONTEXT_FLAG_NO_ADDREF)) RtlAddRefActivationContext(handle); } break; @@ -2707,7 +2707,7 @@ SIZE_T cbBuffer OPTIONAL, SIZE_T *pcbWrittenOrRequired OPTIONAL) { - return RtlQueryInformationActivationContext(QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX, + return RtlQueryInformationActivationContext(RTL_QUERY_ACTIVATION_CONTEXT_FLAG_USE_ACTIVE_ACTIVATION_CONTEXT, NULL, NULL, ulInfoClass,
11 years, 3 months
1
0
0
0
[ion] 59865: [KERNEL32]: Implement BaseProcessInitPostImport. Windows NTDLL now loads much, much further, all the way to lsass.exe now.
by ion@svn.reactos.org
Author: ion Date: Thu Aug 29 00:07:00 2013 New Revision: 59865 URL:
http://svn.reactos.org/svn/reactos?rev=59865&view=rev
Log: [KERNEL32]: Implement BaseProcessInitPostImport. Windows NTDLL now loads much, much further, all the way to lsass.exe now. Modified: trunk/reactos/dll/win32/kernel32/client/loader.c Modified: trunk/reactos/dll/win32/kernel32/client/loader.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/client/…
============================================================================== --- trunk/reactos/dll/win32/kernel32/client/loader.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/kernel32/client/loader.c [iso-8859-1] Thu Aug 29 00:07:00 2013 @@ -12,6 +12,14 @@ #include <debug.h> /* FUNCTIONS ****************************************************************/ + +NTSTATUS +WINAPI +BasepInitializeTermsrvFpns(VOID) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} DWORD WINAPI @@ -1125,12 +1133,20 @@ } /* - * @unimplemented + * @implemented */ NTSTATUS WINAPI BaseProcessInitPostImport(VOID) { + /* Check if this is a terminal server */ + DPRINT1("Post-init called\n"); + if (SharedUserData->SuiteMask & VER_SUITE_TERMINAL) + { + /* Initialize TS pointers */ + return BasepInitializeTermsrvFpns(); + } + /* FIXME: Initialize TS pointers */ return STATUS_SUCCESS; }
11 years, 3 months
1
0
0
0
[ion] 59864: [NTDLL]: Fix CsrpConnectToServer to use the correct CSR_API_CONNECTINFO structure. [CSRSRV]: Fix definition of CSR_API_CONNECTINFO structure. It is now compatible with Server 2003. Als...
by ion@svn.reactos.org
Author: ion Date: Thu Aug 29 00:02:15 2013 New Revision: 59864 URL:
http://svn.reactos.org/svn/reactos?rev=59864&view=rev
Log: [NTDLL]: Fix CsrpConnectToServer to use the correct CSR_API_CONNECTINFO structure. [CSRSRV]: Fix definition of CSR_API_CONNECTINFO structure. It is now compatible with Server 2003. Also, set the DebugFlag. Modified: trunk/reactos/dll/ntdll/csr/connect.c trunk/reactos/include/reactos/subsys/csr/csrmsg.h trunk/reactos/subsystems/win32/csrsrv/api.c trunk/reactos/subsystems/win32/csrsrv/server.c Modified: trunk/reactos/dll/ntdll/csr/connect.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/ntdll/csr/connect.c?re…
============================================================================== --- trunk/reactos/dll/ntdll/csr/connect.c [iso-8859-1] (original) +++ trunk/reactos/dll/ntdll/csr/connect.c [iso-8859-1] Thu Aug 29 00:02:15 2013 @@ -107,7 +107,7 @@ SecurityQos.EffectiveOnly = TRUE; /* Setup the connection info */ - ConnectionInfo.Version = CSRSRV_VERSION; + ConnectionInfo.DebugFlags = 0; /* Create a SID for us */ Status = RtlAllocateAndInitializeSid(&NtSidAuthority, @@ -153,12 +153,12 @@ (ULONG_PTR)LpcWrite.ViewBase; /* Save the Process */ - CsrProcessId = ConnectionInfo.ProcessId; + CsrProcessId = ConnectionInfo.ServerProcessId; /* Save CSR Section data */ NtCurrentPeb()->ReadOnlySharedMemoryBase = ConnectionInfo.SharedSectionBase; NtCurrentPeb()->ReadOnlySharedMemoryHeap = ConnectionInfo.SharedSectionHeap; - NtCurrentPeb()->ReadOnlyStaticServerData = ConnectionInfo.SharedSectionData; + NtCurrentPeb()->ReadOnlyStaticServerData = ConnectionInfo.SharedStaticServerData; /* Create the port heap */ CsrPortHeap = RtlCreateHeap(0, Modified: trunk/reactos/include/reactos/subsys/csr/csrmsg.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/subsys/csr…
============================================================================== --- trunk/reactos/include/reactos/subsys/csr/csrmsg.h [iso-8859-1] (original) +++ trunk/reactos/include/reactos/subsys/csr/csrmsg.h [iso-8859-1] Thu Aug 29 00:02:15 2013 @@ -46,15 +46,15 @@ typedef struct _CSR_API_CONNECTINFO { - ULONG Version; - ULONG Unknown; HANDLE ObjectDirectory; PVOID SharedSectionBase; + PVOID SharedStaticServerData; PVOID SharedSectionHeap; - PVOID SharedSectionData; ULONG DebugFlags; - ULONG Unknown2[3]; - HANDLE ProcessId; + ULONG SizeOfPebData; + ULONG SizeOfTebData; + ULONG NumberOfServerDllNames; + HANDLE ServerProcessId; } CSR_API_CONNECTINFO, *PCSR_API_CONNECTINFO; #define CSRSRV_VERSION 0x10000 Modified: trunk/reactos/subsystems/win32/csrsrv/api.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/csrsrv/ap…
============================================================================== --- trunk/reactos/subsystems/win32/csrsrv/api.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/csrsrv/api.c [iso-8859-1] Thu Aug 29 00:02:15 2013 @@ -180,7 +180,12 @@ Status = CsrSrvAttachSharedSection(CsrProcess, ConnectInfo); /* Check how this went */ - if (NT_SUCCESS(Status)) AllowConnection = TRUE; + if (NT_SUCCESS(Status)) + { + /* Allow the connection, and return debugging flag */ + ConnectInfo->DebugFlags = CsrDebug; + AllowConnection = TRUE; + } } /* Dereference the project */ @@ -197,7 +202,7 @@ RemotePortView.ViewBase = NULL; /* Save the Process ID */ - ConnectInfo->ProcessId = NtCurrentTeb()->ClientId.UniqueProcess; + ConnectInfo->ServerProcessId = NtCurrentTeb()->ClientId.UniqueProcess; /* Accept the Connection */ Status = NtAcceptConnectPort(&ServerPort, Modified: trunk/reactos/subsystems/win32/csrsrv/server.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/csrsrv/se…
============================================================================== --- trunk/reactos/subsystems/win32/csrsrv/server.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/csrsrv/server.c [iso-8859-1] Thu Aug 29 00:02:15 2013 @@ -469,7 +469,7 @@ /* Write the values in the Connection Info structure */ ConnectInfo->SharedSectionBase = CsrSrvSharedSectionBase; ConnectInfo->SharedSectionHeap = CsrSrvSharedSectionHeap; - ConnectInfo->SharedSectionData = CsrSrvSharedStaticServerData; + ConnectInfo->SharedStaticServerData = CsrSrvSharedStaticServerData; /* Return success */ return STATUS_SUCCESS;
11 years, 3 months
1
0
0
0
[akhaldi] 59863: [WINHLP32] * Improve resource files layout to make it consistent with the rest of our codebase. By Erdem Ersoy. CORE-7414 #resolve #comment Committed in r59863. Thanks.
by akhaldi@svn.reactos.org
Author: akhaldi Date: Wed Aug 28 23:14:41 2013 New Revision: 59863 URL:
http://svn.reactos.org/svn/reactos?rev=59863&view=rev
Log: [WINHLP32] * Improve resource files layout to make it consistent with the rest of our codebase. By Erdem Ersoy. CORE-7414 #resolve #comment Committed in r59863. Thanks. Added: trunk/reactos/base/applications/winhlp32/lang/ (with props) trunk/reactos/base/applications/winhlp32/lang/Bg.rc - copied unchanged from r59850, trunk/reactos/base/applications/winhlp32/Bg.rc trunk/reactos/base/applications/winhlp32/lang/Cs.rc - copied unchanged from r59850, trunk/reactos/base/applications/winhlp32/Cs.rc trunk/reactos/base/applications/winhlp32/lang/Da.rc - copied unchanged from r59850, trunk/reactos/base/applications/winhlp32/Da.rc trunk/reactos/base/applications/winhlp32/lang/De.rc - copied unchanged from r59850, trunk/reactos/base/applications/winhlp32/De.rc trunk/reactos/base/applications/winhlp32/lang/En.rc - copied unchanged from r59850, trunk/reactos/base/applications/winhlp32/En.rc trunk/reactos/base/applications/winhlp32/lang/Es.rc - copied unchanged from r59850, trunk/reactos/base/applications/winhlp32/Es.rc trunk/reactos/base/applications/winhlp32/lang/Fi.rc - copied unchanged from r59850, trunk/reactos/base/applications/winhlp32/Fi.rc trunk/reactos/base/applications/winhlp32/lang/Fr.rc - copied unchanged from r59850, trunk/reactos/base/applications/winhlp32/Fr.rc trunk/reactos/base/applications/winhlp32/lang/He.rc - copied unchanged from r59850, trunk/reactos/base/applications/winhlp32/He.rc trunk/reactos/base/applications/winhlp32/lang/Hu.rc - copied unchanged from r59850, trunk/reactos/base/applications/winhlp32/Hu.rc trunk/reactos/base/applications/winhlp32/lang/It.rc - copied unchanged from r59850, trunk/reactos/base/applications/winhlp32/It.rc trunk/reactos/base/applications/winhlp32/lang/Ja.rc - copied unchanged from r59850, trunk/reactos/base/applications/winhlp32/Ja.rc trunk/reactos/base/applications/winhlp32/lang/Ko.rc - copied unchanged from r59850, trunk/reactos/base/applications/winhlp32/Ko.rc trunk/reactos/base/applications/winhlp32/lang/Lt.rc - copied unchanged from r59850, trunk/reactos/base/applications/winhlp32/Lt.rc trunk/reactos/base/applications/winhlp32/lang/Nl.rc - copied unchanged from r59850, trunk/reactos/base/applications/winhlp32/Nl.rc trunk/reactos/base/applications/winhlp32/lang/No.rc - copied unchanged from r59850, trunk/reactos/base/applications/winhlp32/No.rc trunk/reactos/base/applications/winhlp32/lang/Pl.rc - copied unchanged from r59850, trunk/reactos/base/applications/winhlp32/Pl.rc trunk/reactos/base/applications/winhlp32/lang/Pt.rc - copied unchanged from r59850, trunk/reactos/base/applications/winhlp32/Pt.rc trunk/reactos/base/applications/winhlp32/lang/Rm.rc - copied unchanged from r59850, trunk/reactos/base/applications/winhlp32/Rm.rc trunk/reactos/base/applications/winhlp32/lang/Ro.rc - copied unchanged from r59850, trunk/reactos/base/applications/winhlp32/Ro.rc trunk/reactos/base/applications/winhlp32/lang/Ru.rc - copied unchanged from r59850, trunk/reactos/base/applications/winhlp32/Ru.rc trunk/reactos/base/applications/winhlp32/lang/Si.rc - copied unchanged from r59850, trunk/reactos/base/applications/winhlp32/Si.rc trunk/reactos/base/applications/winhlp32/lang/Sk.rc - copied unchanged from r59850, trunk/reactos/base/applications/winhlp32/Sk.rc trunk/reactos/base/applications/winhlp32/lang/Sr.rc - copied unchanged from r59850, trunk/reactos/base/applications/winhlp32/Sr.rc trunk/reactos/base/applications/winhlp32/lang/Sv.rc - copied unchanged from r59850, trunk/reactos/base/applications/winhlp32/Sv.rc trunk/reactos/base/applications/winhlp32/lang/Tr.rc - copied unchanged from r59861, trunk/reactos/base/applications/winhlp32/Tr.rc trunk/reactos/base/applications/winhlp32/lang/Uk.rc - copied unchanged from r59850, trunk/reactos/base/applications/winhlp32/Uk.rc trunk/reactos/base/applications/winhlp32/lang/Zh.rc - copied unchanged from r59850, trunk/reactos/base/applications/winhlp32/Zh.rc trunk/reactos/base/applications/winhlp32/res/ trunk/reactos/base/applications/winhlp32/res/winhelp.ico - copied unchanged from r59850, trunk/reactos/base/applications/winhlp32/winhelp.ico Removed: trunk/reactos/base/applications/winhlp32/Bg.rc trunk/reactos/base/applications/winhlp32/Cs.rc trunk/reactos/base/applications/winhlp32/Da.rc trunk/reactos/base/applications/winhlp32/De.rc trunk/reactos/base/applications/winhlp32/En.rc trunk/reactos/base/applications/winhlp32/Es.rc trunk/reactos/base/applications/winhlp32/Fi.rc trunk/reactos/base/applications/winhlp32/Fr.rc trunk/reactos/base/applications/winhlp32/He.rc trunk/reactos/base/applications/winhlp32/Hu.rc trunk/reactos/base/applications/winhlp32/It.rc trunk/reactos/base/applications/winhlp32/Ja.rc trunk/reactos/base/applications/winhlp32/Ko.rc trunk/reactos/base/applications/winhlp32/Lt.rc trunk/reactos/base/applications/winhlp32/Nl.rc trunk/reactos/base/applications/winhlp32/No.rc trunk/reactos/base/applications/winhlp32/Pl.rc trunk/reactos/base/applications/winhlp32/Pt.rc trunk/reactos/base/applications/winhlp32/Rm.rc trunk/reactos/base/applications/winhlp32/Ro.rc trunk/reactos/base/applications/winhlp32/Ru.rc trunk/reactos/base/applications/winhlp32/Si.rc trunk/reactos/base/applications/winhlp32/Sk.rc trunk/reactos/base/applications/winhlp32/Sr.rc trunk/reactos/base/applications/winhlp32/Sv.rc trunk/reactos/base/applications/winhlp32/Tr.rc trunk/reactos/base/applications/winhlp32/Uk.rc trunk/reactos/base/applications/winhlp32/Zh.rc trunk/reactos/base/applications/winhlp32/winhelp.ico Modified: trunk/reactos/base/applications/winhlp32/rsrc.rc [This mail would be too long, it was shortened to contain the URLs only.] Removed: trunk/reactos/base/applications/winhlp32/Bg.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/winhlp32…
Removed: trunk/reactos/base/applications/winhlp32/Cs.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/winhlp32…
Removed: trunk/reactos/base/applications/winhlp32/Da.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/winhlp32…
Removed: trunk/reactos/base/applications/winhlp32/De.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/winhlp32…
Removed: trunk/reactos/base/applications/winhlp32/En.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/winhlp32…
Removed: trunk/reactos/base/applications/winhlp32/Es.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/winhlp32…
Removed: trunk/reactos/base/applications/winhlp32/Fi.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/winhlp32…
Removed: trunk/reactos/base/applications/winhlp32/Fr.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/winhlp32…
Removed: trunk/reactos/base/applications/winhlp32/He.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/winhlp32…
Removed: trunk/reactos/base/applications/winhlp32/Hu.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/winhlp32…
Removed: trunk/reactos/base/applications/winhlp32/It.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/winhlp32…
Removed: trunk/reactos/base/applications/winhlp32/Ja.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/winhlp32…
Removed: trunk/reactos/base/applications/winhlp32/Ko.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/winhlp32…
Removed: trunk/reactos/base/applications/winhlp32/Lt.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/winhlp32…
Removed: trunk/reactos/base/applications/winhlp32/Nl.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/winhlp32…
Removed: trunk/reactos/base/applications/winhlp32/No.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/winhlp32…
Removed: trunk/reactos/base/applications/winhlp32/Pl.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/winhlp32…
Removed: trunk/reactos/base/applications/winhlp32/Pt.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/winhlp32…
Removed: trunk/reactos/base/applications/winhlp32/Rm.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/winhlp32…
Removed: trunk/reactos/base/applications/winhlp32/Ro.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/winhlp32…
Removed: trunk/reactos/base/applications/winhlp32/Ru.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/winhlp32…
Removed: trunk/reactos/base/applications/winhlp32/Si.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/winhlp32…
Removed: trunk/reactos/base/applications/winhlp32/Sk.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/winhlp32…
Removed: trunk/reactos/base/applications/winhlp32/Sr.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/winhlp32…
Removed: trunk/reactos/base/applications/winhlp32/Sv.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/winhlp32…
Removed: trunk/reactos/base/applications/winhlp32/Tr.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/winhlp32…
Removed: trunk/reactos/base/applications/winhlp32/Uk.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/winhlp32…
Removed: trunk/reactos/base/applications/winhlp32/Zh.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/winhlp32…
Modified: trunk/reactos/base/applications/winhlp32/rsrc.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/winhlp32…
Removed: trunk/reactos/base/applications/winhlp32/winhelp.ico URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/winhlp32…
11 years, 3 months
1
0
0
0
← Newer
1
...
4
5
6
7
8
9
10
...
33
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Results per page:
10
25
50
100
200