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
January 2014
----- 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
14 participants
426 discussions
Start a n
N
ew thread
[jgardou] 61575: [WIN32K] - Add some debug print lidting available modes from a device driver. - Take this as an occasion to use the much underrated win32k debug channels Recompiling? You're so 2013!
by jgardou@svn.reactos.org
Author: jgardou Date: Wed Jan 8 23:19:33 2014 New Revision: 61575 URL:
http://svn.reactos.org/svn/reactos?rev=61575&view=rev
Log: [WIN32K] - Add some debug print lidting available modes from a device driver. - Take this as an occasion to use the much underrated win32k debug channels Recompiling? You're so 2013! Modified: trunk/reactos/win32ss/gdi/eng/device.c Modified: trunk/reactos/win32ss/gdi/eng/device.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/eng/device.c?r…
============================================================================== --- trunk/reactos/win32ss/gdi/eng/device.c [iso-8859-1] (original) +++ trunk/reactos/win32ss/gdi/eng/device.c [iso-8859-1] Wed Jan 8 23:19:33 2014 @@ -8,9 +8,7 @@ */ #include <win32k.h> - -#define NDEBUG -#include <debug.h> +DBG_DEFAULT_CHANNEL(EngDev) PGRAPHICS_DEVICE gpPrimaryGraphicsDevice; PGRAPHICS_DEVICE gpVgaGraphicsDevice; @@ -53,7 +51,7 @@ PDEVMODEW pdm, pdmEnd; PLDEVOBJ pldev; - DPRINT("EngpRegisterGraphicsDevice(%wZ)\n", pustrDeviceName); + TRACE("EngpRegisterGraphicsDevice(%wZ)\n", pustrDeviceName); /* Allocate a GRAPHICS_DEVICE structure */ pGraphicsDevice = ExAllocatePoolWithTag(PagedPool, @@ -61,7 +59,7 @@ GDITAG_GDEVICE); if (!pGraphicsDevice) { - DPRINT1("ExAllocatePoolWithTag failed\n"); + ERR("ExAllocatePoolWithTag failed\n"); return NULL; } @@ -72,7 +70,7 @@ &pDeviceObject); if (!NT_SUCCESS(Status)) { - DPRINT1("Could not open driver %wZ, 0x%lx\n", pustrDeviceName, Status); + ERR("Could not open driver %wZ, 0x%lx\n", pustrDeviceName, Status); ExFreePoolWithTag(pGraphicsDevice, GDITAG_GDEVICE); return NULL; } @@ -98,7 +96,7 @@ pwsz = ExAllocatePoolWithTag(PagedPool, cj, GDITAG_DRVSUP); if (!pwsz) { - DPRINT1("Could not allocate string buffer\n"); + ERR("Could not allocate string buffer\n"); ASSERT(FALSE); // FIXME ExFreePoolWithTag(pGraphicsDevice, GDITAG_GDEVICE); return NULL; @@ -128,12 +126,12 @@ * This is a REG_MULTI_SZ string */ for (; *pwsz; pwsz += wcslen(pwsz) + 1) { - DPRINT("trying driver: %ls\n", pwsz); + TRACE("trying driver: %ls\n", pwsz); /* Try to load the display driver */ pldev = EngLoadImageEx(pwsz, LDEV_DEVICE_DISPLAY); if (!pldev) { - DPRINT1("Could not load driver: '%ls'\n", pwsz); + ERR("Could not load driver: '%ls'\n", pwsz); continue; } @@ -141,7 +139,7 @@ pdminfo = LDEVOBJ_pdmiGetModes(pldev, pDeviceObject); if (!pdminfo) { - DPRINT1("Could not get mode list for '%ls'\n", pwsz); + ERR("Could not get mode list for '%ls'\n", pwsz); continue; } @@ -169,7 +167,7 @@ if (!pGraphicsDevice->pdevmodeInfo || cModes == 0) { - DPRINT1("No devmodes\n"); + ERR("No devmodes\n"); ExFreePoolWithTag(pGraphicsDevice, GDITAG_GDEVICE); return NULL; } @@ -181,10 +179,17 @@ GDITAG_GDEVICE); if (!pGraphicsDevice->pDevModeList) { - DPRINT1("No devmode list\n"); + ERR("No devmode list\n"); ExFreePoolWithTag(pGraphicsDevice, GDITAG_GDEVICE); return NULL; } + + TRACE("Looking for mode %lux%lux%lu(%lu Hz)\n", + pdm->dmDeviceName, + pdm->dmPelsWidth, + pdm->dmPelsHeight, + pdm->dmBitsPerPel, + pdm->dmDisplayFrequency); /* Loop through all DEVMODEINFOs */ for (pdminfo = pGraphicsDevice->pdevmodeInfo, i = 0; @@ -199,6 +204,12 @@ (pdm + 1 <= pdmEnd) && (pdm->dmSize != 0); pdm = (PDEVMODEW)((PCHAR)pdm + pdm->dmSize + pdm->dmDriverExtra)) { + TRACE(" %S has mode %lux%lux%lu(%lu Hz)\n", + pdm->dmDeviceName, + pdm->dmPelsWidth, + pdm->dmPelsHeight, + pdm->dmBitsPerPel, + pdm->dmDisplayFrequency); /* Compare with the default entry */ if (pdm->dmBitsPerPel == pdmDefault->dmBitsPerPel && pdm->dmPelsWidth == pdmDefault->dmPelsWidth && @@ -207,7 +218,7 @@ { pGraphicsDevice->iDefaultMode = i; pGraphicsDevice->iCurrentMode = i; - DPRINT("Found default entry: %lu '%ls'\n", i, pdm->dmDeviceName); + TRACE("Found default entry: %lu '%ls'\n", i, pdm->dmDeviceName); } /* Initialize the entry */ @@ -233,7 +244,7 @@ /* Unlock loader */ EngReleaseSemaphore(ghsemGraphicsDeviceList); - DPRINT("Prepared %lu modes for %ls\n", cModes, pGraphicsDevice->pwszDescription); + TRACE("Prepared %lu modes for %ls\n", cModes, pGraphicsDevice->pwszDescription); return pGraphicsDevice; } @@ -249,7 +260,7 @@ UNICODE_STRING ustrCurrent; PGRAPHICS_DEVICE pGraphicsDevice; ULONG i; - DPRINT("EngpFindGraphicsDevice('%wZ', %lu, 0x%lx)\n", + TRACE("EngpFindGraphicsDevice('%wZ', %lu, 0x%lx)\n", pustrDevice, iDevNum, dwFlags); /* Lock list */ @@ -437,7 +448,7 @@ IO_STATUS_BLOCK Iosb; PDEVICE_OBJECT DeviceObject; - DPRINT("EngDeviceIoControl() called\n"); + TRACE("EngDeviceIoControl() called\n"); KeInitializeEvent(&Event, SynchronizationEvent, FALSE); @@ -462,7 +473,7 @@ Status = Iosb.Status; } - DPRINT("EngDeviceIoControl(): Returning %X/%X\n", Iosb.Status, + TRACE("EngDeviceIoControl(): Returning %X/%X\n", Iosb.Status, Iosb.Information); /* Return information to the caller about the operation. */
10 years, 11 months
1
0
0
0
[akhaldi] 61574: [NTOS] * Fix release build.
by akhaldi@svn.reactos.org
Author: akhaldi Date: Wed Jan 8 12:14:14 2014 New Revision: 61574 URL:
http://svn.reactos.org/svn/reactos?rev=61574&view=rev
Log: [NTOS] * Fix release build. Modified: trunk/reactos/ntoskrnl/config/cmapi.c Modified: trunk/reactos/ntoskrnl/config/cmapi.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/config/cmapi.c?re…
============================================================================== --- trunk/reactos/ntoskrnl/config/cmapi.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/config/cmapi.c [iso-8859-1] Wed Jan 8 12:14:14 2014 @@ -1313,7 +1313,6 @@ _Out_ PULONG ResultLength) { PCM_KEY_NODE Node; - ULONG SubKeyCount; PHHIVE KeyHive; HCELL_INDEX KeyCell; USHORT NameLength; @@ -1328,6 +1327,7 @@ Node = HvGetCell(KeyHive, KeyCell); if (Node != NULL) { + ULONG SubKeyCount; ASSERT(Node->ValueList.Count == Kcb->ValueCache.Count); if (!(Kcb->ExtFlags & CM_KCB_INVALID_CACHED_INFO))
10 years, 11 months
1
0
0
0
[tkreuzer] 61573: [SMLIB] Fix "annotation" and use a better variable name.
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Wed Jan 8 00:01:11 2014 New Revision: 61573 URL:
http://svn.reactos.org/svn/reactos?rev=61573&view=rev
Log: [SMLIB] Fix "annotation" and use a better variable name. Modified: trunk/reactos/include/reactos/subsys/sm/smmsg.h trunk/reactos/lib/smlib/smclient.c Modified: trunk/reactos/include/reactos/subsys/sm/smmsg.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/subsys/sm/…
============================================================================== --- trunk/reactos/include/reactos/subsys/sm/smmsg.h [iso-8859-1] (original) +++ trunk/reactos/include/reactos/subsys/sm/smmsg.h [iso-8859-1] Wed Jan 8 00:01:11 2014 @@ -244,7 +244,7 @@ IN PUNICODE_STRING SbApiPortName, IN HANDLE SbApiPort, IN ULONG ImageType, - IN HANDLE SmApiPort + OUT PHANDLE SmApiPort ); NTSTATUS Modified: trunk/reactos/lib/smlib/smclient.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/smlib/smclient.c?rev=6…
============================================================================== --- trunk/reactos/lib/smlib/smclient.c [iso-8859-1] (original) +++ trunk/reactos/lib/smlib/smclient.c [iso-8859-1] Wed Jan 8 00:01:11 2014 @@ -67,11 +67,11 @@ SmConnectToSm(IN PUNICODE_STRING SbApiPortName, IN HANDLE SbApiPort, IN ULONG ImageType, - IN HANDLE SmApiPort) + OUT PHANDLE SmApiPort) { NTSTATUS Status; SB_CONNECTION_INFO ConnectInfo; - UNICODE_STRING DestinationString; + UNICODE_STRING PortName; SECURITY_QUALITY_OF_SERVICE SecurityQos; ULONG ConnectInfoLength = sizeof(ConnectInfo); @@ -81,7 +81,7 @@ SecurityQos.EffectiveOnly = TRUE; /* Set the SM API port name */ - RtlInitUnicodeString(&DestinationString, L"\\SmApiPort"); + RtlInitUnicodeString(&PortName, L"\\SmApiPort"); /* Check if this is a client connecting to SMSS, or SMSS to itself */ if (SbApiPortName) @@ -108,7 +108,7 @@ /* Connect to SMSS and exchange connection information */ Status = NtConnectPort(SmApiPort, - &DestinationString, + &PortName, &SecurityQos, NULL, NULL,
10 years, 11 months
1
0
0
0
[tkreuzer] 61572: [NTOSKRNL] - Update CM_KEY_CONTROL_BLOCK to match win2k3 SP2 symbols - Implement KeyCachedInformation and KeyFlagsInformation cases in CmQueryKey
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Tue Jan 7 23:51:56 2014 New Revision: 61572 URL:
http://svn.reactos.org/svn/reactos?rev=61572&view=rev
Log: [NTOSKRNL] - Update CM_KEY_CONTROL_BLOCK to match win2k3 SP2 symbols - Implement KeyCachedInformation and KeyFlagsInformation cases in CmQueryKey Modified: trunk/reactos/ntoskrnl/config/cmapi.c trunk/reactos/ntoskrnl/include/internal/cm.h Modified: trunk/reactos/ntoskrnl/config/cmapi.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/config/cmapi.c?re…
============================================================================== --- trunk/reactos/ntoskrnl/config/cmapi.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/config/cmapi.c [iso-8859-1] Tue Jan 7 23:51:56 2014 @@ -61,7 +61,7 @@ /* Same file found */ Loaded = TRUE; *CmHive = Hive; - + /* If the hive is frozen, not sure what to do */ if (Hive->Frozen) { @@ -102,7 +102,7 @@ { /* Acquire the flusher lock */ CmpLockHiveFlusherExclusive(Hive); - + /* Check for illegal state */ if ((ForceFlush) && (Hive->UseCount)) { @@ -111,7 +111,7 @@ DPRINT1("FIXME: Hive is damaged and needs fixup\n"); while (TRUE); } - + /* Only sync if we are forced to or if it won't cause a hive shrink */ if ((ForceFlush) || (!HvHiveWillShrink(&Hive->Hive))) { @@ -242,7 +242,7 @@ CellData->u.KeyValue.DataLength = DataSize + CM_KEY_VALUE_SPECIAL_SIZE; CellData->u.KeyValue.Data = SmallData; } - + /* Set the type now */ CellData->u.KeyValue.Type = Type; @@ -280,7 +280,7 @@ PCELL_DATA CellData; ULONG Length; BOOLEAN WasSmall, IsSmall; - + /* Registry writes must be blocked */ CMP_ASSERT_FLUSH_LOCK(Hive); @@ -316,7 +316,7 @@ Value->Type = Type; return STATUS_SUCCESS; } - + /* We have a normal key. Was the old cell also normal and had data? */ if (!(WasSmall) && (Length > 0)) { @@ -607,10 +607,10 @@ /* Acquire hive and KCB lock */ CmpLockRegistry(); CmpAcquireKcbLockShared(Kcb); - + /* Sanity check */ ASSERT(sizeof(ULONG) == CM_KEY_VALUE_SMALL); - + /* Don't touch deleted KCBs */ DoAgain: if (Kcb->Delete) @@ -619,7 +619,7 @@ Status = STATUS_KEY_DELETED; goto Quickie; } - + /* Don't let anyone mess with symlinks */ if ((Kcb->Flags & KEY_SYM_LINK) && ((Type != REG_LINK) || @@ -660,10 +660,10 @@ /* Acquire exclusive lock */ CmpConvertKcbSharedToExclusive(Kcb); } - + /* Cache lookup failed, so don't try it next time */ FirstTry = FALSE; - + /* Now grab the flush lock since the key will be modified */ ASSERT(FlusherLocked == FALSE); CmpLockHiveFlusherShared((PCMHIVE)Kcb->KeyHive); @@ -680,7 +680,7 @@ Parent = (PCM_KEY_NODE)HvGetCell(Hive, Cell); ASSERT(Parent); ParentCell = Cell; - + /* Prepare to scan the key node */ Count = Parent->ValueList.Count; Found = FALSE; @@ -708,7 +708,7 @@ HvReleaseCell(Hive, ChildCell); ChildCell = HCELL_NIL; } - + /* Get its value */ Value = (PCM_KEY_VALUE)HvGetCell(Hive, CurrentChild); if (!Value) @@ -729,13 +729,13 @@ ChildIndex = 0; } } - + /* Should only get here on the second pass */ ASSERT(FirstTry == FALSE); - + /* The KCB must be locked exclusive at this point */ CMP_ASSERT_KCB_LOCK(Kcb); - + /* Mark the cell dirty */ if (!HvMarkCellDirty(Hive, Cell, FALSE)) { @@ -804,7 +804,7 @@ Parent->MaxValueNameLen = ValueName->Length; Kcb->KcbMaxValueNameLen = ValueName->Length; } - + /* Check if the maximum data length changed */ ASSERT(Parent->MaxValueDataLen == Kcb->KcbMaxValueDataLen); if (Parent->MaxValueDataLen < DataLength) @@ -813,11 +813,11 @@ Parent->MaxValueDataLen = DataLength; Kcb->KcbMaxValueDataLen = Parent->MaxValueDataLen; } - + /* Save the write time */ KeQuerySystemTime(&Parent->LastWriteTime); Kcb->KcbLastWriteTime = Parent->LastWriteTime; - + /* Check if the cell is cached */ if ((Found) && (CMP_IS_CELL_CACHED(Kcb->ValueCache.ValueList))) { @@ -832,19 +832,19 @@ /* Sanity checks */ ASSERT(!(CMP_IS_CELL_CACHED(Kcb->ValueCache.ValueList))); ASSERT(!(Kcb->ExtFlags & CM_KCB_SYM_LINK_FOUND)); - + /* Set the value cache */ Kcb->ValueCache.Count = Parent->ValueList.Count; Kcb->ValueCache.ValueList = Parent->ValueList.List; } - + /* Notify registered callbacks */ CmpReportNotify(Kcb, Hive, Kcb->KeyCell, REG_NOTIFY_CHANGE_LAST_SET); } - + /* Release the cells */ Quickie: if ((ParentCell != HCELL_NIL) && (Hive)) HvReleaseCell(Hive, ParentCell); @@ -873,10 +873,10 @@ /* Acquire hive lock */ CmpLockRegistry(); - + /* Lock KCB exclusively */ CmpAcquireKcbLockExclusive(Kcb); - + /* Don't touch deleted keys */ if (Kcb->Delete) { @@ -889,7 +889,7 @@ /* Get the hive and the cell index */ Hive = Kcb->KeyHive; Cell = Kcb->KeyCell; - + /* Lock flushes */ CmpLockHiveFlusherShared((PCMHIVE)Hive); @@ -978,18 +978,18 @@ Kcb->KcbMaxValueNameLen = 0; Kcb->KcbMaxValueDataLen = 0; } - + /* Cleanup the value cache */ CmpCleanUpKcbValueCache(Kcb); - + /* Sanity checks */ ASSERT(!(CMP_IS_CELL_CACHED(Kcb->ValueCache.ValueList))); ASSERT(!(Kcb->ExtFlags & CM_KCB_SYM_LINK_FOUND)); - + /* Set the value cache */ Kcb->ValueCache.Count = ChildList->Count; Kcb->ValueCache.ValueList = ChildList->List; - + /* Notify registered callbacks */ CmpReportNotify(Kcb, Hive, Cell, REG_NOTIFY_CHANGE_LAST_SET); @@ -1037,10 +1037,10 @@ /* Acquire hive lock */ CmpLockRegistry(); - + /* Lock the KCB shared */ CmpAcquireKcbLockShared(Kcb); - + /* Don't touch deleted keys */ DoAgain: if (Kcb->Delete) @@ -1050,7 +1050,7 @@ CmpUnlockRegistry(); return STATUS_KEY_DELETED; } - + /* We don't deal with this yet */ if (Kcb->ExtFlags & CM_KCB_SYM_LINK_FOUND) { @@ -1074,12 +1074,12 @@ /* Check if we need an exclusive lock */ ASSERT(CellToRelease == HCELL_NIL); ASSERT(ValueData == NULL); - + /* Try with exclusive KCB lock */ CmpConvertKcbSharedToExclusive(Kcb); goto DoAgain; } - + if (Result == SearchSuccess) { /* Sanity check */ @@ -1106,7 +1106,7 @@ HvReleaseCell(Hive, CellToRelease); CellToRelease = HCELL_NIL; } - + /* Try with exclusive KCB lock */ CmpConvertKcbSharedToExclusive(Kcb); _SEH2_YIELD(goto DoAgain); @@ -1155,7 +1155,7 @@ /* Acquire hive lock */ CmpLockRegistry(); - + /* Lock the KCB shared */ CmpAcquireKcbLockShared(Kcb); @@ -1189,7 +1189,7 @@ Status = STATUS_NO_MORE_ENTRIES; goto Quickie; } - + /* We don't deal with this yet */ if (Kcb->ExtFlags & CM_KCB_SYM_LINK_FOUND) { @@ -1207,7 +1207,7 @@ /* Check if we need an exclusive lock */ ASSERT(CellToRelease == HCELL_NIL); HvReleaseCell(Hive, Kcb->KeyCell); - + /* Try with exclusive KCB lock */ CmpConvertKcbSharedToExclusive(Kcb); goto DoAgain; @@ -1255,7 +1255,7 @@ Status = STATUS_INSUFFICIENT_RESOURCES; goto Quickie; } - + /* User data, need SEH */ _SEH2_TRY { @@ -1302,6 +1302,162 @@ CmpReleaseKcbLock(Kcb); CmpUnlockRegistry(); return Status; +} + +static +NTSTATUS +CmpQueryKeyDataFromCache( + _In_ PCM_KEY_CONTROL_BLOCK Kcb, + _Out_ PKEY_CACHED_INFORMATION KeyCachedInfo, + _In_ ULONG Length, + _Out_ PULONG ResultLength) +{ + PCM_KEY_NODE Node; + ULONG SubKeyCount; + PHHIVE KeyHive; + HCELL_INDEX KeyCell; + USHORT NameLength; + PAGED_CODE(); + + /* Get the hive and cell index */ + KeyHive = Kcb->KeyHash.KeyHive; + KeyCell = Kcb->KeyHash.KeyCell; + +#if DBG + /* Get the cell node */ + Node = HvGetCell(KeyHive, KeyCell); + if (Node != NULL) + { + ASSERT(Node->ValueList.Count == Kcb->ValueCache.Count); + + if (!(Kcb->ExtFlags & CM_KCB_INVALID_CACHED_INFO)) + { + SubKeyCount = Node->SubKeyCounts[0] + Node->SubKeyCounts[1]; + if (Kcb->ExtFlags & CM_KCB_NO_SUBKEY) + { + ASSERT(SubKeyCount == 0); + } + else if (Kcb->ExtFlags & CM_KCB_SUBKEY_ONE) + { + ASSERT(SubKeyCount == 1); + } + else if (Kcb->ExtFlags & CM_KCB_SUBKEY_HINT) + { + ASSERT(SubKeyCount == Kcb->IndexHint->Count); + } + else + { + ASSERT(SubKeyCount == Kcb->SubKeyCount); + } + } + + ASSERT(Node->LastWriteTime.QuadPart == Kcb->KcbLastWriteTime.QuadPart); + ASSERT(Node->MaxNameLen == Kcb->KcbMaxNameLen); + ASSERT(Node->MaxValueNameLen == Kcb->KcbMaxValueNameLen); + ASSERT(Node->MaxValueDataLen == Kcb->KcbMaxValueDataLen); + + /* Release the cell */ + HvReleaseCell(KeyHive, KeyCell); + } +#endif // DBG + + /* Make sure we have a name block */ + if (Kcb->NameBlock == NULL) + { + return STATUS_INSUFFICIENT_RESOURCES; + } + + /* Check for compressed name */ + if (Kcb->NameBlock->Compressed) + { + /* Calculate the name size */ + NameLength = CmpCompressedNameSize(Kcb->NameBlock->NameHash.Name, + Kcb->NameBlock->NameHash.NameLength); + } + else + { + /* Use the stored name size */ + NameLength = Kcb->NameBlock->NameHash.NameLength; + } + + /* Validate buffer length (we do not copy the name!) */ + *ResultLength = sizeof(KeyCachedInfo); + if (Length < *ResultLength) + { + return STATUS_BUFFER_TOO_SMALL; + } + + /* Fill the structure */ + KeyCachedInfo->LastWriteTime = Kcb->KcbLastWriteTime; + KeyCachedInfo->TitleIndex = 0; + KeyCachedInfo->NameLength = NameLength; + KeyCachedInfo->Values = Kcb->ValueCache.Count; + KeyCachedInfo->MaxNameLen = Kcb->KcbMaxNameLen; + KeyCachedInfo->MaxValueNameLen = Kcb->KcbMaxValueNameLen; + KeyCachedInfo->MaxValueDataLen = Kcb->KcbMaxValueDataLen; + + /* Check the ExtFlags for what we have */ + if (Kcb->ExtFlags & CM_KCB_INVALID_CACHED_INFO) + { + /* Cache is not valid, do a full lookup */ + DPRINT1("Kcb cache incoherency detected, kcb = %p\n", Kcb); + + /* Get the cell node */ + Node = HvGetCell(KeyHive, KeyCell); + if (Node == NULL) + { + return STATUS_INSUFFICIENT_RESOURCES; + } + + /* Calculate number of subkeys */ + KeyCachedInfo->SubKeys = Node->SubKeyCounts[0] + Node->SubKeyCounts[1]; + + /* Release the cell */ + HvReleaseCell(KeyHive, KeyCell); + } + else if (Kcb->ExtFlags & CM_KCB_NO_SUBKEY) + { + /* There are no subkeys */ + KeyCachedInfo->SubKeys = 0; + } + else if (Kcb->ExtFlags & CM_KCB_SUBKEY_ONE) + { + /* There is exactly one subley */ + KeyCachedInfo->SubKeys = 1; + } + else if (Kcb->ExtFlags & CM_KCB_SUBKEY_HINT) + { + /* Get the number of subkeys from the subkey hint */ + KeyCachedInfo->SubKeys = Kcb->IndexHint->Count; + } + else + { + /* No subkey hint, use the key count field */ + KeyCachedInfo->SubKeys = Kcb->SubKeyCount; + } + + return STATUS_SUCCESS; +} + +static +NTSTATUS +CmpQueryFlagsInformation( + _In_ PCM_KEY_CONTROL_BLOCK Kcb, + _Out_ PKEY_USER_FLAGS_INFORMATION KeyFlagsInfo, + _In_ ULONG Length, + _In_ PULONG ResultLength) +{ + /* Validate the buffer size */ + *ResultLength = sizeof(*KeyFlagsInfo); + if (Length < *ResultLength) + { + return STATUS_BUFFER_TOO_SMALL; + } + + /* Copy the user flags */ + KeyFlagsInfo->UserFlags = Kcb->KcbUserFlags; + + return STATUS_SUCCESS; } NTSTATUS @@ -1319,7 +1475,7 @@ /* Acquire hive lock */ CmpLockRegistry(); - + /* Lock KCB shared */ CmpAcquireKcbLockShared(Kcb); @@ -1343,7 +1499,7 @@ Hive = Kcb->KeyHive; Parent = (PCM_KEY_NODE)HvGetCell(Hive, Kcb->KeyCell); ASSERT(Parent); - + /* Track cell references */ if (!HvTrackCellRef(&CellReferences, Hive, Kcb->KeyCell)) { @@ -1362,10 +1518,24 @@ } break; - /* Unsupported classes for now */ + case KeyCachedInformation: + /* Call the internal API */ + Status = CmpQueryKeyDataFromCache(Kcb, + KeyInformation, + Length, + ResultLength); + break; + + case KeyFlagsInformation: + /* Call the internal API */ + Status = CmpQueryFlagsInformation(Kcb, + KeyInformation, + Length, + ResultLength); + break; + + /* Unsupported class for now */ case KeyNameInformation: - case KeyCachedInformation: - case KeyFlagsInformation: /* Print message and fail */ DPRINT1("Unsupported class: %d!\n", KeyInformationClass); @@ -1408,10 +1578,10 @@ /* Acquire hive lock */ CmpLockRegistry(); - + /* Lock the KCB shared */ CmpAcquireKcbLockShared(Kcb); - + /* Don't touch deleted keys */ if (Kcb->Delete) { @@ -1442,7 +1612,7 @@ /* Now get the actual child node */ Child = (PCM_KEY_NODE)HvGetCell(Hive, ChildCell); ASSERT(Child); - + /* Track references */ if (!HvTrackCellRef(&CellReferences, Hive, ChildCell)) { @@ -1492,10 +1662,10 @@ /* Acquire hive lock */ CmpLockRegistry(); - + /* Get the kcb */ Kcb = KeyBody->KeyControlBlock; - + /* Don't allow deleting the root */ if (!Kcb->ParentKcb) { @@ -1503,10 +1673,10 @@ CmpUnlockRegistry(); return STATUS_CANNOT_DELETE; } - + /* Lock parent and child */ CmpAcquireTwoKcbLocksExclusiveByKey(Kcb->ConvKey, Kcb->ParentKcb->ConvKey); - + /* Check if we're already being deleted */ if (Kcb->Delete) { @@ -1518,14 +1688,14 @@ /* Get the hive and node */ Hive = Kcb->KeyHive; Cell = Kcb->KeyCell; - + /* Lock flushes */ CmpLockHiveFlusherShared((PCMHIVE)Hive); - + /* Get the key node */ Node = (PCM_KEY_NODE)HvGetCell(Hive, Cell); ASSERT(Node); - + /* Sanity check */ ASSERT(Node->Flags == Kcb->Flags); @@ -1535,7 +1705,7 @@ { /* Send notification to registered callbacks */ CmpReportNotify(Kcb, Hive, Cell, REG_NOTIFY_CHANGE_NAME); - + /* Get the parent and free the cell */ ParentCell = Node->Parent; Status = CmpFreeKeyByCell(Hive, Cell, TRUE); @@ -1543,7 +1713,7 @@ { /* Flush any notifications */ CmpFlushNotifiesOnKeyBodyList(Kcb, FALSE); - + /* Clean up information we have on the subkey */ CmpCleanUpSubKeyInfo(Kcb->ParentKcb); @@ -1553,7 +1723,7 @@ { /* Update the maximum name length */ Kcb->ParentKcb->KcbMaxNameLen = (USHORT)Parent->MaxNameLen; - + /* Make sure we're dirty */ ASSERT(HvIsCellDirty(Hive, ParentCell)); @@ -1564,7 +1734,7 @@ /* Release the cell */ HvReleaseCell(Hive, ParentCell); } - + /* Set the KCB in delete mode and remove it */ Kcb->Delete = TRUE; CmpRemoveKeyControlBlock(Kcb); @@ -1578,7 +1748,7 @@ /* Fail */ Status = STATUS_CANNOT_DELETE; } - + /* Release the cell */ HvReleaseCell(Hive, Cell); @@ -1605,11 +1775,11 @@ /* Ignore flushes until we're ready */ if (CmpNoWrite) return STATUS_SUCCESS; - + /* Get the hives */ Hive = Kcb->KeyHive; CmHive = (PCMHIVE)Hive; - + /* Check if this is the master hive */ if (CmHive == CmiVolatileHive) { @@ -1623,7 +1793,7 @@ ASSERT(CmHive->ViewLock); KeAcquireGuardedMutex(CmHive->ViewLock); CmHive->ViewLockOwner = KeGetCurrentThread(); - + /* Will the hive shrink? */ if (HvHiveWillShrink(Hive)) { @@ -1638,14 +1808,14 @@ ASSERT(KeGetCurrentThread() == CmHive->ViewLockOwner); KeReleaseGuardedMutex(CmHive->ViewLock); } - + /* Flush only this hive */ if (!HvSyncHive(Hive)) { /* Fail */ Status = STATUS_REGISTRY_IO_FAILED; } - + /* Release the flush lock */ CmpUnlockHiveFlusher((PCMHIVE)Hive); } @@ -1668,7 +1838,7 @@ PCMHIVE CmHive, LoadedHive; NTSTATUS Status; CM_PARSE_CONTEXT ParseContext; - + /* Check if we have a trust key */ if (KeyBody) { @@ -1676,7 +1846,7 @@ DPRINT1("Trusted classes not yet supported\n"); return STATUS_NOT_IMPLEMENTED; } - + /* Build a service QoS for a security context */ ServiceQos.Length = sizeof(SECURITY_QUALITY_OF_SERVICE); ServiceQos.ImpersonationLevel = SecurityImpersonation; @@ -1692,7 +1862,7 @@ DPRINT1("Security context failed\n"); return Status; } - + /* Open the target key */ #if 0 Status = ZwOpenKey(&KeyHandle, KEY_READ, TargetKey); @@ -1727,7 +1897,7 @@ { /* Lock the registry */ CmpLockRegistryExclusive(); - + /* Check if we are already loaded */ if (CmpIsHiveAlreadyLoaded(KeyHandle, SourceFile, &LoadedHive)) { @@ -1739,25 +1909,25 @@ /* Release the registry */ CmpUnlockRegistry(); } - + /* Close the key handle if we had one */ if (KeyHandle) ZwClose(KeyHandle); return Status; } - + /* Lock the registry shared */ CmpLockRegistry(); - + /* Lock loading */ ExAcquirePushLockExclusive(&CmpLoadHiveLock); - + /* Lock the hive to this thread */ CmHive->Hive.HiveFlags |= HIVE_IS_UNLOADING; CmHive->CreatorOwner = KeGetCurrentThread(); - + /* Set flag */ if (Flags & REG_NO_LAZY_FLUSH) CmHive->Hive.HiveFlags |= HIVE_NOLAZYFLUSH; - + /* Link the hive */ Status = CmpLinkHiveToMaster(TargetKey->ObjectName, TargetKey->RootDirectory, @@ -1768,7 +1938,7 @@ { /* Add to HiveList key */ CmpAddToHiveFileList(CmHive); - + /* Sync the hive if necessary */ if (Allocate) { @@ -1777,11 +1947,11 @@ HvSyncHive(&CmHive->Hive); CmpUnlockHiveFlusher(CmHive); } - + /* Release the hive */ CmHive->Hive.HiveFlags &= ~HIVE_IS_UNLOADING; CmHive->CreatorOwner = NULL; - + /* Allow loads */ ExReleasePushLock(&CmpLoadHiveLock); } @@ -1791,7 +1961,7 @@ /* FIXME: TODO */ ASSERT(FALSE); } - + /* Is this first profile load? */ if (!(CmpProfileLoaded) && !(CmpWasSetupBoot)) { @@ -1799,10 +1969,10 @@ CmpProfileLoaded = TRUE; CmpSetGlobalQuotaAllowed(); } - + /* Unlock the registry */ CmpUnlockRegistry(); - + /* Close handle and return */ if (KeyHandle) ZwClose(KeyHandle); return Status; Modified: trunk/reactos/ntoskrnl/include/internal/cm.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/…
============================================================================== --- trunk/reactos/ntoskrnl/include/internal/cm.h [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/include/internal/cm.h [iso-8859-1] Tue Jan 7 23:51:56 2014 @@ -49,7 +49,7 @@ #define CM_KCB_INVALID_SIGNATURE '4FmC' // -// CM_KEY_CONTROL_BLOCK Flags +// CM_KEY_CONTROL_BLOCK ExtFlags // #define CM_KCB_NO_SUBKEY 0x01 #define CM_KCB_SUBKEY_ONE 0x02 @@ -253,8 +253,7 @@ typedef struct _CM_KEY_CONTROL_BLOCK { ULONG Signature; - USHORT RefCount; - USHORT Flags; + ULONG RefCount; struct { ULONG ExtFlags:8; @@ -295,6 +294,13 @@ USHORT KcbMaxNameLen; USHORT KcbMaxValueNameLen; ULONG KcbMaxValueDataLen; + struct + { + ULONG KcbUserFlags : 4; + ULONG KcbVirtControlFlags : 4; + ULONG KcbDebug : 8; + ULONG Flags : 16; + }; ULONG InDelayClose; } CM_KEY_CONTROL_BLOCK, *PCM_KEY_CONTROL_BLOCK;
10 years, 11 months
1
0
0
0
[tkreuzer] 61571: [RTL/NTDLL] - Implement registry transaction API (RXACT) - Add RtlCheckForOrphanedCriticalSections stub
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Tue Jan 7 21:26:06 2014 New Revision: 61571 URL:
http://svn.reactos.org/svn/reactos?rev=61571&view=rev
Log: [RTL/NTDLL] - Implement registry transaction API (RXACT) - Add RtlCheckForOrphanedCriticalSections stub Added: trunk/reactos/lib/rtl/rxact.c (with props) Modified: trunk/reactos/dll/ntdll/def/ntdll.spec trunk/reactos/lib/rtl/CMakeLists.txt trunk/reactos/lib/rtl/critical.c Modified: trunk/reactos/dll/ntdll/def/ntdll.spec URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/ntdll/def/ntdll.spec?r…
============================================================================== --- trunk/reactos/dll/ntdll/def/ntdll.spec [iso-8859-1] (original) +++ trunk/reactos/dll/ntdll/def/ntdll.spec [iso-8859-1] Tue Jan 7 21:26:06 2014 @@ -376,7 +376,7 @@ ;@ stdcall PfxInsertPrefix ;@ stdcall PfxRemovePrefix ;@ stdcall PropertyLengthAsVariant -;@ stdcall RtlAbortRXact +@ stdcall RtlAbortRXact(ptr) @ stdcall RtlAbsoluteToSelfRelativeSD(ptr ptr ptr) @ stdcall RtlAcquirePebLock() @ stdcall RtlAcquirePrivilege(ptr long long ptr) @@ -394,9 +394,9 @@ @ stdcall RtlAddAccessDeniedAceEx(ptr long long long ptr) @ stdcall RtlAddAccessDeniedObjectAce(ptr long long long ptr ptr ptr) @ stdcall RtlAddAce(ptr long long ptr long) -;@ stdcall RtlAddActionToRXact +@ stdcall RtlAddActionToRXact(ptr long ptr long ptr long) @ stdcall RtlAddAtomToAtomTable(ptr wstr ptr) -;@ stdcall RtlAddAttributeActionToRXact +@ stdcall RtlAddAttributeActionToRXact(ptr long ptr ptr ptr long ptr long) @ stdcall RtlAddAuditAccessAce(ptr long long ptr long long) @ stdcall RtlAddAuditAccessAceEx(ptr long long long ptr long long) @ stdcall RtlAddAuditAccessObjectAce(ptr long long long ptr ptr ptr long long) @@ -423,8 +423,8 @@ @ stdcall RtlAppendUnicodeStringToString(ptr ptr) @ stdcall RtlAppendUnicodeToString(ptr wstr) ;@ stdcall RtlApplicationVerifierStop -;@ stdcall RtlApplyRXact -;@ stdcall RtlApplyRXactNoFlush +@ stdcall RtlApplyRXact(ptr) +@ stdcall RtlApplyRXactNoFlush(ptr) @ stdcall RtlAreAllAccessesGranted(long long) @ stdcall RtlAreAnyAccessesGranted(long long) @ stdcall RtlAreBitsClear(ptr long long) @@ -435,7 +435,7 @@ @ stdcall RtlCaptureStackBackTrace(long long ptr ptr) ;@ stdcall RtlCaptureStackContext @ stdcall RtlCharToInteger(ptr long ptr) -;@ stdcall RtlCheckForOrphanedCriticalSections +@ stdcall RtlCheckForOrphanedCriticalSections(ptr) ;@ stdcall RtlCheckProcessParameters @ stdcall RtlCheckRegistryKey(long ptr) @ stdcall RtlClearAllBits(ptr) @@ -673,7 +673,7 @@ @ stdcall RtlInitializeGenericTable(ptr ptr ptr ptr ptr) @ stdcall RtlInitializeGenericTableAvl(ptr ptr ptr ptr ptr) @ stdcall RtlInitializeHandleTable(long long ptr) -;@ stdcall RtlInitializeRXact +@ stdcall RtlInitializeRXact(ptr long ptr) @ stdcall RtlInitializeRangeList(ptr) @ stdcall RtlInitializeResource(ptr) @ stdcall RtlInitializeSListHead(ptr) @@ -868,7 +868,7 @@ @ stdcall RtlSleepConditionVariableCS(ptr ptr ptr) @ stdcall RtlSleepConditionVariableSRW(ptr ptr ptr long) @ stdcall RtlSplay(ptr) -;@ stdcall RtlStartRXact +@ stdcall RtlStartRXact(ptr) @ stdcall RtlStatMemoryStream(ptr ptr long) @ stdcall RtlStringFromGUID(ptr ptr) @ stdcall RtlSubAuthorityCountSid(ptr) Modified: trunk/reactos/lib/rtl/CMakeLists.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/rtl/CMakeLists.txt?rev…
============================================================================== --- trunk/reactos/lib/rtl/CMakeLists.txt [iso-8859-1] (original) +++ trunk/reactos/lib/rtl/CMakeLists.txt [iso-8859-1] Tue Jan 7 21:26:06 2014 @@ -49,6 +49,7 @@ registry.c res.c resource.c + rxact.c sd.c security.c slist.c Modified: trunk/reactos/lib/rtl/critical.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/rtl/critical.c?rev=615…
============================================================================== --- trunk/reactos/lib/rtl/critical.c [iso-8859-1] (original) +++ trunk/reactos/lib/rtl/critical.c [iso-8859-1] Tue Jan 7 21:26:06 2014 @@ -757,4 +757,12 @@ return FALSE; } +VOID +NTAPI +RtlCheckForOrphanedCriticalSections( + HANDLE ThreadHandle) +{ + UNIMPLEMENTED; +} + /* EOF */ Added: trunk/reactos/lib/rtl/rxact.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/rtl/rxact.c?rev=61571
============================================================================== --- trunk/reactos/lib/rtl/rxact.c (added) +++ trunk/reactos/lib/rtl/rxact.c [iso-8859-1] Tue Jan 7 21:26:06 2014 @@ -0,0 +1,696 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS system libraries + * FILE: lib/rtl/rxact.c + * PURPOSE: Registry Transaction API + * PROGRAMMERS: Timo Kreuzer (timo.kreuzer(a)reactos.org) + */ + +/* INCLUDES *****************************************************************/ + +#include <rtl.h> +#include <ndk/cmfuncs.h> + +#define NDEBUG +#include <debug.h> + +#define RXACT_DEFAULT_BUFFER_SIZE (4 * PAGE_SIZE) + +typedef struct _RXACT_INFO +{ + ULONG Revision; + ULONG Unknown1; + ULONG Unknown2; +} RXACT_INFO, *PRXACT_INFO; + +typedef struct _RXACT_DATA +{ + ULONG ActionCount; + ULONG BufferSize; + ULONG CurrentSize; +} RXACT_DATA, *PRXACT_DATA; + +typedef struct _RXACT_CONTEXT +{ + HANDLE RootDirectory; + HANDLE KeyHandle; + BOOLEAN CanUseHandles; + PRXACT_DATA Data; +} RXACT_CONTEXT, *PRXACT_CONTEXT; + +typedef struct _RXACT_ACTION +{ + ULONG Size; + ULONG Type; + UNICODE_STRING KeyName; + UNICODE_STRING ValueName; + HANDLE KeyHandle; + ULONG ValueType; + ULONG ValueDataSize; + PVOID ValueData; +} RXACT_ACTION, *PRXACT_ACTION; + +enum +{ + RXactDeleteKey = 1, + RXactSetValueKey = 2, +}; + +#define ALIGN_UP_BY ROUND_UP + +/* FUNCTIONS *****************************************************************/ + +static +VOID +NTAPI +RXactInitializeContext( + PRXACT_CONTEXT Context, + HANDLE RootDirectory, + HANDLE KeyHandle) +{ + Context->Data = NULL; + Context->RootDirectory = RootDirectory; + Context->CanUseHandles = TRUE; + Context->KeyHandle = KeyHandle; +} + +static +NTSTATUS +NTAPI +RXactpOpenTargetKey( + HANDLE RootDirectory, + ULONG ActionType, + PUNICODE_STRING KeyName, + PHANDLE KeyHandle) +{ + NTSTATUS Status; + ULONG Disposition; + OBJECT_ATTRIBUTES ObjectAttributes; + + /* Check what kind of action this is */ + if (ActionType == RXactDeleteKey) + { + /* This is a delete, so open the key for delete */ + InitializeObjectAttributes(&ObjectAttributes, + KeyName, + OBJ_CASE_INSENSITIVE, + RootDirectory, + NULL); + Status = ZwOpenKey(KeyHandle, DELETE, &ObjectAttributes); + } + else if (ActionType == RXactSetValueKey) + { + /* This is a create, so open or create with write access */ + InitializeObjectAttributes(&ObjectAttributes, + KeyName, + OBJ_CASE_INSENSITIVE | OBJ_OPENIF, + RootDirectory, + NULL); + Status = ZwCreateKey(KeyHandle, + KEY_WRITE, + &ObjectAttributes, + 0, + NULL, + 0, + &Disposition); + } + else + { + return STATUS_INVALID_PARAMETER; + } + + return Status; +} + +static +NTSTATUS +NTAPI +RXactpCommit( + PRXACT_CONTEXT Context) +{ + PRXACT_DATA Data; + PRXACT_ACTION Action; + NTSTATUS Status, TmpStatus; + HANDLE KeyHandle; + ULONG i; + + Data = Context->Data; + + /* The first action record starts after the data header */ + Action = (PRXACT_ACTION)(Data + 1); + + /* Loop all recorded actions */ + for (i = 0; i < Data->ActionCount; i++) + { + /* Translate relative offsets to actual pointers */ + Action->KeyName.Buffer = (PWSTR)((PUCHAR)Data + (ULONG_PTR)Action->KeyName.Buffer); + Action->ValueName.Buffer = (PWSTR)((PUCHAR)Data + (ULONG_PTR)Action->ValueName.Buffer); + Action->ValueData = (PUCHAR)Data + (ULONG_PTR)Action->ValueData; + + /* Check what kind of action this is */ + if (Action->Type == RXactDeleteKey) + { + /* This is a delete action. Check if we can use a handle */ + if ((Action->KeyHandle != INVALID_HANDLE_VALUE) && Context->CanUseHandles) + { + /* Delete the key by the given handle */ + Status = ZwDeleteKey(Action->KeyHandle); + if (!NT_SUCCESS(Status)) + { + return Status; + } + } + else + { + /* We cannot use a handle, open the key first by it's name */ + Status = RXactpOpenTargetKey(Context->RootDirectory, + RXactDeleteKey, + &Action->KeyName, + &KeyHandle); + if (NT_SUCCESS(Status)) + { + Status = ZwDeleteKey(KeyHandle); + TmpStatus = NtClose(KeyHandle); + ASSERT(NT_SUCCESS(TmpStatus)); + if (!NT_SUCCESS(Status)) + { + return Status; + } + } + else + { + /* Failed to open the key, it's ok, if it was not found */ + if (Status != STATUS_OBJECT_NAME_NOT_FOUND) + return Status; + } + } + } + else if (Action->Type == RXactSetValueKey) + { + /* This is a set action. Check if we can use a handle */ + if ((Action->KeyHandle != INVALID_HANDLE_VALUE) && Context->CanUseHandles) + { + /* Set the key value using the given key handle */ + Status = ZwSetValueKey(Action->KeyHandle, + &Action->ValueName, + 0, + Action->ValueType, + Action->ValueData, + Action->ValueDataSize); + if (!NT_SUCCESS(Status)) + { + return Status; + } + } + else + { + /* We cannot use a handle, open the key first by it's name */ + Status = RXactpOpenTargetKey(Context->RootDirectory, + RXactSetValueKey, + &Action->KeyName, + &KeyHandle); + if (!NT_SUCCESS(Status)) + { + return Status; + } + + /* Set the key value */ + Status = ZwSetValueKey(KeyHandle, + &Action->ValueName, + 0, + Action->ValueType, + Action->ValueData, + Action->ValueDataSize); + + TmpStatus = NtClose(KeyHandle); + ASSERT(NT_SUCCESS(TmpStatus)); + + if (!NT_SUCCESS(Status)) + { + return Status; + } + } + } + else + { + ASSERT(FALSE); + return STATUS_INVALID_PARAMETER; + } + + /* Go to the next action record */ + Action = (PRXACT_ACTION)((PUCHAR)Action + Action->Size); + } + + return STATUS_SUCCESS; +} + +NTSTATUS +NTAPI +RtlStartRXact( + PRXACT_CONTEXT Context) +{ + PRXACT_DATA Buffer; + + /* We must not have a buffer yet */ + if (Context->Data != NULL) + { + return STATUS_RXACT_INVALID_STATE; + } + + /* Allocate a buffer */ + Buffer = RtlAllocateHeap(RtlGetProcessHeap(), 0, RXACT_DEFAULT_BUFFER_SIZE); + if (Buffer == NULL) + { + return STATUS_NO_MEMORY; + } + + /* Initialize the buffer */ + Buffer->ActionCount = 0; + Buffer->BufferSize = RXACT_DEFAULT_BUFFER_SIZE; + Buffer->CurrentSize = sizeof(RXACT_DATA); + Context->Data = Buffer; + + return STATUS_SUCCESS; +} + +NTSTATUS +NTAPI +RtlAbortRXact( + PRXACT_CONTEXT Context) +{ + /* We must have a data buffer */ + if (Context->Data == NULL) + { + return STATUS_RXACT_INVALID_STATE; + } + + /* Free the buffer */ + RtlFreeHeap(RtlGetProcessHeap(), 0, Context->Data); + + /* Reinitialize the context */ + RXactInitializeContext(Context, Context->RootDirectory, Context->KeyHandle); + + return STATUS_SUCCESS; +} + +NTSTATUS +NTAPI +RtlInitializeRXact( + HANDLE RootDirectory, + BOOLEAN Commit, + PRXACT_CONTEXT *OutContext) +{ + NTSTATUS Status, TmpStatus; + PRXACT_CONTEXT Context; + PKEY_VALUE_FULL_INFORMATION KeyValueInformation; + KEY_VALUE_BASIC_INFORMATION KeyValueBasicInfo; + UNICODE_STRING ValueName; + UNICODE_STRING KeyName; + OBJECT_ATTRIBUTES ObjectAttributes; + RXACT_INFO TransactionInfo; + ULONG Disposition; + ULONG ValueType; + ULONG ValueDataLength; + ULONG Length; + HANDLE KeyHandle; + + /* Open or create the 'RXACT' key in the root directory */ + RtlInitUnicodeString(&KeyName, L"RXACT"); + InitializeObjectAttributes(&ObjectAttributes, + &KeyName, + OBJ_CASE_INSENSITIVE | OBJ_OPENIF, + RootDirectory, + NULL); + Status = ZwCreateKey(&KeyHandle, + KEY_READ | KEY_WRITE | DELETE, + &ObjectAttributes, + 0, + NULL, + 0, + &Disposition); + if (!NT_SUCCESS(Status)) + { + return Status; + } + + /* Allocate a new context */ + Context = RtlAllocateHeap(RtlGetProcessHeap(), 0, sizeof(*Context)); + *OutContext = Context; + if (Context == NULL) + { + TmpStatus = ZwDeleteKey(KeyHandle); + ASSERT(NT_SUCCESS(TmpStatus)); + + TmpStatus = NtClose(KeyHandle); + ASSERT(NT_SUCCESS(TmpStatus)); + + return STATUS_NO_MEMORY; + } + + /* Initialize the context */ + RXactInitializeContext(Context, RootDirectory, KeyHandle); + + /* Check if we created a new key */ + if (Disposition == REG_CREATED_NEW_KEY) + { + /* The key is new, set the default value */ + TransactionInfo.Revision = 1; + RtlInitUnicodeString(&ValueName, NULL); + Status = ZwSetValueKey(KeyHandle, + &ValueName, + 0, + REG_NONE, + &TransactionInfo, + sizeof(TransactionInfo)); + if (!NT_SUCCESS(Status)) + { + TmpStatus = ZwDeleteKey(KeyHandle); + ASSERT(NT_SUCCESS(TmpStatus)); + + TmpStatus = NtClose(KeyHandle); + ASSERT(NT_SUCCESS(TmpStatus)); + + RtlFreeHeap(RtlGetProcessHeap(), 0, *OutContext); + return Status; + } + + return STATUS_RXACT_STATE_CREATED; + } + else + { + /* The key exited, get the default key value */ + ValueDataLength = sizeof(TransactionInfo); + Status = RtlpNtQueryValueKey(KeyHandle, + &ValueType, + &TransactionInfo, + &ValueDataLength, + 0); + if (!NT_SUCCESS(Status)) + { + TmpStatus = NtClose(KeyHandle); + ASSERT(NT_SUCCESS(TmpStatus)); + RtlFreeHeap(RtlGetProcessHeap(), 0, Context); + return Status; + } + + /* Check if the value date is valid */ + if ((ValueDataLength != sizeof(TransactionInfo)) || + (TransactionInfo.Revision != 1)) + { + TmpStatus = NtClose(KeyHandle); + ASSERT(NT_SUCCESS(TmpStatus)); + RtlFreeHeap(RtlGetProcessHeap(), 0, Context); + return STATUS_UNKNOWN_REVISION; + } + + /* Query the 'Log' key value */ + RtlInitUnicodeString(&ValueName, L"Log"); + Status = ZwQueryValueKey(KeyHandle, + &ValueName, + KeyValueBasicInformation, + &KeyValueBasicInfo, + sizeof(KeyValueBasicInfo), + &Length); + if (!NT_SUCCESS(Status)) + { + /* There is no 'Log', so we are done */ + return STATUS_SUCCESS; + } + + /* Check if the caller asked to commit the current state */ + if (!Commit) + { + /* We have a log, that must be committed first! */ + return STATUS_RXACT_COMMIT_NECESSARY; + } + + /* Query the size of the 'Log' key value */ + Status = ZwQueryValueKey(KeyHandle, + &ValueName, + KeyValueFullInformation, + NULL, + 0, + &Length); + if (Status != STATUS_BUFFER_TOO_SMALL) + { + return Status; + } + + /* Allocate a buffer for the key value information */ + KeyValueInformation = RtlAllocateHeap(RtlGetProcessHeap(), 0, Length); + if (KeyValueInformation == NULL) + { + return STATUS_NO_MEMORY; + } + + /* Query the 'Log' key value */ + Status = ZwQueryValueKey(KeyHandle, + &ValueName, + KeyValueFullInformation, + KeyValueInformation, + Length, + &Length); + if (!NT_SUCCESS(Status)) + { + RtlFreeHeap(RtlGetProcessHeap(), 0, KeyValueInformation); + RtlFreeHeap(RtlGetProcessHeap(), 0, Context); + return Status; + } + + /* Set the Data pointer to the key value data */ + Context->Data = (PRXACT_DATA)((PUCHAR)KeyValueInformation + + KeyValueInformation->DataOffset); + + /* This is an old log, don't use handles when committing! */ + Context->CanUseHandles = FALSE; + + /* Commit the data */ + Status = RXactpCommit(Context); + if (!NT_SUCCESS(Status)) + { + RtlFreeHeap(RtlGetProcessHeap(), 0, KeyValueInformation); + RtlFreeHeap(RtlGetProcessHeap(), 0, Context); + return Status; + } + + /* Delete the old key */ + Status = NtDeleteValueKey(KeyHandle, &ValueName); + ASSERT(NT_SUCCESS(Status)); + + /* Set the data member to the allocated buffer, so it will get freed */ + Context->Data = (PRXACT_DATA)KeyValueInformation; + + /* Abort the old transaction */ + Status = RtlAbortRXact(Context); + ASSERT(NT_SUCCESS(Status)); + + return Status; + } +} + +NTSTATUS +NTAPI +RtlAddAttributeActionToRXact( + PRXACT_CONTEXT Context, + ULONG ActionType, + PUNICODE_STRING KeyName, + HANDLE KeyHandle, + PUNICODE_STRING ValueName, + ULONG ValueType, + PVOID ValueData, + ULONG ValueDataSize) +{ + ULONG ActionSize; + ULONG RequiredSize; + ULONG BufferSize; + ULONG CurrentOffset; + PRXACT_DATA NewData; + PRXACT_ACTION Action; + + /* Validate ActionType parameter */ + if ((ActionType != RXactDeleteKey) && (ActionType != RXactSetValueKey)) + { + return STATUS_INVALID_PARAMETER; + } + + /* Calculate the size of the new action record */ + ActionSize = ALIGN_UP_BY(ValueName->Length, sizeof(ULONG)) + + ALIGN_UP_BY(ValueDataSize, sizeof(ULONG)) + + ALIGN_UP_BY(KeyName->Length, sizeof(ULONG)) + + ALIGN_UP_BY(sizeof(RXACT_ACTION), sizeof(ULONG)); + + /* Calculate the new buffer size we need */ + RequiredSize = ActionSize + Context->Data->CurrentSize; + + /* Check for integer overflow */ + if (RequiredSize < ActionSize) + { + return STATUS_NO_MEMORY; + } + + /* Check if the buffer is large enough */ + BufferSize = Context->Data->BufferSize; + if (RequiredSize > BufferSize) + { + /* Increase by a factor of 2, until it is large enough */ + while (BufferSize < RequiredSize) + { + BufferSize *= 2; + } + + /* Allocate a new buffer from the heap */ + NewData = RtlAllocateHeap(RtlGetProcessHeap(), 0, BufferSize); + if (NewData == NULL) + { + return STATUS_NO_MEMORY; + } + + /* Copy the old buffer to the new one */ + RtlCopyMemory(NewData, Context->Data, Context->Data->CurrentSize); + + /* Free the old buffer and use the new one */ + RtlFreeHeap(RtlGetProcessHeap(), 0, Context->Data); + Context->Data = NewData; + NewData->BufferSize = BufferSize; + } + + /* Get the next action record */ + Action = (RXACT_ACTION *)((PUCHAR)Context->Data + Context->Data->CurrentSize); + + /* Fill in the fields */ + Action->Size = ActionSize; + Action->Type = ActionType; + Action->KeyName = *KeyName; + Action->ValueName = *ValueName; + Action->ValueType = ValueType; + Action->ValueDataSize = ValueDataSize; + Action->KeyHandle = KeyHandle; + + /* Copy the key name (and convert the pointer to a buffer offset) */ + CurrentOffset = Context->Data->CurrentSize + sizeof(RXACT_ACTION); + Action->KeyName.Buffer = UlongToPtr(CurrentOffset); + RtlCopyMemory((PUCHAR)Context->Data + CurrentOffset, + KeyName->Buffer, + KeyName->Length); + + /* Copy the value name (and convert the pointer to a buffer offset) */ + CurrentOffset += ALIGN_UP_BY(KeyName->Length, sizeof(ULONG)); + Action->ValueName.Buffer = UlongToPtr(CurrentOffset); + RtlCopyMemory((PUCHAR)Context->Data + CurrentOffset, + ValueName->Buffer, + ValueName->Length); + + /* Update the offset */ + CurrentOffset += ALIGN_UP_BY(ValueName->Length, sizeof(ULONG)); + + /* Is this a set action? */ + if (ActionType == RXactSetValueKey) + { + /* Copy the key value data as well */ + Action->ValueData = UlongToPtr(CurrentOffset); + RtlCopyMemory((PUCHAR)Context->Data + CurrentOffset, + ValueData, + ValueDataSize); + CurrentOffset += ALIGN_UP_BY(ValueDataSize, sizeof(ULONG)); + } + + /* Update data site and action count */ + Context->Data->CurrentSize = CurrentOffset; + Context->Data->ActionCount++; + + return STATUS_SUCCESS; +} + +NTSTATUS +NTAPI +RtlAddActionToRXact( + PRXACT_CONTEXT Context, + ULONG ActionType, + PUNICODE_STRING KeyName, + ULONG ValueType, + PVOID ValueData, + ULONG ValueDataSize) +{ + UNICODE_STRING ValueName; + + /* Create a key and set the default key value or delete a key. */ + RtlInitUnicodeString(&ValueName, NULL); + return RtlAddAttributeActionToRXact(Context, + ActionType, + KeyName, + INVALID_HANDLE_VALUE, + &ValueName, + ValueType, + ValueData, + ValueDataSize); +} + +NTSTATUS +NTAPI +RtlApplyRXactNoFlush( + PRXACT_CONTEXT Context) +{ + NTSTATUS Status; + + /* Commit the transaction */ + Status = RXactpCommit(Context); + if (!NT_SUCCESS(Status)) + { + return Status; + } + + /* Reset the transaction */ + Status = RtlAbortRXact(Context); + ASSERT(NT_SUCCESS(Status)); + + return Status; +} + +NTSTATUS +NTAPI +RtlApplyRXact( + PRXACT_CONTEXT Context) +{ + UNICODE_STRING ValueName; + NTSTATUS Status; + + /* Temporarily safe the current transaction in the 'Log' key value */ + RtlInitUnicodeString(&ValueName, L"Log"); + Status = ZwSetValueKey(Context->KeyHandle, + &ValueName, + 0, + REG_BINARY, + Context->Data, + Context->Data->CurrentSize); + if (!NT_SUCCESS(Status)) + { + return Status; + } + + /* Flush the key */ + Status = NtFlushKey(Context->KeyHandle); + if (!NT_SUCCESS(Status)) + { + NtDeleteValueKey(Context->KeyHandle, &ValueName); + return Status; + } + + /* Now commit the transaction */ + Status = RXactpCommit(Context); + if (!NT_SUCCESS(Status)) + { + NtDeleteValueKey(Context->KeyHandle, &ValueName); + return Status; + } + + /* Delete the 'Log' key value */ + Status = NtDeleteValueKey(Context->KeyHandle, &ValueName); + ASSERT(NT_SUCCESS(Status)); + + /* Reset the transaction */ + Status = RtlAbortRXact(Context); + ASSERT(NT_SUCCESS(Status)); + + return STATUS_SUCCESS; +} + Propchange: trunk/reactos/lib/rtl/rxact.c ------------------------------------------------------------------------------ svn:eol-style = native
10 years, 11 months
1
0
0
0
[tkreuzer] 61570: [NETAPI32/SAMSRV] - Update/fix exports to match win 2k3
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Tue Jan 7 21:15:57 2014 New Revision: 61570 URL:
http://svn.reactos.org/svn/reactos?rev=61570&view=rev
Log: [NETAPI32/SAMSRV] - Update/fix exports to match win 2k3 Modified: trunk/reactos/dll/win32/netapi32/netapi32.spec trunk/reactos/dll/win32/samsrv/samsrv.spec Modified: trunk/reactos/dll/win32/netapi32/netapi32.spec URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/netapi32/netapi3…
============================================================================== --- trunk/reactos/dll/win32/netapi32/netapi32.spec [iso-8859-1] (original) +++ trunk/reactos/dll/win32/netapi32/netapi32.spec [iso-8859-1] Tue Jan 7 21:15:57 2014 @@ -1,20 +1,43 @@ -@ stub DsAddressToSiteNames -@ stub DsAddressToSiteNamesEx -@ stub DsDeregisterDnsHostRecords -@ stub DsEnumerateDomainTrusts -@ stub DsGetDcClose +@ stub CredpValidateTargetName +@ stub DsAddressToSiteNamesA +@ stub DsAddressToSiteNamesExA +@ stub DsAddressToSiteNamesExW +@ stub DsAddressToSiteNamesW +@ stub DsDeregisterDnsHostRecordsA +@ stub DsDeregisterDnsHostRecordsW +@ stub DsEnumerateDomainTrustsA +@ stub DsEnumerateDomainTrustsW +@ stub DsGetDcCloseW @ stdcall DsGetDcNameA(str str ptr str long ptr) @ stdcall DsGetDcNameW(wstr wstr ptr wstr long ptr) -@ stub DsGetDcNext -@ stub DsGetDcOpen -@ stub DsGetDcSiteCoverage +@ stub DsGetDcNameWithAccountA +@ stub DsGetDcNameWithAccountW +@ stub DsGetDcNextA +@ stub DsGetDcNextW +@ stub DsGetDcOpenA +@ stub DsGetDcOpenW +@ stub DsGetDcSiteCoverageA +@ stub DsGetDcSiteCoverageW @ stub DsGetForestTrustInformationW -@ stub DsGetSiteNameA # (str str) +@ stub DsGetSiteNameA @ stdcall DsGetSiteNameW(wstr wstr) @ stub DsMergeForestTrustInformationW +@ stub DsRoleAbortDownlevelServerUpgrade +@ stub DsRoleCancel +@ stub DsRoleDcAsDc +@ stub DsRoleDcAsReplica +@ stub DsRoleDemoteDc +@ stub DsRoleDnsNameToFlatName @ stdcall DsRoleFreeMemory(ptr) +@ stub DsRoleGetDatabaseFacts +@ stub DsRoleGetDcOperationProgress +@ stub DsRoleGetDcOperationResults @ stdcall DsRoleGetPrimaryDomainInformation(wstr long ptr) -@ stub DsValidateSubnetName +@ stub DsRoleIfmHandleFree +@ stub DsRoleServerSaveStateForUpgrade +@ stub DsRoleUpgradeDownlevelServer +@ stub DsValidateSubnetNameA +@ stub DsValidateSubnetNameW @ stub I_BrowserDebugCall @ stub I_BrowserDebugTrace @ stdcall I_BrowserQueryEmulatedDomains(wstr ptr ptr) @@ -35,18 +58,25 @@ @ stub I_NetDfsDeleteExitPoint @ stub I_NetDfsDeleteLocalPartition @ stub I_NetDfsFixLocalVolume +@ stub I_NetDfsGetFtServers @ stub I_NetDfsGetVersion @ stub I_NetDfsIsThisADomainName +@ stub I_NetDfsManagerReportSiteInfo @ stub I_NetDfsModifyPrefix @ stub I_NetDfsSetLocalVolumeState @ stub I_NetDfsSetServerInfo @ stub I_NetGetDCList +@ stub I_NetGetForestTrustInformation @ stub I_NetListCanonicalize @ stub I_NetListTraverse @ stub I_NetLogonControl2 @ stub I_NetLogonControl +@ stub I_NetLogonGetDomainInfo @ stub I_NetLogonSamLogoff @ stub I_NetLogonSamLogon +@ stub I_NetLogonSamLogonEx +@ stub I_NetLogonSamLogonWithFlags +@ stub I_NetLogonSendToSam @ stub I_NetLogonUasLogoff @ stub I_NetLogonUasLogon @ stub I_NetNameCanonicalize @@ -56,11 +86,20 @@ @ stub I_NetPathCompare @ stub I_NetPathType @ stub I_NetServerAuthenticate2 +@ stub I_NetServerAuthenticate3 @ stub I_NetServerAuthenticate +@ stub I_NetServerGetTrustInfo +@ stub I_NetServerPasswordGet +@ stub I_NetServerPasswordSet2 @ stub I_NetServerPasswordSet @ stub I_NetServerReqChallenge @ stub I_NetServerSetServiceBits @ stub I_NetServerSetServiceBitsEx +@ stub I_NetServerTrustPasswordsGet +@ stub I_NetlogonComputeClientDigest +@ stub I_NetlogonComputeServerDigest +@ stub I_NetlogonGetTrustRid +@ stub NetAddAlternateComputerName @ stub NetAlertRaise @ stub NetAlertRaiseEx @ stdcall NetApiBufferAllocate(long ptr) @@ -76,13 +115,31 @@ @ stub NetConfigSet @ stub NetConnectionEnum @ stub NetDfsAdd +@ stub NetDfsAddFtRoot +@ stub NetDfsAddStdRoot +@ stub NetDfsAddStdRootForced @ stub NetDfsEnum +@ stub NetDfsGetClientInfo +@ stub NetDfsGetDcAddress +@ stub NetDfsGetFtContainerSecurity @ stub NetDfsGetInfo +@ stub NetDfsGetSecurity +@ stub NetDfsGetStdContainerSecurity @ stub NetDfsManagerGetConfigInfo +@ stub NetDfsManagerInitialize +@ stub NetDfsManagerSendSiteInfo @ stub NetDfsMove @ stub NetDfsRemove +@ stub NetDfsRemoveFtRoot +@ stub NetDfsRemoveFtRootForced +@ stub NetDfsRemoveStdRoot @ stub NetDfsRename +@ stub NetDfsSetClientInfo +@ stub NetDfsSetFtContainerSecurity @ stub NetDfsSetInfo +@ stub NetDfsSetSecurity +@ stub NetDfsSetStdContainerSecurity +@ stub NetEnumerateComputerNames @ stub NetEnumerateTrustedDomains @ stub NetErrorLogClear @ stub NetErrorLogRead @@ -94,6 +151,7 @@ @ stdcall NetGetDCName(wstr wstr ptr) @ stub NetGetDisplayInformationIndex @ stdcall NetGetJoinInformation(wstr ptr ptr) +@ stub NetGetJoinableOUs @ stdcall NetGroupAdd(wstr long ptr ptr) @ stdcall NetGroupAddUser(wstr wstr wstr) @ stdcall NetGroupDel(wstr wstr) @@ -103,6 +161,7 @@ @ stdcall NetGroupGetUsers(wstr wstr long ptr long ptr ptr ptr) @ stdcall NetGroupSetInfo(wstr wstr long ptr ptr) @ stdcall NetGroupSetUsers(wstr wstr long ptr long) +@ stub NetJoinDomain @ stdcall NetLocalGroupAdd(wstr long ptr ptr) @ stdcall NetLocalGroupAddMember(wstr wstr ptr) @ stdcall NetLocalGroupAddMembers(wstr wstr long ptr long) @@ -114,14 +173,19 @@ @ stdcall NetLocalGroupGetMembers(wstr wstr long ptr long ptr ptr ptr) @ stdcall NetLocalGroupSetInfo(wstr wstr long ptr ptr) @ stdcall NetLocalGroupSetMembers(wstr wstr long ptr long) +@ stub NetLogonGetTimeServiceParentDomain +@ stub NetLogonSetServiceBits @ stub NetMessageBufferSend @ stub NetMessageNameAdd @ stub NetMessageNameDel @ stub NetMessageNameEnum @ stub NetMessageNameGetInfo @ stdcall NetQueryDisplayInformation(wstr long long long long ptr ptr) +@ stub NetRegisterDomainNameChangeNotification @ stub NetRemoteComputerSupports @ stub NetRemoteTOD +@ stub NetRemoveAlternateComputerName +@ stub NetRenameMachineInDomain @ stub NetReplExportDirAdd @ stub NetReplExportDirDel @ stub NetReplExportDirEnum @@ -137,35 +201,6 @@ @ stub NetReplImportDirLock @ stub NetReplImportDirUnlock @ stub NetReplSetInfo -@ stub NetRplAdapterAdd -@ stub NetRplAdapterDel -@ stub NetRplAdapterEnum -@ stub NetRplBootAdd -@ stub NetRplBootDel -@ stub NetRplBootEnum -@ stub NetRplClose -@ stub NetRplConfigAdd -@ stub NetRplConfigDel -@ stub NetRplConfigEnum -@ stub NetRplGetInfo -@ stub NetRplOpen -@ stub NetRplProfileAdd -@ stub NetRplProfileClone -@ stub NetRplProfileDel -@ stub NetRplProfileEnum -@ stub NetRplProfileGetInfo -@ stub NetRplProfileSetInfo -@ stub NetRplSetInfo -@ stub NetRplSetSecurity -@ stub NetRplVendorAdd -@ stub NetRplVendorDel -@ stub NetRplVendorEnum -@ stub NetRplWkstaAdd -@ stub NetRplWkstaClone -@ stub NetRplWkstaDel -@ stub NetRplWkstaEnum -@ stub NetRplWkstaGetInfo -@ stub NetRplWkstaSetInfo @ stub NetScheduleJobAdd @ stub NetScheduleJobDel @ stub NetScheduleJobEnum @@ -188,6 +223,7 @@ @ stub NetSessionDel @ stdcall NetSessionEnum(wstr wstr wstr long ptr long ptr ptr ptr) @ stub NetSessionGetInfo +@ stub NetSetPrimaryComputerName @ stdcall NetShareAdd(wstr long ptr ptr) @ stub NetShareCheck @ stdcall NetShareDel(wstr wstr long) @@ -197,6 +233,8 @@ @ stdcall NetShareGetInfo(wstr wstr long ptr) @ stub NetShareSetInfo @ stdcall NetStatisticsGet(wstr wstr long long ptr) +@ stub NetUnjoinDomain +@ stub NetUnregisterDomainNameChangeNotification @ stdcall NetUseAdd(wstr long ptr ptr) @ stub NetUseDel @ stdcall NetUseEnum(wstr long ptr long ptr ptr ptr) @@ -212,6 +250,9 @@ @ stdcall NetUserModalsSet(wstr long ptr ptr) @ stdcall NetUserSetGroups(wstr wstr long ptr long) @ stdcall NetUserSetInfo(wstr wstr long ptr ptr) +@ stub NetValidateName +@ stub NetValidatePasswordPolicy +@ stub NetValidatePasswordPolicyFree @ stdcall NetWkstaGetInfo(wstr long ptr) @ stub NetWkstaSetInfo @ stub NetWkstaTransportAdd @@ -224,18 +265,19 @@ @ stdcall Netbios(ptr) @ stub NetpAccessCheck @ stub NetpAccessCheckAndAudit +@ stub NetpAddTlnFtinfoEntry @ stub NetpAllocConfigName -@ stub NetpAllocStrFromStr +@ stub NetpAllocFtinfoEntry @ stub NetpAllocStrFromWStr -@ stub NetpAllocTStrFromString @ stub NetpAllocWStrFromStr @ stub NetpAllocWStrFromWStr @ stub NetpApiStatusToNtStatus @ stub NetpAssertFailed +@ stub NetpCleanFtinfoContext @ stub NetpCloseConfigData +@ stub NetpCopyFtinfoContext @ stub NetpCopyStringToBuffer @ stub NetpCreateSecurityObject -@ stub NetpDbgDisplayServerInfo @ stub NetpDbgPrint @ stdcall NetpDeleteSecurityObject(long) ntdll.RtlDeleteSecurityObject @ stdcall NetpGetComputerName(ptr) @@ -247,11 +289,13 @@ @ stub NetpGetFileSecurity @ stub NetpGetPrivilege @ stub NetpHexDump +@ stub NetpInitFtinfoContext @ stdcall NetpInitOemString(ptr str) ntdll.RtlInitAnsiString @ stub NetpIsRemote @ stub NetpIsUncComputerNameValid @ stub NetpLocalTimeZoneOffset @ stub NetpLogonPutUnicodeString +@ stub NetpMergeFtinfo @ stub NetpNetBiosAddName @ stub NetpNetBiosCall @ stub NetpNetBiosDelName @@ -264,14 +308,18 @@ @ stdcall NetpNtStatusToApiStatus(long) @ stub NetpOpenConfigData @ stub NetpPackString +@ stub NetpParmsQueryUserProperty +@ stub NetpParmsQueryUserPropertyWithLength +@ stub NetpParmsSetUserProperty +@ stub NetpParmsSetUserPropertyWithLength +@ stub NetpParmsUserPropertyFree @ stub NetpReleasePrivilege -@ stub NetpSetConfigBool -@ stub NetpSetConfigDword -@ stub NetpSetConfigTStrArray @ stub NetpSetFileSecurity @ stub NetpSmbCheck +@ stub NetpStoreIntialDcRecord @ stub NetpStringToNetBiosName @ stub NetpTStrArrayEntryCount +@ stub NetpUpgradePreNT5JoinInfo @ stub NetpwNameCanonicalize @ stub NetpwNameCompare @ stub NetpwNameValidate Modified: trunk/reactos/dll/win32/samsrv/samsrv.spec URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/samsrv/samsrv.sp…
============================================================================== --- trunk/reactos/dll/win32/samsrv/samsrv.spec [iso-8859-1] (original) +++ trunk/reactos/dll/win32/samsrv/samsrv.spec [iso-8859-1] Tue Jan 7 21:15:57 2014 @@ -38,7 +38,7 @@ @ stub SamIGetFixedAttributes @ stub SamIGetInterdomainTrustAccountPasswordsForUpgrade @ stub SamIGetPrivateData -@ stub SamIGetResourceGroupmembershipsTransitive +@ stub SamIGetResourceGroupMembershipsTransitive @ stub SamIGetSerialNumberDomain @ stub SamIGetUserLogonInformation @ stub SamIGetUserLogonInformation2
10 years, 11 months
1
0
0
0
[tkreuzer] 61569: [NTOSKRNL] - Fix return value of ObOpenObjectByName (in success case the return status of ObpLookupObjectName is returned.
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Tue Jan 7 20:50:34 2014 New Revision: 61569 URL:
http://svn.reactos.org/svn/reactos?rev=61569&view=rev
Log: [NTOSKRNL] - Fix return value of ObOpenObjectByName (in success case the return status of ObpLookupObjectName is returned. Modified: trunk/reactos/ntoskrnl/ob/obhandle.c Modified: trunk/reactos/ntoskrnl/ob/obhandle.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ob/obhandle.c?rev…
============================================================================== --- trunk/reactos/ntoskrnl/ob/obhandle.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/ob/obhandle.c [iso-8859-1] Tue Jan 7 20:50:34 2014 @@ -2431,7 +2431,7 @@ { PVOID Object = NULL; UNICODE_STRING ObjectName; - NTSTATUS Status; + NTSTATUS Status, Status2; POBJECT_HEADER ObjectHeader; PGENERIC_MAPPING GenericMapping = NULL; OB_OPEN_REASON OpenReason; @@ -2557,17 +2557,21 @@ else { /* Create the actual handle now */ - Status = ObpCreateHandle(OpenReason, - Object, - ObjectType, - PassedAccessState, - 0, - TempBuffer->ObjectCreateInfo.Attributes, - &TempBuffer->LookupContext, - AccessMode, - NULL, - Handle); - if (!NT_SUCCESS(Status)) ObDereferenceObject(Object); + Status2 = ObpCreateHandle(OpenReason, + Object, + ObjectType, + PassedAccessState, + 0, + TempBuffer->ObjectCreateInfo.Attributes, + &TempBuffer->LookupContext, + AccessMode, + NULL, + Handle); + if (!NT_SUCCESS(Status)) + { + ObDereferenceObject(Object); + Status = Status2; + } } Cleanup:
10 years, 11 months
1
0
0
0
[tkreuzer] 61568: [RTL/NDK/NTDLL] - Fix calling convention of RtlSetProcessIsCritical and RtlSetThreadIsCritical (they are __cdecl!) [NDK] - Add missing extern "C"
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Tue Jan 7 20:23:44 2014 New Revision: 61568 URL:
http://svn.reactos.org/svn/reactos?rev=61568&view=rev
Log: [RTL/NDK/NTDLL] - Fix calling convention of RtlSetProcessIsCritical and RtlSetThreadIsCritical (they are __cdecl!) [NDK] - Add missing extern "C" Modified: trunk/reactos/dll/ntdll/def/ntdll.spec trunk/reactos/include/ndk/mmtypes.h trunk/reactos/include/ndk/rtlfuncs.h trunk/reactos/lib/rtl/process.c trunk/reactos/lib/rtl/thread.c Modified: trunk/reactos/dll/ntdll/def/ntdll.spec URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/ntdll/def/ntdll.spec?r…
============================================================================== --- trunk/reactos/dll/ntdll/def/ntdll.spec [iso-8859-1] (original) +++ trunk/reactos/dll/ntdll/def/ntdll.spec [iso-8859-1] Tue Jan 7 20:23:44 2014 @@ -846,7 +846,7 @@ @ stdcall RtlSetLastWin32ErrorAndNtStatusFromNtStatus(long) @ stdcall RtlSetMemoryStreamSize(ptr int64) @ stdcall RtlSetOwnerSecurityDescriptor(ptr ptr long) -@ stdcall RtlSetProcessIsCritical(long ptr long) +@ cdecl RtlSetProcessIsCritical(long ptr long) ;@ stdcall RtlSetProperties ; RtlSetProperties ;@ stdcall RtlSetPropertyClassId ; 4.0 only ;@ stdcall RtlSetPropertyNames ; 4.0 only @@ -856,7 +856,7 @@ @ stdcall RtlSetSecurityObject(long ptr ptr ptr ptr) @ stdcall RtlSetSecurityObjectEx(long ptr ptr long ptr ptr) @ stdcall RtlSetThreadErrorMode(long ptr) -@ stdcall RtlSetThreadIsCritical(long ptr long) +@ cdecl RtlSetThreadIsCritical(long ptr long) @ stdcall RtlSetThreadPoolStartFunc(ptr ptr) @ stdcall RtlSetTimeZoneInformation(ptr) ;@ stdcall RtlSetTimer Modified: trunk/reactos/include/ndk/mmtypes.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ndk/mmtypes.h?rev=…
============================================================================== --- trunk/reactos/include/ndk/mmtypes.h [iso-8859-1] (original) +++ trunk/reactos/include/ndk/mmtypes.h [iso-8859-1] Tue Jan 7 20:23:44 2014 @@ -25,6 +25,10 @@ #include <umtypes.h> #include <arch/mmtypes.h> #include <extypes.h> + +#ifdef __cplusplus +extern "C" { +#endif // // Page-Rounding Macros @@ -1037,4 +1041,8 @@ #endif // !NTOS_MODE_USER +#ifdef __cplusplus +} // extern "C" +#endif + #endif // _MMTYPES_H Modified: trunk/reactos/include/ndk/rtlfuncs.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ndk/rtlfuncs.h?rev…
============================================================================== --- trunk/reactos/include/ndk/rtlfuncs.h [iso-8859-1] (original) +++ trunk/reactos/include/ndk/rtlfuncs.h [iso-8859-1] Tue Jan 7 20:23:44 2014 @@ -2564,7 +2564,7 @@ NTSYSAPI NTSTATUS -NTAPI +__cdecl RtlSetProcessIsCritical( _In_ BOOLEAN NewValue, _Out_opt_ PBOOLEAN OldValue, @@ -2573,7 +2573,7 @@ NTSYSAPI NTSTATUS -NTAPI +__cdecl RtlSetThreadIsCritical( _In_ BOOLEAN NewValue, _Out_opt_ PBOOLEAN OldValue, @@ -4244,7 +4244,7 @@ NTSYSAPI HRESULT NTAPI -RtlQueryInterfaceMemoryStream( +RtlQueryInterfaceMemoryStream( _In_ struct IStream *This, _In_ REFIID RequestedIid, _Outptr_ PVOID *ResultObject @@ -4253,21 +4253,21 @@ NTSYSAPI ULONG NTAPI -RtlAddRefMemoryStream( +RtlAddRefMemoryStream( _In_ struct IStream *This ); NTSYSAPI ULONG NTAPI -RtlReleaseMemoryStream( +RtlReleaseMemoryStream( _In_ struct IStream *This ); NTSYSAPI HRESULT NTAPI -RtlReadMemoryStream( +RtlReadMemoryStream( _In_ struct IStream *This, _Out_writes_bytes_(Length) PVOID Buffer, _In_ ULONG Length, @@ -4277,7 +4277,7 @@ NTSYSAPI HRESULT NTAPI -RtlReadOutOfProcessMemoryStream( +RtlReadOutOfProcessMemoryStream( _In_ struct IStream *This, _Out_writes_bytes_(Length) PVOID Buffer, _In_ ULONG Length, @@ -4287,7 +4287,7 @@ NTSYSAPI HRESULT NTAPI -RtlSeekMemoryStream( +RtlSeekMemoryStream( _In_ struct IStream *This, _In_ LARGE_INTEGER RelativeOffset, _In_ ULONG Origin, @@ -4297,7 +4297,7 @@ NTSYSAPI HRESULT NTAPI -RtlCopyMemoryStreamTo( +RtlCopyMemoryStreamTo( _In_ struct IStream *This, _In_ struct IStream *Target, _In_ ULARGE_INTEGER Length, @@ -4308,7 +4308,7 @@ NTSYSAPI HRESULT NTAPI -RtlCopyOutOfProcessMemoryStreamTo( +RtlCopyOutOfProcessMemoryStreamTo( _In_ struct IStream *This, _In_ struct IStream *Target, _In_ ULARGE_INTEGER Length, @@ -4319,7 +4319,7 @@ NTSYSAPI HRESULT NTAPI -RtlStatMemoryStream( +RtlStatMemoryStream( _In_ struct IStream *This, _Out_ struct tagSTATSTG *Stats, _In_ ULONG Flags @@ -4329,7 +4329,7 @@ NTSYSAPI HRESULT NTAPI -RtlWriteMemoryStream( +RtlWriteMemoryStream( _In_ struct IStream *This, _In_reads_bytes_(Length) CONST VOID *Buffer, _In_ ULONG Length, @@ -4339,7 +4339,7 @@ NTSYSAPI HRESULT NTAPI -RtlSetMemoryStreamSize( +RtlSetMemoryStreamSize( _In_ struct IStream *This, _In_ ULARGE_INTEGER NewSize ); @@ -4347,7 +4347,7 @@ NTSYSAPI HRESULT NTAPI -RtlCommitMemoryStream( +RtlCommitMemoryStream( _In_ struct IStream *This, _In_ ULONG CommitFlags ); @@ -4355,14 +4355,14 @@ NTSYSAPI HRESULT NTAPI -RtlRevertMemoryStream( +RtlRevertMemoryStream( _In_ struct IStream *This ); NTSYSAPI HRESULT NTAPI -RtlLockMemoryStreamRegion( +RtlLockMemoryStreamRegion( _In_ struct IStream *This, _In_ ULARGE_INTEGER Offset, _In_ ULARGE_INTEGER Length, @@ -4372,7 +4372,7 @@ NTSYSAPI HRESULT NTAPI -RtlUnlockMemoryStreamRegion( +RtlUnlockMemoryStreamRegion( _In_ struct IStream *This, _In_ ULARGE_INTEGER Offset, _In_ ULARGE_INTEGER Length, @@ -4382,7 +4382,7 @@ NTSYSAPI HRESULT NTAPI -RtlCloneMemoryStream( +RtlCloneMemoryStream( _In_ struct IStream *This, _Outptr_ struct IStream **ResultStream ); Modified: trunk/reactos/lib/rtl/process.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/rtl/process.c?rev=6156…
============================================================================== --- trunk/reactos/lib/rtl/process.c [iso-8859-1] (original) +++ trunk/reactos/lib/rtl/process.c [iso-8859-1] Tue Jan 7 20:23:44 2014 @@ -357,7 +357,7 @@ *
http://www.geoffchappell.com/studies/windows/win32/ntdll/api/rtl/peb/setpro…
*/ NTSTATUS -NTAPI +__cdecl RtlSetProcessIsCritical(IN BOOLEAN NewValue, OUT PBOOLEAN OldValue OPTIONAL, IN BOOLEAN NeedBreaks) Modified: trunk/reactos/lib/rtl/thread.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/rtl/thread.c?rev=61568…
============================================================================== --- trunk/reactos/lib/rtl/thread.c [iso-8859-1] (original) +++ trunk/reactos/lib/rtl/thread.c [iso-8859-1] Tue Jan 7 20:23:44 2014 @@ -158,7 +158,7 @@ * @implemented */ NTSTATUS -NTAPI +__cdecl RtlSetThreadIsCritical(IN BOOLEAN NewValue, OUT PBOOLEAN OldValue OPTIONAL, IN BOOLEAN NeedBreaks)
10 years, 11 months
1
0
0
0
[tkreuzer] 61567: [DDK/XDK] - Add missing _KEY_USER_FLAGS_INFORMATION - Fix some FSCTL_* constants, add Win7/8 ones - Sync DDK/XDK (just a reminder, you are supposed to fix XDK headers and simply r...
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Tue Jan 7 20:17:01 2014 New Revision: 61567 URL:
http://svn.reactos.org/svn/reactos?rev=61567&view=rev
Log: [DDK/XDK] - Add missing _KEY_USER_FLAGS_INFORMATION - Fix some FSCTL_* constants, add Win7/8 ones - Sync DDK/XDK (just a reminder, you are supposed to fix XDK headers and simply regenerate the DDK headers from them) Modified: trunk/reactos/include/ddk/ntifs.h trunk/reactos/include/ddk/wdm.h trunk/reactos/include/xdk/cmtypes.h trunk/reactos/include/xdk/iotypes.h trunk/reactos/include/xdk/rtlfuncs.h Modified: trunk/reactos/include/ddk/ntifs.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ddk/ntifs.h?rev=61…
============================================================================== --- trunk/reactos/include/ddk/ntifs.h [iso-8859-1] (original) +++ trunk/reactos/include/ddk/ntifs.h [iso-8859-1] Tue Jan 7 20:17:01 2014 @@ -3558,7 +3558,7 @@ #define FSCTL_GET_NTFS_FILE_RECORD CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 26, METHOD_BUFFERED, FILE_ANY_ACCESS) #define FSCTL_GET_VOLUME_BITMAP CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 27, METHOD_NEITHER, FILE_ANY_ACCESS) #define FSCTL_GET_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 28, METHOD_NEITHER, FILE_ANY_ACCESS) -#define FSCTL_MOVE_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 29, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_MOVE_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 29, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) #define FSCTL_IS_VOLUME_DIRTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 30, METHOD_BUFFERED, FILE_ANY_ACCESS) #define FSCTL_ALLOW_EXTENDED_DASD_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 32, METHOD_NEITHER, FILE_ANY_ACCESS) @@ -3573,22 +3573,22 @@ #define FSCTL_SET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 41, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) #define FSCTL_GET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS) #define FSCTL_DELETE_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 43, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) -#define FSCTL_ENUM_USN_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 44, METHOD_NEITHER, FILE_READ_DATA) +#define FSCTL_ENUM_USN_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 44, METHOD_NEITHER, FILE_ANY_ACCESS) #define FSCTL_SECURITY_ID_CHECK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 45, METHOD_NEITHER, FILE_READ_DATA) -#define FSCTL_READ_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 46, METHOD_NEITHER, FILE_READ_DATA) +#define FSCTL_READ_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 46, METHOD_NEITHER, FILE_ANY_ACCESS) #define FSCTL_SET_OBJECT_ID_EXTENDED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 47, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) #define FSCTL_CREATE_OR_GET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 48, METHOD_BUFFERED, FILE_ANY_ACCESS) #define FSCTL_SET_SPARSE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 49, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) #define FSCTL_SET_ZERO_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 50, METHOD_BUFFERED, FILE_WRITE_DATA) #define FSCTL_QUERY_ALLOCATED_RANGES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 51, METHOD_NEITHER, FILE_READ_DATA) #define FSCTL_ENABLE_UPGRADE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 52, METHOD_BUFFERED, FILE_WRITE_DATA) -#define FSCTL_SET_ENCRYPTION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 53, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_SET_ENCRYPTION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 53, METHOD_NEITHER, FILE_ANY_ACCESS) #define FSCTL_ENCRYPTION_FSCTL_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 54, METHOD_NEITHER, FILE_ANY_ACCESS) #define FSCTL_WRITE_RAW_ENCRYPTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 55, METHOD_NEITHER, FILE_SPECIAL_ACCESS) #define FSCTL_READ_RAW_ENCRYPTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 56, METHOD_NEITHER, FILE_SPECIAL_ACCESS) -#define FSCTL_CREATE_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 57, METHOD_NEITHER, FILE_READ_DATA) -#define FSCTL_READ_FILE_USN_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 58, METHOD_NEITHER, FILE_READ_DATA) -#define FSCTL_WRITE_USN_CLOSE_RECORD CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 59, METHOD_NEITHER, FILE_READ_DATA) +#define FSCTL_CREATE_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 57, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_READ_FILE_USN_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 58, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_WRITE_USN_CLOSE_RECORD CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 59, METHOD_NEITHER, FILE_ANY_ACCESS) #define FSCTL_EXTEND_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 60, METHOD_BUFFERED, FILE_ANY_ACCESS) #define FSCTL_QUERY_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 61, METHOD_BUFFERED, FILE_ANY_ACCESS) #define FSCTL_DELETE_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 62, METHOD_BUFFERED, FILE_ANY_ACCESS) @@ -3631,7 +3631,6 @@ #define FSCTL_SHRINK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 108, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) #define FSCTL_SET_SHORT_NAME_BEHAVIOR CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 109, METHOD_BUFFERED, FILE_ANY_ACCESS) #define FSCTL_DFSR_SET_GHOST_HANDLE_STATE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 110, METHOD_BUFFERED, FILE_ANY_ACCESS) - #define FSCTL_TXFS_LIST_TRANSACTION_LOCKED_FILES \ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 120, METHOD_BUFFERED, FILE_READ_DATA) #define FSCTL_TXFS_LIST_TRANSACTIONS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 121, METHOD_BUFFERED, FILE_READ_DATA) @@ -3652,17 +3651,15 @@ #define FSCTL_GET_RETRIEVAL_POINTER_BASE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 141, METHOD_BUFFERED, FILE_ANY_ACCESS) #define FSCTL_SET_PERSISTENT_VOLUME_STATE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 142, METHOD_BUFFERED, FILE_ANY_ACCESS) #define FSCTL_QUERY_PERSISTENT_VOLUME_STATE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 143, METHOD_BUFFERED, FILE_ANY_ACCESS) - #define FSCTL_REQUEST_OPLOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 144, METHOD_BUFFERED, FILE_ANY_ACCESS) - #define FSCTL_CSV_TUNNEL_REQUEST CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 145, METHOD_BUFFERED, FILE_ANY_ACCESS) #define FSCTL_IS_CSV_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 146, METHOD_BUFFERED, FILE_ANY_ACCESS) - #define FSCTL_QUERY_FILE_SYSTEM_RECOGNITION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 147, METHOD_BUFFERED, FILE_ANY_ACCESS) #define FSCTL_CSV_GET_VOLUME_PATH_NAME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 148, METHOD_BUFFERED, FILE_ANY_ACCESS) #define FSCTL_CSV_GET_VOLUME_NAME_FOR_VOLUME_MOUNT_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 149, METHOD_BUFFERED, FILE_ANY_ACCESS) #define FSCTL_CSV_GET_VOLUME_PATH_NAMES_FOR_VOLUME_NAME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 150, METHOD_BUFFERED, FILE_ANY_ACCESS) #define FSCTL_IS_FILE_ON_CSV_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 151, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_CSV_INTERNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 155, METHOD_BUFFERED, FILE_ANY_ACCESS) typedef struct _CSV_NAMESPACE_INFO { ULONG Version; @@ -3673,6 +3670,36 @@ #define CSV_NAMESPACE_INFO_V1 (sizeof(CSV_NAMESPACE_INFO)) #define CSV_INVALID_DEVICE_NUMBER 0xFFFFFFFF + +#endif + +#if (_WIN32_WINNT >= 0x0602) + +#define FSCTL_FILE_LEVEL_TRIM CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 130, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_CORRUPTION_HANDLING CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 152, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_OFFLOAD_READ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 153, METHOD_BUFFERED, FILE_READ_ACCESS) +#define FSCTL_OFFLOAD_WRITE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 154, METHOD_BUFFERED, FILE_WRITE_ACCESS) +#define FSCTL_SET_PURGE_FAILURE_MODE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 156, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_QUERY_FILE_LAYOUT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 157, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_IS_VOLUME_OWNED_BYCSVFS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 158, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_GET_INTEGRITY_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 159, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_SET_INTEGRITY_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 160, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA) +#define FSCTL_QUERY_FILE_REGIONS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 161, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DEDUP_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 165, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DEDUP_QUERY_FILE_HASHES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 166, METHOD_NEITHER, FILE_READ_DATA) +#define FSCTL_RKF_INTERNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 171, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_SCRUB_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 172, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_REPAIR_COPIES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 173, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA) +#define FSCTL_DISABLE_LOCAL_BUFFERING CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 174, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_CSV_MGMT_LOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 175, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_CSV_QUERY_DOWN_LEVEL_FILE_SYSTEM_CHARACTERISTICS \ + CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 176, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_ADVANCE_FILE_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 177, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_CSV_SYNC_TUNNEL_REQUEST CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 178, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_CSV_QUERY_VETO_FILE_DIRECT_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 179, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_WRITE_USN_REASON CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 180, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_CSV_CONTROL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 181, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_GET_REFS_VOLUME_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 182, METHOD_BUFFERED, FILE_ANY_ACCESS) #endif Modified: trunk/reactos/include/ddk/wdm.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ddk/wdm.h?rev=6156…
============================================================================== --- trunk/reactos/include/ddk/wdm.h [iso-8859-1] (original) +++ trunk/reactos/include/ddk/wdm.h [iso-8859-1] Tue Jan 7 20:17:01 2014 @@ -3440,6 +3440,12 @@ typedef struct _KEY_WRITE_TIME_INFORMATION { LARGE_INTEGER LastWriteTime; } KEY_WRITE_TIME_INFORMATION, *PKEY_WRITE_TIME_INFORMATION; + +#if (NTDDI_VERSION < NTDDI_VISTA) +typedef struct _KEY_USER_FLAGS_INFORMATION { + ULONG UserFlags; +} KEY_USER_FLAGS_INFORMATION, *PKEY_USER_FLAGS_INFORMATION; +#endif typedef enum _REG_NOTIFY_CLASS { RegNtDeleteKey, @@ -8333,7 +8339,7 @@ #define HIGH_LEVEL 15 #define KI_USER_SHARED_DATA ((ULONG_PTR)(KADDRESS_BASE + 0xFFFE0000)) -extern DECLSPEC_CACHEALIGN volatile LARGE_INTEGER KeTickCount; +extern volatile LARGE_INTEGER KeTickCount; #define PAUSE_PROCESSOR __yield(); Modified: trunk/reactos/include/xdk/cmtypes.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/xdk/cmtypes.h?rev=…
============================================================================== --- trunk/reactos/include/xdk/cmtypes.h [iso-8859-1] (original) +++ trunk/reactos/include/xdk/cmtypes.h [iso-8859-1] Tue Jan 7 20:17:01 2014 @@ -617,6 +617,12 @@ typedef struct _KEY_WRITE_TIME_INFORMATION { LARGE_INTEGER LastWriteTime; } KEY_WRITE_TIME_INFORMATION, *PKEY_WRITE_TIME_INFORMATION; + +#if (NTDDI_VERSION < NTDDI_VISTA) +typedef struct _KEY_USER_FLAGS_INFORMATION { + ULONG UserFlags; +} KEY_USER_FLAGS_INFORMATION, *PKEY_USER_FLAGS_INFORMATION; +#endif typedef enum _REG_NOTIFY_CLASS { RegNtDeleteKey, Modified: trunk/reactos/include/xdk/iotypes.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/xdk/iotypes.h?rev=…
============================================================================== --- trunk/reactos/include/xdk/iotypes.h [iso-8859-1] (original) +++ trunk/reactos/include/xdk/iotypes.h [iso-8859-1] Tue Jan 7 20:17:01 2014 @@ -5658,7 +5658,7 @@ #define FSCTL_GET_NTFS_FILE_RECORD CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 26, METHOD_BUFFERED, FILE_ANY_ACCESS) #define FSCTL_GET_VOLUME_BITMAP CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 27, METHOD_NEITHER, FILE_ANY_ACCESS) #define FSCTL_GET_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 28, METHOD_NEITHER, FILE_ANY_ACCESS) -#define FSCTL_MOVE_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 29, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_MOVE_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 29, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) #define FSCTL_IS_VOLUME_DIRTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 30, METHOD_BUFFERED, FILE_ANY_ACCESS) #define FSCTL_ALLOW_EXTENDED_DASD_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 32, METHOD_NEITHER, FILE_ANY_ACCESS) @@ -5667,28 +5667,28 @@ #if (_WIN32_WINNT >= 0x0500) #define FSCTL_FIND_FILES_BY_SID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 35, METHOD_NEITHER, FILE_ANY_ACCESS) -#define FSCTL_SET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 38, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_SET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 38, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) #define FSCTL_GET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 39, METHOD_BUFFERED, FILE_ANY_ACCESS) -#define FSCTL_DELETE_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 40, METHOD_BUFFERED, FILE_WRITE_DATA) -#define FSCTL_SET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 41, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_DELETE_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 40, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) +#define FSCTL_SET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 41, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) #define FSCTL_GET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS) -#define FSCTL_DELETE_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 43, METHOD_BUFFERED, FILE_WRITE_DATA) -#define FSCTL_ENUM_USN_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 44, METHOD_NEITHER, FILE_READ_DATA) +#define FSCTL_DELETE_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 43, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) +#define FSCTL_ENUM_USN_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 44, METHOD_NEITHER, FILE_ANY_ACCESS) #define FSCTL_SECURITY_ID_CHECK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 45, METHOD_NEITHER, FILE_READ_DATA) -#define FSCTL_READ_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 46, METHOD_NEITHER, FILE_READ_DATA) -#define FSCTL_SET_OBJECT_ID_EXTENDED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 47, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_READ_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 46, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_SET_OBJECT_ID_EXTENDED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 47, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) #define FSCTL_CREATE_OR_GET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 48, METHOD_BUFFERED, FILE_ANY_ACCESS) -#define FSCTL_SET_SPARSE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 49, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_SET_SPARSE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 49, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) #define FSCTL_SET_ZERO_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 50, METHOD_BUFFERED, FILE_WRITE_DATA) #define FSCTL_QUERY_ALLOCATED_RANGES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 51, METHOD_NEITHER, FILE_READ_DATA) #define FSCTL_ENABLE_UPGRADE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 52, METHOD_BUFFERED, FILE_WRITE_DATA) -#define FSCTL_SET_ENCRYPTION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 53, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_SET_ENCRYPTION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 53, METHOD_NEITHER, FILE_ANY_ACCESS) #define FSCTL_ENCRYPTION_FSCTL_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 54, METHOD_NEITHER, FILE_ANY_ACCESS) -#define FSCTL_WRITE_RAW_ENCRYPTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 55, METHOD_NEITHER, FILE_ANY_ACCESS) -#define FSCTL_READ_RAW_ENCRYPTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 56, METHOD_NEITHER, FILE_ANY_ACCESS) -#define FSCTL_CREATE_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 57, METHOD_NEITHER, FILE_READ_DATA) -#define FSCTL_READ_FILE_USN_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 58, METHOD_NEITHER, FILE_READ_DATA) -#define FSCTL_WRITE_USN_CLOSE_RECORD CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 59, METHOD_NEITHER, FILE_READ_DATA) +#define FSCTL_WRITE_RAW_ENCRYPTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 55, METHOD_NEITHER, FILE_SPECIAL_ACCESS) +#define FSCTL_READ_RAW_ENCRYPTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 56, METHOD_NEITHER, FILE_SPECIAL_ACCESS) +#define FSCTL_CREATE_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 57, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_READ_FILE_USN_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 58, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_WRITE_USN_CLOSE_RECORD CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 59, METHOD_NEITHER, FILE_ANY_ACCESS) #define FSCTL_EXTEND_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 60, METHOD_BUFFERED, FILE_ANY_ACCESS) #define FSCTL_QUERY_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 61, METHOD_BUFFERED, FILE_ANY_ACCESS) #define FSCTL_DELETE_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 62, METHOD_BUFFERED, FILE_ANY_ACCESS) @@ -5731,7 +5731,6 @@ #define FSCTL_SHRINK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 108, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) #define FSCTL_SET_SHORT_NAME_BEHAVIOR CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 109, METHOD_BUFFERED, FILE_ANY_ACCESS) #define FSCTL_DFSR_SET_GHOST_HANDLE_STATE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 110, METHOD_BUFFERED, FILE_ANY_ACCESS) - #define FSCTL_TXFS_LIST_TRANSACTION_LOCKED_FILES \ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 120, METHOD_BUFFERED, FILE_READ_DATA) #define FSCTL_TXFS_LIST_TRANSACTIONS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 121, METHOD_BUFFERED, FILE_READ_DATA) @@ -5752,17 +5751,15 @@ #define FSCTL_GET_RETRIEVAL_POINTER_BASE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 141, METHOD_BUFFERED, FILE_ANY_ACCESS) #define FSCTL_SET_PERSISTENT_VOLUME_STATE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 142, METHOD_BUFFERED, FILE_ANY_ACCESS) #define FSCTL_QUERY_PERSISTENT_VOLUME_STATE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 143, METHOD_BUFFERED, FILE_ANY_ACCESS) - #define FSCTL_REQUEST_OPLOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 144, METHOD_BUFFERED, FILE_ANY_ACCESS) - #define FSCTL_CSV_TUNNEL_REQUEST CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 145, METHOD_BUFFERED, FILE_ANY_ACCESS) #define FSCTL_IS_CSV_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 146, METHOD_BUFFERED, FILE_ANY_ACCESS) - #define FSCTL_QUERY_FILE_SYSTEM_RECOGNITION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 147, METHOD_BUFFERED, FILE_ANY_ACCESS) #define FSCTL_CSV_GET_VOLUME_PATH_NAME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 148, METHOD_BUFFERED, FILE_ANY_ACCESS) #define FSCTL_CSV_GET_VOLUME_NAME_FOR_VOLUME_MOUNT_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 149, METHOD_BUFFERED, FILE_ANY_ACCESS) #define FSCTL_CSV_GET_VOLUME_PATH_NAMES_FOR_VOLUME_NAME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 150, METHOD_BUFFERED, FILE_ANY_ACCESS) #define FSCTL_IS_FILE_ON_CSV_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 151, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_CSV_INTERNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 155, METHOD_BUFFERED, FILE_ANY_ACCESS) typedef struct _CSV_NAMESPACE_INFO { ULONG Version; @@ -5773,6 +5770,36 @@ #define CSV_NAMESPACE_INFO_V1 (sizeof(CSV_NAMESPACE_INFO)) #define CSV_INVALID_DEVICE_NUMBER 0xFFFFFFFF + +#endif + +#if (_WIN32_WINNT >= 0x0602) + +#define FSCTL_FILE_LEVEL_TRIM CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 130, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_CORRUPTION_HANDLING CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 152, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_OFFLOAD_READ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 153, METHOD_BUFFERED, FILE_READ_ACCESS) +#define FSCTL_OFFLOAD_WRITE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 154, METHOD_BUFFERED, FILE_WRITE_ACCESS) +#define FSCTL_SET_PURGE_FAILURE_MODE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 156, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_QUERY_FILE_LAYOUT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 157, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_IS_VOLUME_OWNED_BYCSVFS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 158, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_GET_INTEGRITY_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 159, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_SET_INTEGRITY_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 160, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA) +#define FSCTL_QUERY_FILE_REGIONS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 161, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DEDUP_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 165, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DEDUP_QUERY_FILE_HASHES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 166, METHOD_NEITHER, FILE_READ_DATA) +#define FSCTL_RKF_INTERNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 171, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_SCRUB_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 172, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_REPAIR_COPIES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 173, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA) +#define FSCTL_DISABLE_LOCAL_BUFFERING CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 174, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_CSV_MGMT_LOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 175, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_CSV_QUERY_DOWN_LEVEL_FILE_SYSTEM_CHARACTERISTICS \ + CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 176, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_ADVANCE_FILE_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 177, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_CSV_SYNC_TUNNEL_REQUEST CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 178, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_CSV_QUERY_VETO_FILE_DIRECT_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 179, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_WRITE_USN_REASON CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 180, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_CSV_CONTROL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 181, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_GET_REFS_VOLUME_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 182, METHOD_BUFFERED, FILE_ANY_ACCESS) #endif Modified: trunk/reactos/include/xdk/rtlfuncs.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/xdk/rtlfuncs.h?rev…
============================================================================== --- trunk/reactos/include/xdk/rtlfuncs.h [iso-8859-1] (original) +++ trunk/reactos/include/xdk/rtlfuncs.h [iso-8859-1] Tue Jan 7 20:17:01 2014 @@ -1104,7 +1104,7 @@ NTAPI RtlUpperString( _Inout_ PSTRING DestinationString, - _In_ const PSTRING SourceString); + _In_ const STRING *SourceString); _IRQL_requires_max_(PASSIVE_LEVEL) _When_(AllocateDestinationString, _Must_inspect_result_) @@ -1140,8 +1140,8 @@ LONG NTAPI RtlCompareString( - _In_ const PSTRING String1, - _In_ const PSTRING String2, + _In_ const STRING *String1, + _In_ const STRING *String2, _In_ BOOLEAN CaseInSensitive); NTSYSAPI @@ -1149,7 +1149,7 @@ NTAPI RtlCopyString( _Out_ PSTRING DestinationString, - _In_opt_ const PSTRING SourceString); + _In_opt_ const STRING *SourceString); _IRQL_requires_max_(PASSIVE_LEVEL) _Must_inspect_result_ @@ -1157,8 +1157,8 @@ BOOLEAN NTAPI RtlEqualString( - _In_ const PSTRING String1, - _In_ const PSTRING String2, + _In_ const STRING *String1, + _In_ const STRING *String2, _In_ BOOLEAN CaseInSensitive); _IRQL_requires_max_(PASSIVE_LEVEL) @@ -1232,6 +1232,16 @@ _Out_ _At_(DestinationString->Buffer, __drv_allocatesMem(Mem)) PUNICODE_STRING DestinationString, _In_z_ PCWSTR SourceString); + +_IRQL_requires_max_(PASSIVE_LEVEL) +_Must_inspect_result_ +NTSYSAPI +BOOLEAN +NTAPI +RtlPrefixString( + _In_ const STRING *String1, + _In_ const STRING *String2, + _In_ BOOLEAN CaseInsensitive); _IRQL_requires_max_(APC_LEVEL) NTSYSAPI
10 years, 11 months
1
0
0
0
[akhaldi] 61566: [3DTEXT] * Remove one time inclusions from the main header and put them back where they belong. * Cleanup the main header. CORE-7716
by akhaldi@svn.reactos.org
Author: akhaldi Date: Tue Jan 7 17:11:52 2014 New Revision: 61566 URL:
http://svn.reactos.org/svn/reactos?rev=61566&view=rev
Log: [3DTEXT] * Remove one time inclusions from the main header and put them back where they belong. * Cleanup the main header. CORE-7716 Modified: trunk/reactos/base/applications/screensavers/3dtext/3dtext.c trunk/reactos/base/applications/screensavers/3dtext/3dtext.h trunk/reactos/base/applications/screensavers/3dtext/settings.c Modified: trunk/reactos/base/applications/screensavers/3dtext/3dtext.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensa…
============================================================================== --- trunk/reactos/base/applications/screensavers/3dtext/3dtext.c [iso-8859-1] (original) +++ trunk/reactos/base/applications/screensavers/3dtext/3dtext.c [iso-8859-1] Tue Jan 7 17:11:52 2014 @@ -19,6 +19,15 @@ */ #include "3dtext.h" + +#include <winbase.h> +#include <wingdi.h> +#include <winuser.h> +#include <scrnsave.h> +#include <math.h> +#include <GL/glu.h> + +#include "resource.h" static HGLRC hRC; // Permanent Rendering Context static HDC hDC; // Private GDI Device Context Modified: trunk/reactos/base/applications/screensavers/3dtext/3dtext.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensa…
============================================================================== --- trunk/reactos/base/applications/screensavers/3dtext/3dtext.h [iso-8859-1] (original) +++ trunk/reactos/base/applications/screensavers/3dtext/3dtext.h [iso-8859-1] Tue Jan 7 17:11:52 2014 @@ -18,18 +18,8 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include <stdarg.h> +#include <tchar.h> #include <windef.h> -#include <winbase.h> -#include <winreg.h> -#include <wingdi.h> -#include <winuser.h> -#include <scrnsave.h> -#include <math.h> -#include <GL/glu.h> -#include <tchar.h> - -#include "resource.h" extern TCHAR m_Text[MAX_PATH]; Modified: trunk/reactos/base/applications/screensavers/3dtext/settings.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/screensa…
============================================================================== --- trunk/reactos/base/applications/screensavers/3dtext/settings.c [iso-8859-1] (original) +++ trunk/reactos/base/applications/screensavers/3dtext/settings.c [iso-8859-1] Tue Jan 7 17:11:52 2014 @@ -18,9 +18,9 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -////////////////////////////////////////////////////////////////// +#include "3dtext.h" -#include "3dtext.h" +#include <winreg.h> TCHAR m_Text[MAX_PATH] = _T("ReactOS Rocks!");
10 years, 11 months
1
0
0
0
← Newer
1
...
30
31
32
33
34
35
36
...
43
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
Results per page:
10
25
50
100
200