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
February 2012
----- 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
22 participants
577 discussions
Start a n
N
ew thread
[cgutman] 55476: [USBOHCI] - Enable bus master on OHCI controllers if it's not set by default
by cgutman@svn.reactos.org
Author: cgutman Date: Tue Feb 7 01:59:18 2012 New Revision: 55476 URL:
http://svn.reactos.org/svn/reactos?rev=55476&view=rev
Log: [USBOHCI] - Enable bus master on OHCI controllers if it's not set by default Modified: branches/usb-bringup-trunk/drivers/usb/usbohci/hardware.cpp Modified: branches/usb-bringup-trunk/drivers/usb/usbohci/hardware.cpp URL:
http://svn.reactos.org/svn/reactos/branches/usb-bringup-trunk/drivers/usb/u…
============================================================================== --- branches/usb-bringup-trunk/drivers/usb/usbohci/hardware.cpp [iso-8859-1] (original) +++ branches/usb-bringup-trunk/drivers/usb/usbohci/hardware.cpp [iso-8859-1] Tue Feb 7 01:59:18 2012 @@ -221,13 +221,40 @@ return STATUS_SUCCESS; } - if (!(PciConfig.Command & PCI_ENABLE_BUS_MASTER)) - { - DPRINT1("PCI Configuration shows this as a non Bus Mastering device!\n"); - } - m_VendorID = PciConfig.VendorID; m_DeviceID = PciConfig.DeviceID; + + if (PciConfig.Command & PCI_ENABLE_BUS_MASTER) + { + // + // master is enabled + // + return STATUS_SUCCESS; + } + + DPRINT1("PCI Configuration shows this as a non Bus Mastering device! Enabling...\n"); + + PciConfig.Command |= PCI_ENABLE_BUS_MASTER; + BusInterface.SetBusData(BusInterface.Context, PCI_WHICHSPACE_CONFIG, &PciConfig, 0, PCI_COMMON_HDR_LENGTH); + + BytesRead = (*BusInterface.GetBusData)(BusInterface.Context, + PCI_WHICHSPACE_CONFIG, + &PciConfig, + 0, + PCI_COMMON_HDR_LENGTH); + + if (BytesRead != PCI_COMMON_HDR_LENGTH) + { + DPRINT1("Failed to get pci config information!\n"); + ASSERT(FALSE); + return STATUS_SUCCESS; + } + + if (!(PciConfig.Command & PCI_ENABLE_BUS_MASTER)) + { + DPRINT1("Failed to enable master\n"); + return STATUS_UNSUCCESSFUL; + } return STATUS_SUCCESS; }
12 years, 10 months
1
0
0
0
[akhaldi] 55475: [CLASSPNP] * Rename class.spec to classpnp.spec and adjust the build files accordingly. [DISK_NEW] * Fix the build files (cmake and rbuild). * Fix InitSafeBootMode use. * Add disk_...
by akhaldi@svn.reactos.org
Author: akhaldi Date: Mon Feb 6 22:48:17 2012 New Revision: 55475 URL:
http://svn.reactos.org/svn/reactos?rev=55475&view=rev
Log: [CLASSPNP] * Rename class.spec to classpnp.spec and adjust the build files accordingly. [DISK_NEW] * Fix the build files (cmake and rbuild). * Fix InitSafeBootMode use. * Add disk_new to build. Added: branches/usb-bringup-trunk/drivers/storage/classpnp/classpnp.spec - copied unchanged from r55470, branches/usb-bringup-trunk/drivers/storage/classpnp/class.spec Removed: branches/usb-bringup-trunk/drivers/storage/classpnp/class.spec Modified: branches/usb-bringup-trunk/drivers/storage/class/CMakeLists.txt branches/usb-bringup-trunk/drivers/storage/class/disk_new/CMakeLists.txt branches/usb-bringup-trunk/drivers/storage/class/disk_new/pnp.c branches/usb-bringup-trunk/drivers/storage/classpnp/CMakeLists.txt branches/usb-bringup-trunk/drivers/storage/classpnp/classpnp.rbuild Modified: branches/usb-bringup-trunk/drivers/storage/class/CMakeLists.txt URL:
http://svn.reactos.org/svn/reactos/branches/usb-bringup-trunk/drivers/stora…
============================================================================== --- branches/usb-bringup-trunk/drivers/storage/class/CMakeLists.txt [iso-8859-1] (original) +++ branches/usb-bringup-trunk/drivers/storage/class/CMakeLists.txt [iso-8859-1] Mon Feb 6 22:48:17 2012 @@ -2,4 +2,5 @@ add_subdirectory(cdrom) add_subdirectory(class2) add_subdirectory(disk) +add_subdirectory(disk_new) add_subdirectory(ramdisk) Modified: branches/usb-bringup-trunk/drivers/storage/class/disk_new/CMakeLists.txt URL:
http://svn.reactos.org/svn/reactos/branches/usb-bringup-trunk/drivers/stora…
============================================================================== --- branches/usb-bringup-trunk/drivers/storage/class/disk_new/CMakeLists.txt [iso-8859-1] (original) +++ branches/usb-bringup-trunk/drivers/storage/class/disk_new/CMakeLists.txt [iso-8859-1] Mon Feb 6 22:48:17 2012 @@ -1,16 +1,12 @@ include_directories(..) -add_library(disk SHARED data.c disk.c diskwmi.c enum.c geometry.c part.c pnp.c disk.rc) +add_library(disk_new SHARED data.c disk.c diskwmi.c enum.c geometry.c part.c pnp.c disk.rc) -if(ARCH MATCHES i386) - add_target_compile_flags(disk "-mrtd -fno-builtin -Wno-unused-variable -Wno-pointer-sign") +target_link_libraries(disk_new libcntpr wdmguid) +if(NOT MSVC AND ARCH MATCHES i386) + add_target_compile_flags(disk_new "-mrtd -fno-builtin -Wno-unused-variable -Wno-pointer-sign") endif() -set_module_type(disk kernelmodedriver) -add_importlibs(disk - classpnp - scsiport - ntoskrnl - hal) - -add_cd_file(TARGET disk DESTINATION reactos/system32/drivers NO_CAB FOR all) +set_module_type(disk_new kernelmodedriver) +add_importlibs(disk_new classpnp ntoskrnl hal) +add_cd_file(TARGET disk_new DESTINATION reactos/system32/drivers NO_CAB FOR all) Modified: branches/usb-bringup-trunk/drivers/storage/class/disk_new/pnp.c URL:
http://svn.reactos.org/svn/reactos/branches/usb-bringup-trunk/drivers/stora…
============================================================================== --- branches/usb-bringup-trunk/drivers/storage/class/disk_new/pnp.c [iso-8859-1] (original) +++ branches/usb-bringup-trunk/drivers/storage/class/disk_new/pnp.c [iso-8859-1] Mon Feb 6 22:48:17 2012 @@ -22,7 +22,7 @@ #include "disk.h" -extern PULONG InitSafeBootMode; +extern NTSYSAPI ULONG InitSafeBootMode; #ifdef ALLOC_PRAGMA @@ -500,7 +500,7 @@ // and enable failure prediction polling. // - if (*InitSafeBootMode == 0) + if (InitSafeBootMode == 0) { DiskDetectFailurePrediction(fdoExtension, &diskData->FailurePredictionCapability); Modified: branches/usb-bringup-trunk/drivers/storage/classpnp/CMakeLists.txt URL:
http://svn.reactos.org/svn/reactos/branches/usb-bringup-trunk/drivers/stora…
============================================================================== --- branches/usb-bringup-trunk/drivers/storage/classpnp/CMakeLists.txt [iso-8859-1] (original) +++ branches/usb-bringup-trunk/drivers/storage/classpnp/CMakeLists.txt [iso-8859-1] Mon Feb 6 22:48:17 2012 @@ -17,7 +17,7 @@ endif() endif() -spec2def(classpnp.sys class.spec) +spec2def(classpnp.sys classpnp.spec) list(APPEND SOURCE autorun.c @@ -35,12 +35,12 @@ utils.c xferpkt.c class.rc - ${CMAKE_CURRENT_BINARY_DIR}/class.def) + ${CMAKE_CURRENT_BINARY_DIR}/classpnp.def) add_library(classpnp SHARED ${SOURCE}) add_pch(classpnp classp.h) target_link_libraries(classpnp ${PSEH_LIB} libcntpr) set_module_type(classpnp kernelmodedriver) add_importlibs(classpnp hal ntoskrnl) -add_importlib_target(class.spec) +add_importlib_target(classpnp.spec) add_cd_file(TARGET classpnp DESTINATION reactos/system32/drivers NO_CAB FOR all) Removed: branches/usb-bringup-trunk/drivers/storage/classpnp/class.spec URL:
http://svn.reactos.org/svn/reactos/branches/usb-bringup-trunk/drivers/stora…
============================================================================== --- branches/usb-bringup-trunk/drivers/storage/classpnp/class.spec [iso-8859-1] (original) +++ branches/usb-bringup-trunk/drivers/storage/classpnp/class.spec (removed) @@ -1,59 +1,0 @@ - - @ stdcall ClassInitialize(ptr ptr ptr) - @ stdcall ClassInitializeEx(ptr ptr ptr) - @ stdcall ClassGetDescriptor(ptr ptr ptr) - @ stdcall ClassReadDriveCapacity(ptr) - @ stdcall ClassReleaseQueue(ptr) - @ stdcall ClassAsynchronousCompletion(ptr ptr ptr) - @ stdcall ClassSplitRequest(ptr ptr long) - @ stdcall ClassDeviceControl(ptr ptr) - @ stdcall ClassIoComplete(ptr ptr ptr) - @ stdcall ClassIoCompleteAssociated(ptr ptr ptr) - @ stdcall ClassInterpretSenseInfo(ptr ptr long long long ptr ptr) - @ stdcall ClassSendDeviceIoControlSynchronous(long ptr ptr long long long ptr) - @ stdcall ClassSendIrpSynchronous(ptr ptr) - @ stdcall ClassForwardIrpSynchronous(ptr ptr) - @ stdcall ClassSendSrbSynchronous(ptr ptr ptr long long) - @ stdcall ClassSendSrbAsynchronous(ptr ptr ptr ptr long long) - @ stdcall ClassBuildRequest(ptr ptr) - @ stdcall ClassModeSense(ptr ptr long long) - @ stdcall ClassFindModePage(ptr long long long) - @ stdcall ClassClaimDevice(ptr long) - @ stdcall ClassInternalIoControl(ptr ptr) - @ stdcall ClassCreateDeviceObject(ptr ptr ptr long ptr) - @ stdcall ClassRemoveDevice(ptr long) - @ stdcall ClassInitializeSrbLookasideList(ptr long) - @ stdcall ClassDeleteSrbLookasideList(ptr) - @ stdcall ClassQueryTimeOutRegistryValue(ptr) - @ stdcall ClassInvalidateBusRelations(ptr) - @ stdcall ClassMarkChildrenMissing(ptr) - @ stdcall ClassMarkChildMissing(ptr long) - @ varargs ClassDebugPrint(long long) - @ stdcall ClassGetDriverExtension(ptr) - @ stdcall ClassCompleteRequest(ptr ptr long) - @ stdcall ClassReleaseRemoveLock(ptr ptr) - @ stdcall ClassAcquireRemoveLockEx(ptr ptr ptr long) - @ stdcall ClassUpdateInformationInRegistry(ptr ptr long ptr long) - @ stdcall ClassWmiCompleteRequest(ptr ptr long long long) - @ stdcall ClassWmiFireEvent(ptr ptr long long ptr) - @ stdcall ClassGetVpb(ptr) - @ stdcall ClassSetFailurePredictionPoll(ptr long long) - @ stdcall ClassNotifyFailurePredicted(ptr ptr long long long long long long) - @ stdcall ClassInitializeTestUnitPolling(ptr long) - @ stdcall ClassSignalCompletion(ptr ptr ptr) - @ stdcall ClassSendStartUnit(ptr) - @ stdcall ClassSetMediaChangeState(ptr long long) - @ stdcall ClassResetMediaChangeTimer(ptr) - @ stdcall ClassCheckMediaState(ptr) - @ stdcall ClassInitializeMediaChangeDetection(ptr ptr) - @ stdcall ClassCleanupMediaChangeDetection(ptr) - @ stdcall ClassEnableMediaChangeDetection(ptr) - @ stdcall ClassDisableMediaChangeDetection(ptr) - @ stdcall ClassSpinDownPowerHandler(ptr ptr) - @ stdcall ClassStopUnitPowerHandler(ptr ptr) - @ stdcall ClassAcquireChildLock(ptr) - @ stdcall ClassReleaseChildLock(ptr) - @ stdcall ClassScanForSpecial(ptr ptr ptr) - @ stdcall ClassSetDeviceParameter(ptr ptr ptr long) - @ stdcall ClassGetDeviceParameter(ptr ptr ptr ptr) - Modified: branches/usb-bringup-trunk/drivers/storage/classpnp/classpnp.rbuild URL:
http://svn.reactos.org/svn/reactos/branches/usb-bringup-trunk/drivers/stora…
============================================================================== --- branches/usb-bringup-trunk/drivers/storage/classpnp/classpnp.rbuild [iso-8859-1] (original) +++ branches/usb-bringup-trunk/drivers/storage/classpnp/classpnp.rbuild [iso-8859-1] Mon Feb 6 22:48:17 2012 @@ -2,7 +2,7 @@ <!DOCTYPE module SYSTEM "../../../../tools/rbuild/project.dtd"> <module name="classpnp" type="kernelmodedriver" installbase="system32/drivers" installname="classpnp.sys"> <bootstrap installbase="$(CDOUTPUT)/system32/drivers" /> - <importlibrary definition="class.spec" /> + <importlibrary definition="classpnp.spec" /> <library>ntoskrnl</library> <library>hal</library> <library>pseh</library>
12 years, 10 months
1
0
0
0
[akhaldi] 55474: [WDMGUID] * Add missing GUID_DEVINTERFACE_PARTITION guid.
by akhaldi@svn.reactos.org
Author: akhaldi Date: Mon Feb 6 22:45:18 2012 New Revision: 55474 URL:
http://svn.reactos.org/svn/reactos?rev=55474&view=rev
Log: [WDMGUID] * Add missing GUID_DEVINTERFACE_PARTITION guid. Modified: branches/usb-bringup-trunk/lib/sdk/wdmguid/wdmguid.c Modified: branches/usb-bringup-trunk/lib/sdk/wdmguid/wdmguid.c URL:
http://svn.reactos.org/svn/reactos/branches/usb-bringup-trunk/lib/sdk/wdmgu…
============================================================================== --- branches/usb-bringup-trunk/lib/sdk/wdmguid/wdmguid.c [iso-8859-1] (original) +++ branches/usb-bringup-trunk/lib/sdk/wdmguid/wdmguid.c [iso-8859-1] Mon Feb 6 22:45:18 2012 @@ -14,5 +14,7 @@ 0x53f56307L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); DEFINE_GUID(GUID_DEVINTERFACE_CDROM, 0x53f56308L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); +DEFINE_GUID(GUID_DEVINTERFACE_PARTITION, + 0x53f5630aL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); /* EOF */
12 years, 10 months
1
0
0
0
[akhaldi] 55473: [NTOSKRNL] * Fix build.
by akhaldi@svn.reactos.org
Author: akhaldi Date: Mon Feb 6 22:01:35 2012 New Revision: 55473 URL:
http://svn.reactos.org/svn/reactos?rev=55473&view=rev
Log: [NTOSKRNL] * Fix build. Modified: branches/usb-bringup-trunk/ntoskrnl/fstub/fstubex.c Modified: branches/usb-bringup-trunk/ntoskrnl/fstub/fstubex.c URL:
http://svn.reactos.org/svn/reactos/branches/usb-bringup-trunk/ntoskrnl/fstu…
============================================================================== --- branches/usb-bringup-trunk/ntoskrnl/fstub/fstubex.c [iso-8859-1] (original) +++ branches/usb-bringup-trunk/ntoskrnl/fstub/fstubex.c [iso-8859-1] Mon Feb 6 22:01:35 2012 @@ -52,27 +52,6 @@ ULONGLONG Attributes; // 48 WCHAR Name[0x24]; // 56 } EFI_PARTITION_ENTRY, *PEFI_PARTITION_ENTRY; - -typedef struct _CREATE_DISK_MBR -{ - ULONG Signature; -} CREATE_DISK_MBR, *PCREATE_DISK_MBR; - -typedef struct _CREATE_DISK_GPT -{ - GUID DiskId; - ULONG MaxPartitionCount; -} CREATE_DISK_GPT, *PCREATE_DISK_GPT; - -typedef struct _CREATE_DISK -{ - PARTITION_STYLE PartitionStyle; - union - { - CREATE_DISK_MBR Mbr; - CREATE_DISK_GPT Gpt; - }; -} CREATE_DISK, *PCREATE_DISK; typedef struct _PARTITION_TABLE_ENTRY {
12 years, 10 months
1
0
0
0
[tkreuzer] 55472: [NTOSKRNL] - Implement MiIsUserP*e inline functions to efficiently determine if a pte is a pte/pde/ppe or pxe for a user mode page - Make MiDetermineUserGlobalPteMask work for _MI...
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Mon Feb 6 22:01:09 2012 New Revision: 55472 URL:
http://svn.reactos.org/svn/reactos?rev=55472&view=rev
Log: [NTOSKRNL] - Implement MiIsUserP*e inline functions to efficiently determine if a pte is a pte/pde/ppe or pxe for a user mode page - Make MiDetermineUserGlobalPteMask work for _MI_PAGING_LEVELS >= 3 - In MiResolveDemandZeroFault, use MI_MAKE_HARDWARE_PTE only, it does all the necessary work. Modified: trunk/reactos/ntoskrnl/mm/ARM3/miarm.h trunk/reactos/ntoskrnl/mm/ARM3/pagfault.c Modified: trunk/reactos/ntoskrnl/mm/ARM3/miarm.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/ARM3/miarm.h?r…
============================================================================== --- trunk/reactos/ntoskrnl/mm/ARM3/miarm.h [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/mm/ARM3/miarm.h [iso-8859-1] Mon Feb 6 22:01:09 2012 @@ -565,6 +565,50 @@ (MemoryType == LoaderBBTMemory)); } +#ifdef _M_AMD64 +BOOLEAN +FORCEINLINE +MiIsUserPxe(PVOID Address) +{ + return ((ULONG_PTR)Address >> 7) == 0x1FFFFEDF6FB7DA0ULL; +} + +BOOLEAN +FORCEINLINE +MiIsUserPpe(PVOID Address) +{ + return ((ULONG_PTR)Address >> 16) == 0xFFFFF6FB7DA0ULL; +} + +BOOLEAN +FORCEINLINE +MiIsUserPde(PVOID Address) +{ + return ((ULONG_PTR)Address >> 25) == 0x7FFFFB7DA0ULL; +} + +BOOLEAN +FORCEINLINE +MiIsUserPte(PVOID Address) +{ + return ((ULONG_PTR)Address >> 34) == 0x3FFFFDA0ULL; +} +#else +BOOLEAN +FORCEINLINE +MiIsUserPde(PVOID Address) +{ + return ((Address >= (PVOID)MiAddressToPde(NULL)) && + (Address <= (PVOID)MiHighestUserPde)); +} + +BOOLEAN +FORCEINLINE +MiIsUserPte(PVOID Address) +{ + return (Address <= (PVOID)MiHighestUserPte); +} +#endif // // Figures out the hardware bits for a PTE @@ -583,9 +627,15 @@ MI_MAKE_ACCESSED_PAGE(&TempPte); /* Is this for user-mode? */ - if ((PointerPte <= (PVOID)MiHighestUserPte) || - ((PointerPte >= (PVOID)MiAddressToPde(NULL)) && - (PointerPte <= (PVOID)MiHighestUserPde))) + if ( +#if (_MI_PAGING_LEVELS == 4) + MiIsUserPxe(PointerPte) || +#endif +#if (_MI_PAGING_LEVELS >= 3) + MiIsUserPpe(PointerPte) || +#endif + MiIsUserPde(PointerPte) || + MiIsUserPte(PointerPte)) { /* Set the owner bit */ MI_MAKE_OWNER_PAGE(&TempPte); 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] Mon Feb 6 22:01:09 2012 @@ -335,22 +335,10 @@ if (NeedZero) MiZeroPfn(PageFrameNumber); /* Build the PTE */ - if (PointerPte <= MiHighestUserPte) - { - /* For user mode */ - MI_MAKE_HARDWARE_PTE_USER(&TempPte, - PointerPte, - Protection, - PageFrameNumber); - } - else - { - /* For kernel mode */ - MI_MAKE_HARDWARE_PTE(&TempPte, - PointerPte, - Protection, - PageFrameNumber); - } + MI_MAKE_HARDWARE_PTE(&TempPte, + PointerPte, + Protection, + PageFrameNumber); /* Set it dirty if it's a writable page */ if (MI_IS_PAGE_WRITEABLE(&TempPte)) MI_MAKE_DIRTY_PAGE(&TempPte); @@ -625,6 +613,7 @@ /* Check if the PTE is completely empty */ if (TempPte.u.Long == 0) { + /* The address is not from any pageable area! */ KeBugCheckEx(PAGE_FAULT_IN_NONPAGED_AREA, (ULONG_PTR)Address, StoreInstruction,
12 years, 10 months
1
0
0
0
[akhaldi] 55471: [SMSS2] * Fix build.
by akhaldi@svn.reactos.org
Author: akhaldi Date: Mon Feb 6 20:53:47 2012 New Revision: 55471 URL:
http://svn.reactos.org/svn/reactos?rev=55471&view=rev
Log: [SMSS2] * Fix build. Modified: trunk/reactos/base/system/smss2/smss.h Modified: trunk/reactos/base/system/smss2/smss.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/smss2/smss.h?r…
============================================================================== --- trunk/reactos/base/system/smss2/smss.h [iso-8859-1] (original) +++ trunk/reactos/base/system/smss2/smss.h [iso-8859-1] Mon Feb 6 20:53:47 2012 @@ -7,7 +7,6 @@ */ /* DEPENDENCIES ***************************************************************/ -#pragma once #ifndef _SM_ #define _SM_
12 years, 10 months
1
0
0
0
[akhaldi] 55470: [MSI_WINETEST] * Sync to Wine 1.3.37. This partially reverts r55047.
by akhaldi@svn.reactos.org
Author: akhaldi Date: Mon Feb 6 20:43:38 2012 New Revision: 55470 URL:
http://svn.reactos.org/svn/reactos?rev=55470&view=rev
Log: [MSI_WINETEST] * Sync to Wine 1.3.37. This partially reverts r55047. Modified: trunk/rostests/winetests/msi/automation.c trunk/rostests/winetests/msi/package.c Modified: trunk/rostests/winetests/msi/automation.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/msi/automation.…
============================================================================== --- trunk/rostests/winetests/msi/automation.c [iso-8859-1] (original) +++ trunk/rostests/winetests/msi/automation.c [iso-8859-1] Mon Feb 6 20:43:38 2012 @@ -489,79 +489,113 @@ return id; } -typedef struct { - DISPID did; - const char *name; - BOOL todo; -} get_did_t; - -static const get_did_t get_did_data[] = { - { 1, "CreateRecord" }, - { 2, "OpenPackage" }, - { 3, "OpenProduct" }, - { 4, "OpenDatabase" }, - { 5, "SummaryInformation" }, - { 6, "UILevel" }, - { 7, "EnableLog" }, - { 8, "InstallProduct" }, - { 9, "Version" }, - { 10, "LastErrorRecord" }, - { 11, "RegistryValue" }, - { 12, "Environment" }, - { 13, "FileAttributes" }, - { 15, "FileSize" }, - { 16, "FileVersion" }, - { 17, "ProductState" }, - { 18, "ProductInfo" }, - { 19, "ConfigureProduct", TRUE }, - { 20, "ReinstallProduct", TRUE }, - { 21, "CollectUserInfo", TRUE }, - { 22, "ApplyPatch", TRUE }, - { 23, "FeatureParent", TRUE }, - { 24, "FeatureState", TRUE }, - { 25, "UseFeature", TRUE }, - { 26, "FeatureUsageCount", TRUE }, - { 27, "FeatureUsageDate", TRUE }, - { 28, "ConfigureFeature", TRUE }, - { 29, "ReinstallFeature", TRUE }, - { 30, "ProvideComponent", TRUE }, - { 31, "ComponentPath", TRUE }, - { 32, "ProvideQualifiedComponent", TRUE }, - { 33, "QualifierDescription", TRUE }, - { 34, "ComponentQualifiers", TRUE }, - { 35, "Products" }, - { 36, "Features", TRUE }, - { 37, "Components", TRUE }, - { 38, "ComponentClients", TRUE }, - { 39, "Patches", TRUE }, - { 40, "RelatedProducts" }, - { 41, "PatchInfo", TRUE }, - { 42, "PatchTransforms", TRUE }, - { 43, "AddSource", TRUE }, - { 44, "ClearSourceList", TRUE }, - { 45, "ForceSourceListResolution", TRUE }, - { 46, "ShortcutTarget", TRUE }, - { 47, "FileHash", TRUE }, - { 48, "FileSignatureInfo", TRUE }, - { 0 } -}; - static void test_dispid(void) { - const get_did_t *ptr = get_did_data; DISPID dispid; - while (ptr->name) + dispid = get_dispid(pInstaller, "CreateRecord"); + ok(dispid == 1, "Expected 1, got %d\n", dispid); + dispid = get_dispid(pInstaller, "OpenPackage"); + ok(dispid == 2, "Expected 2, got %d\n", dispid); + dispid = get_dispid(pInstaller, "OpenProduct"); + ok(dispid == 3, "Expected 3, got %d\n", dispid); + dispid = get_dispid(pInstaller, "OpenDatabase"); + ok(dispid == 4, "Expected 4, got %d\n", dispid); + dispid = get_dispid(pInstaller, "SummaryInformation"); + ok(dispid == 5, "Expected 5, got %d\n", dispid); + dispid = get_dispid( pInstaller, "UILevel" ); + ok(dispid == 6, "Expected 6, got %d\n", dispid); + dispid = get_dispid(pInstaller, "EnableLog"); + ok(dispid == 7, "Expected 7, got %d\n", dispid); + dispid = get_dispid(pInstaller, "InstallProduct"); + ok(dispid == 8, "Expected 8, got %d\n", dispid); + dispid = get_dispid(pInstaller, "Version"); + ok(dispid == 9, "Expected 9, got %d\n", dispid); + dispid = get_dispid(pInstaller, "LastErrorRecord"); + ok(dispid == 10, "Expected 10, got %d\n", dispid); + dispid = get_dispid(pInstaller, "RegistryValue"); + ok(dispid == 11, "Expected 11, got %d\n", dispid); + dispid = get_dispid(pInstaller, "Environment"); + ok(dispid == 12, "Expected 12, got %d\n", dispid); + dispid = get_dispid(pInstaller, "FileAttributes"); + ok(dispid == 13, "Expected 13, got %d\n", dispid); + dispid = get_dispid(pInstaller, "FileSize"); + ok(dispid == 15, "Expected 15, got %d\n", dispid); + dispid = get_dispid(pInstaller, "FileVersion"); + ok(dispid == 16, "Expected 16, got %d\n", dispid); + dispid = get_dispid(pInstaller, "ProductState"); + ok(dispid == 17, "Expected 17, got %d\n", dispid); + dispid = get_dispid(pInstaller, "ProductInfo"); + ok(dispid == 18, "Expected 18, got %d\n", dispid); + todo_wine { - dispid = get_dispid(pInstaller, ptr->name); - if (ptr->todo) - todo_wine - ok(dispid == ptr->did, "%s: expected %d, got %d\n", ptr->name, ptr->did, dispid); - else - ok(dispid == ptr->did, "%s: expected %d, got %d\n", ptr->name, ptr->did, dispid); - ptr++; - } - + dispid = get_dispid(pInstaller, "ConfigureProduct"); + ok(dispid == 19, "Expected 19, got %d\n", dispid); + dispid = get_dispid(pInstaller, "ReinstallProduct"); + ok(dispid == 20 , "Expected 20, got %d\n", dispid); + dispid = get_dispid(pInstaller, "CollectUserInfo"); + ok(dispid == 21, "Expected 21, got %d\n", dispid); + dispid = get_dispid(pInstaller, "ApplyPatch"); + ok(dispid == 22, "Expected 22, got %d\n", dispid); + dispid = get_dispid(pInstaller, "FeatureParent"); + ok(dispid == 23, "Expected 23, got %d\n", dispid); + dispid = get_dispid(pInstaller, "FeatureState"); + ok(dispid == 24, "Expected 24, got %d\n", dispid); + dispid = get_dispid(pInstaller, "UseFeature"); + ok(dispid == 25, "Expected 25, got %d\n", dispid); + dispid = get_dispid(pInstaller, "FeatureUsageCount"); + ok(dispid == 26, "Expected 26, got %d\n", dispid); + dispid = get_dispid(pInstaller, "FeatureUsageDate"); + ok(dispid == 27, "Expected 27, got %d\n", dispid); + dispid = get_dispid(pInstaller, "ConfigureFeature"); + ok(dispid == 28, "Expected 28, got %d\n", dispid); + dispid = get_dispid(pInstaller, "ReinstallFeature"); + ok(dispid == 29, "Expected 29, got %d\n", dispid); + dispid = get_dispid(pInstaller, "ProvideComponent"); + ok(dispid == 30, "Expected 30, got %d\n", dispid); + dispid = get_dispid(pInstaller, "ComponentPath"); + ok(dispid == 31, "Expected 31, got %d\n", dispid); + dispid = get_dispid(pInstaller, "ProvideQualifiedComponent"); + ok(dispid == 32, "Expected 32, got %d\n", dispid); + dispid = get_dispid(pInstaller, "QualifierDescription"); + ok(dispid == 33, "Expected 33, got %d\n", dispid); + dispid = get_dispid(pInstaller, "ComponentQualifiers"); + ok(dispid == 34, "Expected 34, got %d\n", dispid); + } + dispid = get_dispid(pInstaller, "Products"); + ok(dispid == 35, "Expected 35, got %d\n", dispid); + todo_wine + { + dispid = get_dispid(pInstaller, "Features"); + ok(dispid == 36, "Expected 36, got %d\n", dispid); + dispid = get_dispid(pInstaller, "Components"); + ok(dispid == 37, "Expected 37, got %d\n", dispid); + dispid = get_dispid(pInstaller, "ComponentClients"); + ok(dispid == 38, "Expected 38, got %d\n", dispid); + dispid = get_dispid(pInstaller, "Patches"); + ok(dispid == 39, "Expected 39, got %d\n", dispid); + } + dispid = get_dispid(pInstaller, "RelatedProducts"); + ok(dispid == 40, "Expected 40, got %d\n", dispid); + todo_wine + { + dispid = get_dispid(pInstaller, "PatchInfo"); + ok(dispid == 41, "Expected 41, got %d\n", dispid); + dispid = get_dispid(pInstaller, "PatchTransforms"); + ok(dispid == 42, "Expected 42, got %d\n", dispid); + dispid = get_dispid(pInstaller, "AddSource"); + ok(dispid == 43, "Expected 43, got %d\n", dispid); + dispid = get_dispid(pInstaller, "ClearSourceList"); + ok(dispid == 44, "Expected 44, got %d\n", dispid); + dispid = get_dispid(pInstaller, "ForceSourceListResolution"); + ok(dispid == 45, "Expected 45, got %d\n", dispid); + dispid = get_dispid(pInstaller, "ShortcutTarget"); + ok(dispid == 46, "Expected 46, got %d\n", dispid); + dispid = get_dispid(pInstaller, "FileHash"); + ok(dispid == 47, "Expected 47, got %d\n", dispid); + dispid = get_dispid(pInstaller, "FileSignatureInfo"); + ok(dispid == 48, "Expected 48, got %d\n", dispid); + } dispid = get_dispid(pInstaller, "RemovePatches"); ok(dispid == 49 || dispid == -1, "Expected 49 or -1, got %d\n", dispid); dispid = get_dispid(pInstaller, "ApplyMultiplePatches"); Modified: trunk/rostests/winetests/msi/package.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/msi/package.c?r…
============================================================================== --- trunk/rostests/winetests/msi/package.c [iso-8859-1] (original) +++ trunk/rostests/winetests/msi/package.c [iso-8859-1] Mon Feb 6 20:43:38 2012 @@ -1134,7 +1134,6 @@ r = MsiSetTargetPath( hpkg, "TARGETDIR", tempdir ); ok( r == ERROR_SUCCESS, "MsiSetTargetPath on subsubdir returned %d\n", r ); - buffer[0] = 0; sz = sizeof buffer - 1; lstrcat( tempdir, "\\" ); r = MsiGetTargetPath( hpkg, "TARGETDIR", buffer, &sz ); @@ -1145,7 +1144,6 @@ query_file_path( hpkg, "[#RootFile]", buffer ); ok( !lstrcmp(buffer, file), "Expected %s, got %s\n", file, buffer); - buffer[0] = 0; sz = sizeof(buffer); r = MsiGetPropertyA( hpkg, "TestParent", buffer, &sz ); ok( r == ERROR_SUCCESS, "MsiGetProperty returned %u\n", r ); @@ -1155,19 +1153,16 @@ r = MsiSetTargetPath( hpkg, "TestParent", "C:\\one\\two" ); ok( r == ERROR_SUCCESS, "MsiSetTargetPath returned %d\n", r ); - buffer[0] = 0; sz = sizeof(buffer); r = MsiGetPropertyA( hpkg, "TestParent", buffer, &sz ); ok( r == ERROR_SUCCESS, "MsiGetProperty returned %u\n", r ); ok( lstrcmpi(buffer, "C:\\one\\two\\TestDir\\"), "Expected \"C:\\one\\two\\TestDir\\\", got \"%s\"\n", buffer ); - buffer[0] = 0; query_file_path( hpkg, "[#TestFile]", buffer ); ok( !lstrcmpi(buffer, "C:\\one\\two\\TestDir\\testfile.txt"), "Expected C:\\one\\two\\TestDir\\testfile.txt, got %s\n", buffer ); - buffer[0] = 0; sz = sizeof buffer - 1; r = MsiGetTargetPath( hpkg, "TestParent", buffer, &sz ); ok( r == ERROR_SUCCESS, "failed to get target path: %d\n", r); @@ -1176,7 +1171,6 @@ r = MsiSetTargetPath( hpkg, "TestParent", "C:\\one\\two\\three" ); ok( r == ERROR_SUCCESS, "MsiSetTargetPath returned %d\n", r ); - buffer[0] = 0; sz = sizeof buffer - 1; r = MsiGetTargetPath( hpkg, "TestParent", buffer, &sz ); ok( r == ERROR_SUCCESS, "failed to get target path: %d\n", r); @@ -1185,20 +1179,10 @@ r = MsiSetTargetPath( hpkg, "TestParent", "C:\\\\one\\\\two " ); ok( r == ERROR_SUCCESS, "MsiSetTargetPath returned %d\n", r ); - buffer[0] = 0; sz = sizeof buffer - 1; r = MsiGetTargetPath( hpkg, "TestParent", buffer, &sz ); ok( r == ERROR_SUCCESS, "failed to get target path: %d\n", r); ok( !lstrcmpi(buffer, "C:\\one\\two\\"), "Expected \"C:\\one\\two\\\", got %s\n", buffer); - - r = MsiSetTargetPath( hpkg, "TestParent", "C:\\\\ Program Files \\\\ " ); - ok( r == ERROR_SUCCESS, "MsiSetTargetPath returned %d\n", r ); - - buffer[0] = 0; - sz = sizeof buffer - 1; - r = MsiGetTargetPath( hpkg, "TestParent", buffer, &sz ); - ok( r == ERROR_SUCCESS, "failed to get target path: %d\n", r); - ok( !lstrcmpi(buffer, "C:\\Program Files\\"), "Expected \"C:\\Program Files\\\", got %s\n", buffer); MsiCloseHandle( hpkg ); } @@ -10988,17 +10972,13 @@ /* source path does not exist, but the property exists */ size = MAX_PATH; lstrcpyA(path, "kiwi"); - r = MsiGetProperty(hpkg, "SourceDir", path, &size); - ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); - ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path); - ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size); - - size = MAX_PATH; - lstrcpyA(path, "kiwi"); r = MsiGetProperty(hpkg, "SOURCEDIR", path, &size); ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); - ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path); - ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size); + todo_wine + { + ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path); + ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size); + } /* try SubDir after CostInitialize */ size = MAX_PATH; @@ -11047,13 +11027,6 @@ /* source path does not exist, but the property exists */ size = MAX_PATH; lstrcpyA(path, "kiwi"); - r = MsiGetProperty(hpkg, "SourceDir", path, &size); - ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); - ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path); - ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size); - - size = MAX_PATH; - lstrcpyA(path, "kiwi"); r = MsiGetProperty(hpkg, "SOURCEDIR", path, &size); ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path); @@ -11106,13 +11079,6 @@ /* source path does not exist, but the property exists */ size = MAX_PATH; lstrcpyA(path, "kiwi"); - r = MsiGetProperty(hpkg, "SourceDir", path, &size); - ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); - ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path); - ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size); - - size = MAX_PATH; - lstrcpyA(path, "kiwi"); r = MsiGetProperty(hpkg, "SOURCEDIR", path, &size); ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path); @@ -11163,13 +11129,6 @@ ok(size == MAX_PATH, "Expected size to be unchanged, got %d\n", size); /* source path does not exist, but the property exists */ - size = MAX_PATH; - lstrcpyA(path, "kiwi"); - r = MsiGetProperty(hpkg, "SourceDir", path, &size); - ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); - ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path); - ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size); - size = MAX_PATH; lstrcpyA(path, "kiwi"); r = MsiGetProperty(hpkg, "SOURCEDIR", path, &size); @@ -11309,13 +11268,6 @@ /* source path nor the property exist */ size = MAX_PATH; lstrcpyA(path, "kiwi"); - r = MsiGetProperty(hpkg, "SourceDir", path, &size); - ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); - ok(!lstrcmpA(path, ""), "Expected \"\", got \"%s\"\n", path); - ok(size == 0, "Expected 0, got %d\n", size); - - size = MAX_PATH; - lstrcpyA(path, "kiwi"); r = MsiGetProperty(hpkg, "SOURCEDIR", path, &size); ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); ok(!lstrcmpA(path, ""), "Expected \"\", got \"%s\"\n", path); @@ -11372,17 +11324,13 @@ /* source path does not exist, but the property exists */ size = MAX_PATH; lstrcpyA(path, "kiwi"); - r = MsiGetProperty(hpkg, "SourceDir", path, &size); - ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); - ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path); - ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size); - - size = MAX_PATH; - lstrcpyA(path, "kiwi"); r = MsiGetProperty(hpkg, "SOURCEDIR", path, &size); ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); - ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path); - ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size); + todo_wine + { + ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path); + ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size); + } /* try SubDir after CostInitialize */ size = MAX_PATH; @@ -11433,13 +11381,6 @@ /* source path and the property exist */ size = MAX_PATH; lstrcpyA(path, "kiwi"); - r = MsiGetProperty(hpkg, "SourceDir", path, &size); - ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); - ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path); - ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size); - - size = MAX_PATH; - lstrcpyA(path, "kiwi"); r = MsiGetProperty(hpkg, "SOURCEDIR", path, &size); ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path); @@ -11494,13 +11435,6 @@ /* source path and the property exist */ size = MAX_PATH; lstrcpyA(path, "kiwi"); - r = MsiGetProperty(hpkg, "SourceDir", path, &size); - ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); - ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path); - ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size); - - size = MAX_PATH; - lstrcpyA(path, "kiwi"); r = MsiGetProperty(hpkg, "SOURCEDIR", path, &size); ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path); @@ -11553,13 +11487,6 @@ } /* source path and the property exist */ - size = MAX_PATH; - lstrcpyA(path, "kiwi"); - r = MsiGetProperty(hpkg, "SourceDir", path, &size); - ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); - ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path); - ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size); - size = MAX_PATH; lstrcpyA(path, "kiwi"); r = MsiGetProperty(hpkg, "SOURCEDIR", path, &size);
12 years, 10 months
1
0
0
0
[akhaldi] 55469: [MSI] * Properly sync to Wine 1.3.37. This partially reverts r55046.
by akhaldi@svn.reactos.org
Author: akhaldi Date: Mon Feb 6 20:43:28 2012 New Revision: 55469 URL:
http://svn.reactos.org/svn/reactos?rev=55469&view=rev
Log: [MSI] * Properly sync to Wine 1.3.37. This partially reverts r55046. Removed: trunk/reactos/dll/win32/msi/cond.tab.h trunk/reactos/dll/win32/msi/msiserver.h Modified: trunk/reactos/dll/win32/msi/action.c trunk/reactos/dll/win32/msi/automation.c trunk/reactos/dll/win32/msi/cond.y trunk/reactos/dll/win32/msi/install.c trunk/reactos/dll/win32/msi/msi.c trunk/reactos/dll/win32/msi/msi.rgs trunk/reactos/dll/win32/msi/msipriv.h trunk/reactos/media/doc/README.WINE [This mail would be too long, it was shortened to contain the URLs only.] Modified: trunk/reactos/dll/win32/msi/action.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/action.c?rev…
Modified: trunk/reactos/dll/win32/msi/automation.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/automation.c…
Removed: trunk/reactos/dll/win32/msi/cond.tab.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/cond.tab.h?r…
Modified: trunk/reactos/dll/win32/msi/cond.y URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/cond.y?rev=5…
Modified: trunk/reactos/dll/win32/msi/install.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/install.c?re…
Modified: trunk/reactos/dll/win32/msi/msi.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/msi.c?rev=55…
Modified: trunk/reactos/dll/win32/msi/msi.rgs URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/msi.rgs?rev=…
Modified: trunk/reactos/dll/win32/msi/msipriv.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/msipriv.h?re…
Removed: trunk/reactos/dll/win32/msi/msiserver.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/msiserver.h?…
Modified: trunk/reactos/media/doc/README.WINE URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=…
12 years, 10 months
1
0
0
0
[ion] 55468: [SMSS2]: I hate you, rbuild.
by ion@svn.reactos.org
Author: ion Date: Mon Feb 6 19:37:19 2012 New Revision: 55468 URL:
http://svn.reactos.org/svn/reactos?rev=55468&view=rev
Log: [SMSS2]: I hate you, rbuild. Modified: trunk/reactos/base/system/smss2/smss.h Modified: trunk/reactos/base/system/smss2/smss.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/smss2/smss.h?r…
============================================================================== --- trunk/reactos/base/system/smss2/smss.h [iso-8859-1] (original) +++ trunk/reactos/base/system/smss2/smss.h [iso-8859-1] Mon Feb 6 19:37:19 2012 @@ -7,6 +7,9 @@ */ /* DEPENDENCIES ***************************************************************/ +#pragma once +#ifndef _SM_ +#define _SM_ // // Native Headers @@ -206,4 +209,5 @@ NTAPI SmpTranslateSystemPartitionInformation( VOID - ); +); +#endif
12 years, 10 months
1
0
0
0
[ion] 55467: [SMSS2]: Implement SmpTranslateSystemPartitionInformation which sets a few last registry keys as part of the initialization process. [SMSS2]: Implement SmpLoadSubsystemsForMuSession wh...
by ion@svn.reactos.org
Author: ion Date: Mon Feb 6 18:57:18 2012 New Revision: 55467 URL:
http://svn.reactos.org/svn/reactos?rev=55467&view=rev
Log: [SMSS2]: Implement SmpTranslateSystemPartitionInformation which sets a few last registry keys as part of the initialization process. [SMSS2]: Implement SmpLoadSubsystemsForMuSession which correctly creates a session, loads win32k.sys inside of it, and then detaches from the session. Winlogon.exe is set as the initial command (but not launched), and CSRSS is fake-started. [CSRSRV]: No longer start win32k.sys, that's not your job. [SMSS2]: Kill most debug prints that aren't errors. Modified: trunk/reactos/base/system/smss2/sminit.c trunk/reactos/base/system/smss2/smss.c trunk/reactos/base/system/smss2/smss.h trunk/reactos/base/system/smss2/smsubsys.c trunk/reactos/subsystems/win32/csrss/csrsrv/init.c Modified: trunk/reactos/base/system/smss2/sminit.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/smss2/sminit.c…
============================================================================== --- trunk/reactos/base/system/smss2/sminit.c [iso-8859-1] (original) +++ trunk/reactos/base/system/smss2/sminit.c [iso-8859-1] Mon Feb 6 18:57:18 2012 @@ -13,14 +13,6 @@ #include "debug.h" /* GLOBALS ********************************************************************/ - -typedef struct _SMP_REGISTRY_VALUE -{ - LIST_ENTRY Entry; - UNICODE_STRING Name; - UNICODE_STRING Value; - PCHAR AnsiValue; -} SMP_REGISTRY_VALUE, *PSMP_REGISTRY_VALUE; UNICODE_STRING SmpSubsystemName, PosixName, Os2Name; LIST_ENTRY SmpBootExecuteList, SmpSetupExecuteList, SmpPagingFileList; @@ -244,7 +236,7 @@ /* Recreate the security descriptors to take into account security mode */ SmpCreateSecurityDescriptors(FALSE); - DPRINT1("SmpProtectionMode: %d\n", SmpProtectionMode); + DPRINT("SmpProtectionMode: %d\n", SmpProtectionMode); return STATUS_SUCCESS; } @@ -269,7 +261,7 @@ SmpAllowProtectedRenames = 0; } - DPRINT1("SmpAllowProtectedRenames: %d\n", SmpAllowProtectedRenames); + DPRINT("SmpAllowProtectedRenames: %d\n", SmpAllowProtectedRenames); return STATUS_SUCCESS; } @@ -315,7 +307,7 @@ OBJ_PERMANENT, NULL, SecDescriptor); - DPRINT1("Creating: %wZ directory\n", &SearchString); + DPRINT("Creating: %wZ directory\n", &SearchString); Status = NtCreateDirectoryObject(&DirHandle, DIRECTORY_ALL_ACCESS, &ObjectAttributes); @@ -403,7 +395,7 @@ while (*DllName) { /* Add this to the linked list */ - DPRINT1("Excluded DLL: %S\n", DllName); + DPRINT("Excluded DLL: %S\n", DllName); Status = SmpSaveRegistryValue(EntryContext, DllName, NULL, TRUE); /* Bail out on failure or if only one DLL name was present */ @@ -478,7 +470,7 @@ } /* This is the directory, initialize it */ - DPRINT1("KnownDll Path: %S\n", ValueData); + DPRINT("KnownDll Path: %S\n", ValueData); return SmpInitializeKnownDllPath(&SmpKnownDllPath, ValueData, ValueLength); } @@ -497,7 +489,7 @@ /* Convert the strings into UNICODE_STRING and set the variable defined */ RtlInitUnicodeString(&ValueString, ValueName); RtlInitUnicodeString(&DataString, ValueData); - DPRINT1("Setting %wZ = %wZ\n", &ValueString, &DataString); + DPRINT("Setting %wZ = %wZ\n", &ValueString, &DataString); Status = RtlSetEnvironmentVariable(0, &ValueString, &DataString); if (!NT_SUCCESS(Status)) { @@ -545,7 +537,7 @@ (ValueType != REG_DWORD)) { /* It isn't, must be a subsystem entry, add it to the list */ - DPRINT1("Subsystem entry: %S-%S\n", ValueName, ValueData); + DPRINT("Subsystem entry: %S-%S\n", ValueName, ValueData); return SmpSaveRegistryValue(EntryContext, ValueName, ValueData, TRUE); } @@ -562,7 +554,7 @@ while (*SubsystemName) { /* We should have already put it into the list when we found it */ - DPRINT1("Found subsystem: %S\n", SubsystemName); + DPRINT("Found subsystem: %S\n", SubsystemName); RegEntry = SmpFindRegistryValue(EntryContext, SubsystemName); if (!RegEntry) { @@ -578,13 +570,13 @@ if (_wcsicmp(ValueName, L"Required")) { /* Put it into the optional list */ - DPRINT1("Optional\n"); + DPRINT("Optional\n"); InsertTailList(&SmpSubSystemsToDefer, &RegEntry->Entry); } else { /* Put it into the required list */ - DPRINT1("Required\n"); + DPRINT("Required\n"); InsertTailList(&SmpSubSystemsToLoad, &RegEntry->Entry); } } @@ -795,6 +787,161 @@ }; /* FUNCTIONS ******************************************************************/ + +VOID +NTAPI +SmpTranslateSystemPartitionInformation(VOID) +{ + NTSTATUS Status; + UNICODE_STRING UnicodeString, LinkTarget, SearchString, SystemPartition; + OBJECT_ATTRIBUTES ObjectAttributes; + HANDLE KeyHandle, LinkHandle; + CHAR ValueBuffer[512 + sizeof(KEY_VALUE_PARTIAL_INFORMATION)]; + PKEY_VALUE_PARTIAL_INFORMATION PartialInfo = (PVOID)ValueBuffer; + ULONG Length, Context; + CHAR DirInfoBuffer[512 + sizeof(OBJECT_DIRECTORY_INFORMATION)]; + POBJECT_DIRECTORY_INFORMATION DirInfo = (PVOID)DirInfoBuffer; + WCHAR LinkBuffer[MAX_PATH]; + + /* Open the setup key */ + RtlInitUnicodeString(&UnicodeString, L"\\Registry\\Machine\\System\\Setup"); + InitializeObjectAttributes(&ObjectAttributes, + &UnicodeString, + OBJ_CASE_INSENSITIVE, + NULL, + NULL); + Status = NtOpenKey(&KeyHandle, KEY_READ, &ObjectAttributes); + if (!NT_SUCCESS(Status)) + { + DPRINT1("SMSS: can't open system setup key for reading: 0x%x\n", Status); + return; + } + + /* Query the system partition */ + RtlInitUnicodeString(&UnicodeString, L"SystemPartition"); + Status = NtQueryValueKey(KeyHandle, + &UnicodeString, + KeyValuePartialInformation, + PartialInfo, + sizeof(ValueBuffer), + &Length); + NtClose(KeyHandle); + if (!NT_SUCCESS(Status)) + { + DPRINT1("SMSS: can't query SystemPartition value: 0x%x\n", Status); + return; + } + + /* Initialize the system partition string string */ + RtlInitUnicodeString(&SystemPartition, (PWCHAR)PartialInfo->Data); + + /* Enumerate the directory looking for the symbolic link string */ + RtlInitUnicodeString(&SearchString, L"SymbolicLink"); + RtlInitEmptyUnicodeString(&LinkTarget, LinkBuffer, sizeof(LinkBuffer)); + Status = NtQueryDirectoryObject(SmpDosDevicesObjectDirectory, + DirInfo, + sizeof(DirInfoBuffer), + TRUE, + TRUE, + &Context, + NULL); + if (!NT_SUCCESS(Status)) + { + DPRINT1("SMSS: can't find drive letter for system partition\n"); + return; + } + + /* Keep searching until we find it */ + do + { + /* Is this it? */ + if ((RtlEqualUnicodeString(&DirInfo->TypeName, &SearchString, TRUE)) && + (DirInfo->Name.Length == 2 * sizeof(WCHAR)) && + (DirInfo->Name.Buffer[1] == L':')) + { + /* Looks like we found it, open the link to get its target */ + InitializeObjectAttributes(&ObjectAttributes, + &DirInfo->Name, + OBJ_CASE_INSENSITIVE, + SmpDosDevicesObjectDirectory, + NULL); + Status = NtOpenSymbolicLinkObject(&LinkHandle, + SYMBOLIC_LINK_ALL_ACCESS, + &ObjectAttributes); + if (NT_SUCCESS(Status)) + { + /* Open worked, query the target now */ + Status = NtQuerySymbolicLinkObject(LinkHandle, + &LinkTarget, + NULL); + NtClose(LinkHandle); + + /* Check if it matches the string we had found earlier */ + if ((NT_SUCCESS(Status)) && + ((RtlEqualUnicodeString(&SystemPartition, + &LinkTarget, + TRUE)) || + ((RtlPrefixUnicodeString(&SystemPartition, + &LinkTarget, + TRUE)) && + (LinkTarget.Buffer[SystemPartition.Length / sizeof(WCHAR)] == L'\\')))) + { + /* All done */ + break; + } + } + } + + /* Couldn't find it, try again */ + Status = NtQueryDirectoryObject(SmpDosDevicesObjectDirectory, + DirInfo, + sizeof(DirInfoBuffer), + TRUE, + FALSE, + &Context, + NULL); + } while (NT_SUCCESS(Status)); + if (!NT_SUCCESS(Status)) + { + DPRINT1("SMSS: can't find drive letter for system partition\n"); + return; + } + + /* Open the setup key again, for full access this time */ + RtlInitUnicodeString(&UnicodeString, + L"\\Registry\\Machine\\Software\\Microsoft\\Windows\\CurrentVersion\\Setup"); + InitializeObjectAttributes(&ObjectAttributes, + &UnicodeString, + OBJ_CASE_INSENSITIVE, + NULL, + NULL); + Status = NtOpenKey(&KeyHandle, KEY_ALL_ACCESS, &ObjectAttributes); + if (!NT_SUCCESS(Status)) + { + DPRINT1("SMSS: can't open software setup key for writing: 0x%x\n", + Status); + return; + } + + /* Wrap up the end of the link buffer */ + wcsncpy(LinkBuffer, DirInfo->Name.Buffer, 2); + LinkBuffer[2] = L'\\'; + LinkBuffer[3] = L'\0'; + + /* Now set this as the "BootDir" */ + RtlInitUnicodeString(&UnicodeString, L"BootDir"); + Status = NtSetValueKey(KeyHandle, + &UnicodeString, + 0, + REG_SZ, + LinkBuffer, + 4 * sizeof(WCHAR)); + if (!NT_SUCCESS(Status)) + { + DPRINT1("SMSS: couldn't write BootDir value: 0x%x\n", Status); + } + NtClose(KeyHandle); +} NTSTATUS NTAPI @@ -1151,7 +1298,7 @@ } /* Create the symbolic link */ - DPRINT1("Creating symlink for %wZ to %wZ\n", &RegEntry->Name, &RegEntry->Value); + DPRINT("Creating symlink for %wZ to %wZ\n", &RegEntry->Name, &RegEntry->Value); Status = NtCreateSymbolicLinkObject(&DirHandle, SYMBOLIC_LINK_ALL_ACCESS, &ObjectAttributes, @@ -1357,7 +1504,7 @@ { /* Get the entry and skip it if it's in the exluded list */ RegEntry = CONTAINING_RECORD(NextEntry, SMP_REGISTRY_VALUE, Entry); - DPRINT1("Processing known DLL: %wZ-%wZ\n", &RegEntry->Name, &RegEntry->Value); + DPRINT("Processing known DLL: %wZ-%wZ\n", &RegEntry->Name, &RegEntry->Value); if ((SmpFindRegistryValue(&SmpExcludeKnownDllsList, RegEntry->Name.Buffer)) || (SmpFindRegistryValue(&SmpExcludeKnownDllsList, @@ -1388,6 +1535,8 @@ &ImageCharacteristics); if (!NT_SUCCESS(Status)) { + DPRINT1("Hey ReactOS -- you suck! Please fix the checksum (or the API) behind: %wZ\n", &RegEntry->Value); + #if 0 /* Checksum failed, so don't even try going further -- kill SMSS */ RtlInitUnicodeString(&ErrorResponse, L"Verification of a KnownDLL failed."); @@ -1395,6 +1544,7 @@ ErrorParameters[1] = Status; ErrorParameters[2] = (ULONG)&RegEntry->Value; SmpTerminate(ErrorParameters, 5, RTL_NUMBER_OF(ErrorParameters)); + #endif } else if (!(ImageCharacteristics & IMAGE_FILE_DLL)) { @@ -1559,7 +1709,7 @@ /* First let's write the OS variable */ RtlInitUnicodeString(&ValueName, L"OS"); - DPRINT1("Setting %wZ to %S\n", &ValueName, L"Windows_NT"); + DPRINT("Setting %wZ to %S\n", &ValueName, L"Windows_NT"); Status = NtSetValueKey(KeyHandle, &ValueName, 0, @@ -1597,7 +1747,7 @@ } /* Set it */ - DPRINT1("Setting %wZ to %S\n", &ValueName, ArchName); + DPRINT("Setting %wZ to %S\n", &ValueName, ArchName); Status = NtSetValueKey(KeyHandle, &ValueName, 0, @@ -1615,7 +1765,7 @@ /* And now let's write the processor level */ RtlInitUnicodeString(&ValueName, L"PROCESSOR_LEVEL"); swprintf(ValueBuffer, L"%u", ProcessorInfo.ProcessorLevel); - DPRINT1("Setting %wZ to %S\n", &ValueName, ValueBuffer); + DPRINT("Setting %wZ to %S\n", &ValueName, ValueBuffer); Status = NtSetValueKey(KeyHandle, &ValueName, 0, @@ -1683,7 +1833,7 @@ /* So that we can set this as the PROCESSOR_IDENTIFIER variable */ RtlInitUnicodeString(&ValueName, L"PROCESSOR_IDENTIFIER"); - DPRINT1("Setting %wZ to %S\n", &ValueName, PartialInfo->Data); + DPRINT("Setting %wZ to %S\n", &ValueName, PartialInfo->Data); Status = NtSetValueKey(KeyHandle, &ValueName, 0, @@ -1725,7 +1875,7 @@ } /* Write the revision to the registry */ - DPRINT1("Setting %wZ to %S\n", &ValueName, ValueBuffer); + DPRINT("Setting %wZ to %S\n", &ValueName, ValueBuffer); Status = NtSetValueKey(KeyHandle, &ValueName, 0, @@ -1743,7 +1893,7 @@ /* And finally, write the number of CPUs */ RtlInitUnicodeString(&ValueName, L"NUMBER_OF_PROCESSORS"); swprintf(ValueBuffer, L"%u", BasicInfo.NumberOfProcessors); - DPRINT1("Setting %wZ to %S\n", &ValueName, ValueBuffer); + DPRINT("Setting %wZ to %S\n", &ValueName, ValueBuffer); Status = NtSetValueKey(KeyHandle, &ValueName, 0, @@ -1797,7 +1947,7 @@ } /* And write it in the environment! */ - DPRINT1("Setting %wZ to %S\n", &ValueName, ValueBuffer); + DPRINT("Setting %wZ to %S\n", &ValueName, ValueBuffer); Status = NtSetValueKey(KeyHandle, &ValueName, 0, Modified: trunk/reactos/base/system/smss2/smss.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/smss2/smss.c?r…
============================================================================== --- trunk/reactos/base/system/smss2/smss.c [iso-8859-1] (original) +++ trunk/reactos/base/system/smss2/smss.c [iso-8859-1] Mon Feb 6 18:57:18 2012 @@ -627,7 +627,7 @@ Status = SmpInit(&InitialCommand, Handles); if (!NT_SUCCESS(Status)) { - DPRINT1("SMSS: SmpInit return failure - Status == %x\n"); + DPRINT1("SMSS: SmpInit return failure - Status == %x\n", Status); RtlInitUnicodeString(&DbgString, L"Session Manager Initialization"); Parameters[1] = Status; //_SEH2_LEAVE; Hack so that setup can work. will go away later Modified: trunk/reactos/base/system/smss2/smss.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/smss2/smss.h?r…
============================================================================== --- trunk/reactos/base/system/smss2/smss.h [iso-8859-1] (original) +++ trunk/reactos/base/system/smss2/smss.h [iso-8859-1] Mon Feb 6 18:57:18 2012 @@ -36,6 +36,16 @@ #define SMP_SUBSYSTEM_FLAG 0x08 #define SMP_INVALID_PATH 0x10 #define SMP_DEFERRED_FLAG 0x20 + +/* STRUCTURES *****************************************************************/ + +typedef struct _SMP_REGISTRY_VALUE +{ + LIST_ENTRY Entry; + UNICODE_STRING Name; + UNICODE_STRING Value; + PCHAR AnsiValue; +} SMP_REGISTRY_VALUE, *PSMP_REGISTRY_VALUE; /* EXTERNALS ******************************************************************/ @@ -56,6 +66,11 @@ extern UNICODE_STRING SmpSystemRoot; extern PWCHAR SmpDefaultEnvironment; extern UNICODE_STRING SmpDefaultLibPath; +extern LIST_ENTRY SmpSetupExecuteList; +extern LIST_ENTRY SmpSubSystemsToLoad; +extern LIST_ENTRY SmpExecuteList; +extern LIST_ENTRY SmpSubSystemList; +extern ULONG AttachedSessionId; /* FUNCTIONS ******************************************************************/ @@ -187,4 +202,8 @@ IN PUNICODE_STRING FileName ); - +VOID +NTAPI +SmpTranslateSystemPartitionInformation( + VOID + ); Modified: trunk/reactos/base/system/smss2/smsubsys.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/smss2/smsubsys…
============================================================================== --- trunk/reactos/base/system/smss2/smsubsys.c [iso-8859-1] (original) +++ trunk/reactos/base/system/smss2/smsubsys.c [iso-8859-1] Mon Feb 6 18:57:18 2012 @@ -19,6 +19,7 @@ HANDLE SmpWindowsSubSysProcess; HANDLE SmpWindowsSubSysProcessId; BOOLEAN RegPosixSingleInstance; +WCHAR InitialCommandBuffer[256]; /* FUNCTIONS ******************************************************************/ @@ -31,7 +32,7 @@ OUT PHANDLE ProcessId) { DPRINT1("Should start subsystem %wZ for Session: %lx\n", FileName, MuSessionId); - return STATUS_SUCCESS; + return STATUS_SUCCESS; } NTSTATUS @@ -40,7 +41,169 @@ OUT PHANDLE ProcessId, IN PUNICODE_STRING InitialCommand) { - DPRINT1("Should start subsystems for Session: %lx\n", *MuSessionId); - return STATUS_SUCCESS; + NTSTATUS Status = STATUS_SUCCESS, Status2; + PSMP_REGISTRY_VALUE RegEntry; + UNICODE_STRING DestinationString, NtPath; + PLIST_ENTRY NextEntry; + LARGE_INTEGER Timeout; + PVOID State; + + /* Write a few last registry keys with the boot partition information */ + SmpTranslateSystemPartitionInformation(); + + /* Process "SetupExecute" values */ + NextEntry = SmpSetupExecuteList.Flink; + while (NextEntry != &SmpSetupExecuteList) + { + /* Execute each one and move on */ + RegEntry = CONTAINING_RECORD(NextEntry, SMP_REGISTRY_VALUE, Entry); + DPRINT1("SetupExecute entry: %wZ\n", &RegEntry->Name); + SmpExecuteCommand(&RegEntry->Name, 0, NULL, 0); + NextEntry = NextEntry->Flink; + } + + /* Now process the subsystems */ + NextEntry = SmpSubSystemList.Flink; + while (NextEntry != &SmpSubSystemList) + { + /* Get the entry and check if this is the special Win32k entry */ + RegEntry = CONTAINING_RECORD(NextEntry, SMP_REGISTRY_VALUE, Entry); + DPRINT1("Subsystem: %wZ\n", &RegEntry->Name); + if (!_wcsicmp(RegEntry->Name.Buffer, L"Kmode")) + { + /* Translate it */ + if (!RtlDosPathNameToNtPathName_U(RegEntry->Value.Buffer, + &NtPath, + NULL, + NULL)) + { + Status = STATUS_OBJECT_PATH_SYNTAX_BAD; + DPRINT1("Failed: %lx\n", Status); + } + else + { + /* Get the driver privilege */ + Status = SmpAcquirePrivilege(SE_LOAD_DRIVER_PRIVILEGE, &State); + if (NT_SUCCESS(Status)) + { + /* Create the new session */ + ASSERT(AttachedSessionId == -1); + Status = NtSetSystemInformation(SystemSessionCreate, + MuSessionId, + sizeof(*MuSessionId)); + if (!NT_SUCCESS(Status)) + { + DPRINT1("SMSS: Session space creation failed\n"); + SmpReleasePrivilege(State); + RtlFreeHeap(RtlGetProcessHeap(), 0, NtPath.Buffer); + return Status; + } + AttachedSessionId = *MuSessionId; + + /* Start Win32k.sys on this session */ + DPRINT1("Starting win32k.sys...\n"); + RtlInitUnicodeString(&DestinationString, + L"\\SystemRoot\\System32\\win32k.sys"); + Status = NtSetSystemInformation(SystemExtendServiceTableInformation, + &DestinationString, + sizeof(DestinationString)); + RtlFreeHeap(RtlGetProcessHeap(), 0, NtPath.Buffer); + SmpReleasePrivilege(State); + if (!NT_SUCCESS(Status)) + { + DPRINT1("SMSS: Load of WIN32K failed.\n"); + return Status; + } + } + } + } + + /* Next entry */ + NextEntry = NextEntry->Flink; + } + + /* Now parse the required subsystem list */ + NextEntry = SmpSubSystemsToLoad.Flink; + while (NextEntry != &SmpSubSystemsToLoad) + { + /* Get each entry and check if it's the internal debug or not */ + RegEntry = CONTAINING_RECORD(NextEntry, SMP_REGISTRY_VALUE, Entry); + DPRINT1("Subsystem (required): %wZ\n", &RegEntry->Name); + if (_wcsicmp(RegEntry->Name.Buffer, L"debug")) + { + /* Load the required subsystem */ + Status = SmpExecuteCommand(&RegEntry->Value, + *MuSessionId, + ProcessId, + SMP_SUBSYSTEM_FLAG); + } + else + { + /* Load the internal debug system */ + Status = SmpExecuteCommand(&RegEntry->Value, + *MuSessionId, + ProcessId, + SMP_DEBUG_FLAG | SMP_SUBSYSTEM_FLAG); + } + if (!NT_SUCCESS(Status)) + { + DbgPrint("SMSS: Subsystem execute failed (%WZ)\n", &RegEntry->Value); + return Status; + } + + /* Move to the next entry */ + NextEntry = NextEntry->Flink; + } + + /* Process the "Execute" list now */ + NextEntry = SmpExecuteList.Blink; + if (NextEntry != &SmpExecuteList) + { + /* Get the custom initial command */ + RegEntry = CONTAINING_RECORD(NextEntry, SMP_REGISTRY_VALUE, Entry); + DPRINT1("Initial command found: %wZ\n", &RegEntry->Name); + + /* Write the initial command and wait for 5 seconds (why??!) */ + *InitialCommand = RegEntry->Name; + Timeout.QuadPart = -50000000; + NtDelayExecution(FALSE, &Timeout); + } + else + { + /* Use the default Winlogon initial command */ + RtlInitUnicodeString(InitialCommand, L"winlogon.exe"); + InitialCommandBuffer[0] = UNICODE_NULL; + DPRINT1("Initial command found: %wZ\n", InitialCommand); + + /* Check if there's a debugger for Winlogon */ + Status2 = LdrQueryImageFileExecutionOptions(InitialCommand, + L"Debugger", + REG_SZ, + InitialCommandBuffer, + sizeof(InitialCommandBuffer) - + InitialCommand->Length, + NULL); + if ((NT_SUCCESS(Status2)) && (InitialCommandBuffer[0])) + { + /* Put the debugger string with the Winlogon string */ + wcscat(InitialCommandBuffer, L" "); + wcscat(InitialCommandBuffer, InitialCommand->Buffer); + RtlInitUnicodeString(InitialCommand, InitialCommandBuffer); + } + } + + /* Finally check if there was a custom initial command */ + NextEntry = SmpExecuteList.Flink; + while (NextEntry != &SmpExecuteList) + { + /* Execute each one */ + RegEntry = CONTAINING_RECORD(NextEntry, SMP_REGISTRY_VALUE, Entry); + DPRINT1("Initial command (custom): %wZ\n", &RegEntry->Name); + SmpExecuteCommand(&RegEntry->Name, *MuSessionId, NULL, 0); + NextEntry = NextEntry->Flink; + } + + /* Return status */ + return Status; } Modified: trunk/reactos/subsystems/win32/csrss/csrsrv/init.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/csrss/csr…
============================================================================== --- trunk/reactos/subsystems/win32/csrss/csrsrv/init.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/csrss/csrsrv/init.c [iso-8859-1] Mon Feb 6 18:57:18 2012 @@ -598,6 +598,7 @@ return Status; } +#if 0 /********************************************************************** * CsrpLoadKernelModeDriver/3 */ @@ -641,6 +642,7 @@ } return Status; } +#endif /********************************************************************** * CsrpCreateApiPort/2 @@ -753,7 +755,7 @@ {TRUE, CsrpCreateApiPort, "create the api port \\Windows\\ApiPort"}, {TRUE, CsrpCreateHardErrorPort, "create the hard error port"}, {TRUE, CsrpCreateObjectDirectory,"create the object directory \\Windows"}, - {TRUE, CsrpLoadKernelModeDriver, "load Kmode driver"}, +// {TRUE, CsrpLoadKernelModeDriver, "load Kmode driver"}, {TRUE, CsrpInitVideo, "initialize video"}, {TRUE, CsrpApiRegisterDef, "initialize api definitions"}, {TRUE, CsrpCCTS, "connect client to server"},
12 years, 10 months
1
0
0
0
← Newer
1
...
44
45
46
47
48
49
50
...
58
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Results per page:
10
25
50
100
200