ReactOS.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
List overview
Download
Ros-diffs
February 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
17 participants
464 discussions
Start a n
N
ew thread
[akhaldi] 62021: [TDI] * Add header guards to the main header. * Improve header inclusions. CORE-7716
by akhaldi@svn.reactos.org
Author: akhaldi Date: Fri Feb 7 16:54:11 2014 New Revision: 62021 URL:
http://svn.reactos.org/svn/reactos?rev=62021&view=rev
Log: [TDI] * Add header guards to the main header. * Improve header inclusions. CORE-7716 Modified: trunk/reactos/drivers/network/tdi/precomp.h Modified: trunk/reactos/drivers/network/tdi/precomp.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/network/tdi/precom…
============================================================================== --- trunk/reactos/drivers/network/tdi/precomp.h [iso-8859-1] (original) +++ trunk/reactos/drivers/network/tdi/precomp.h [iso-8859-1] Fri Feb 7 16:54:11 2014 @@ -1,3 +1,7 @@ -#include <ntddk.h> +#ifndef _TDI_PCH_ +#define _TDI_PCH_ + +#include <wdm.h> #include <tdikrnl.h> -#include <tdi.h> + +#endif /* _TDI_PCH_ */
10 years, 10 months
1
0
0
0
[jgardou] 62020: [FORMATTING] - while I am at it. No code change.
by jgardou@svn.reactos.org
Author: jgardou Date: Thu Feb 6 22:13:15 2014 New Revision: 62020 URL:
http://svn.reactos.org/svn/reactos?rev=62020&view=rev
Log: [FORMATTING] - while I am at it. No code change. Modified: trunk/reactos/dll/win32/kernel32/client/file/disk.c Modified: trunk/reactos/dll/win32/kernel32/client/file/disk.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/client/…
============================================================================== --- trunk/reactos/dll/win32/kernel32/client/file/disk.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/kernel32/client/file/disk.c [iso-8859-1] Thu Feb 6 22:13:15 2014 @@ -35,32 +35,32 @@ GetLogicalDriveStringsA(IN DWORD nBufferLength, IN LPSTR lpBuffer) { - DWORD drive, count; - DWORD dwDriveMap; - LPSTR p; - - dwDriveMap = GetLogicalDrives(); - - for (drive = count = 0; drive < MAX_DOS_DRIVES; drive++) - { - if (dwDriveMap & (1<<drive)) - count++; - } - - - if ((count * 4) + 1 > nBufferLength) return ((count * 4) + 1); - - p = lpBuffer; - - for (drive = 0; drive < MAX_DOS_DRIVES; drive++) - if (dwDriveMap & (1<<drive)) - { - *p++ = 'A' + (UCHAR)drive; - *p++ = ':'; - *p++ = '\\'; - *p++ = '\0'; - } - *p = '\0'; + DWORD drive, count; + DWORD dwDriveMap; + LPSTR p; + + dwDriveMap = GetLogicalDrives(); + + for (drive = count = 0; drive < MAX_DOS_DRIVES; drive++) + { + if (dwDriveMap & (1<<drive)) + count++; + } + + + if ((count * 4) + 1 > nBufferLength) return ((count * 4) + 1); + + p = lpBuffer; + + for (drive = 0; drive < MAX_DOS_DRIVES; drive++) + if (dwDriveMap & (1<<drive)) + { + *p++ = 'A' + (UCHAR)drive; + *p++ = ':'; + *p++ = '\\'; + *p++ = '\0'; + } + *p = '\0'; return (count * 4); } @@ -74,17 +74,17 @@ GetLogicalDriveStringsW(IN DWORD nBufferLength, IN LPWSTR lpBuffer) { - DWORD drive, count; - DWORD dwDriveMap; - LPWSTR p; - - dwDriveMap = GetLogicalDrives(); - - for (drive = count = 0; drive < MAX_DOS_DRIVES; drive++) - { - if (dwDriveMap & (1<<drive)) - count++; - } + DWORD drive, count; + DWORD dwDriveMap; + LPWSTR p; + + dwDriveMap = GetLogicalDrives(); + + for (drive = count = 0; drive < MAX_DOS_DRIVES; drive++) + { + if (dwDriveMap & (1<<drive)) + count++; + } if ((count * 4) + 1 > nBufferLength) return ((count * 4) + 1); @@ -110,24 +110,24 @@ WINAPI GetLogicalDrives(VOID) { - NTSTATUS Status; - PROCESS_DEVICEMAP_INFORMATION ProcessDeviceMapInfo; - - /* Get the Device Map for this Process */ - Status = NtQueryInformationProcess(NtCurrentProcess(), - ProcessDeviceMap, - &ProcessDeviceMapInfo, - sizeof(ProcessDeviceMapInfo), - NULL); - - /* Return the Drive Map */ - if (!NT_SUCCESS(Status)) - { - BaseSetLastNTError(Status); - return 0; - } - - return ProcessDeviceMapInfo.Query.DriveMap; + NTSTATUS Status; + PROCESS_DEVICEMAP_INFORMATION ProcessDeviceMapInfo; + + /* Get the Device Map for this Process */ + Status = NtQueryInformationProcess(NtCurrentProcess(), + ProcessDeviceMap, + &ProcessDeviceMapInfo, + sizeof(ProcessDeviceMapInfo), + NULL); + + /* Return the Drive Map */ + if (!NT_SUCCESS(Status)) + { + BaseSetLastNTError(Status); + return 0; + } + + return ProcessDeviceMapInfo.Query.DriveMap; } /* @@ -141,19 +141,19 @@ OUT LPDWORD lpNumberOfFreeClusters, OUT LPDWORD lpTotalNumberOfClusters) { - PWCHAR RootPathNameW=NULL; - - if (lpRootPathName) - { - if (!(RootPathNameW = FilenameA2W(lpRootPathName, FALSE))) - return FALSE; - } - - return GetDiskFreeSpaceW (RootPathNameW, - lpSectorsPerCluster, - lpBytesPerSector, - lpNumberOfFreeClusters, - lpTotalNumberOfClusters); + PWCHAR RootPathNameW=NULL; + + if (lpRootPathName) + { + if (!(RootPathNameW = FilenameA2W(lpRootPathName, FALSE))) + return FALSE; + } + + return GetDiskFreeSpaceW (RootPathNameW, + lpSectorsPerCluster, + lpBytesPerSector, + lpNumberOfFreeClusters, + lpTotalNumberOfClusters); } /* @@ -183,11 +183,11 @@ } RootPathName[3] = 0; - hFile = InternalOpenDirW(RootPathName, FALSE); - if (INVALID_HANDLE_VALUE == hFile) - { - SetLastError(ERROR_PATH_NOT_FOUND); - return FALSE; + hFile = InternalOpenDirW(RootPathName, FALSE); + if (INVALID_HANDLE_VALUE == hFile) + { + SetLastError(ERROR_PATH_NOT_FOUND); + return FALSE; } errCode = NtQueryVolumeInformationFile(hFile, @@ -225,18 +225,18 @@ OUT PULARGE_INTEGER lpTotalNumberOfBytes, OUT PULARGE_INTEGER lpTotalNumberOfFreeBytes) { - PWCHAR DirectoryNameW=NULL; - - if (lpDirectoryName) - { - if (!(DirectoryNameW = FilenameA2W(lpDirectoryName, FALSE))) - return FALSE; - } - - return GetDiskFreeSpaceExW (DirectoryNameW , - lpFreeBytesAvailableToCaller, - lpTotalNumberOfBytes, - lpTotalNumberOfFreeBytes); + PWCHAR DirectoryNameW=NULL; + + if (lpDirectoryName) + { + if (!(DirectoryNameW = FilenameA2W(lpDirectoryName, FALSE))) + return FALSE; + } + + return GetDiskFreeSpaceExW (DirectoryNameW , + lpFreeBytesAvailableToCaller, + lpTotalNumberOfBytes, + lpTotalNumberOfFreeBytes); } /* @@ -358,15 +358,15 @@ WINAPI GetDriveTypeA(IN LPCSTR lpRootPathName) { - PWCHAR RootPathNameW; - - if (!lpRootPathName) - return GetDriveTypeW(NULL); - - if (!(RootPathNameW = FilenameA2W(lpRootPathName, FALSE))) - return DRIVE_UNKNOWN; - - return GetDriveTypeW(RootPathNameW); + PWCHAR RootPathNameW; + + if (!lpRootPathName) + return GetDriveTypeW(NULL); + + if (!(RootPathNameW = FilenameA2W(lpRootPathName, FALSE))) + return DRIVE_UNKNOWN; + + return GetDriveTypeW(RootPathNameW); } /* @@ -401,45 +401,45 @@ hFile = InternalOpenDirW(lpRootPathName, FALSE); } - if (hFile == INVALID_HANDLE_VALUE) - { - return DRIVE_NO_ROOT_DIR; /* According to WINE regression tests */ - } - - errCode = NtQueryVolumeInformationFile (hFile, - &IoStatusBlock, - &FileFsDevice, - sizeof(FILE_FS_DEVICE_INFORMATION), - FileFsDeviceInformation); - if (!NT_SUCCESS(errCode)) - { - CloseHandle(hFile); - BaseSetLastNTError (errCode); - return 0; - } - CloseHandle(hFile); - - switch (FileFsDevice.DeviceType) - { - case FILE_DEVICE_CD_ROM: - case FILE_DEVICE_CD_ROM_FILE_SYSTEM: - return DRIVE_CDROM; - case FILE_DEVICE_VIRTUAL_DISK: - return DRIVE_RAMDISK; - case FILE_DEVICE_NETWORK_FILE_SYSTEM: - return DRIVE_REMOTE; - case FILE_DEVICE_DISK: - case FILE_DEVICE_DISK_FILE_SYSTEM: - if (FileFsDevice.Characteristics & FILE_REMOTE_DEVICE) - return DRIVE_REMOTE; - if (FileFsDevice.Characteristics & FILE_REMOVABLE_MEDIA) - return DRIVE_REMOVABLE; - return DRIVE_FIXED; - } - - ERR("Returning DRIVE_UNKNOWN for device type %lu\n", FileFsDevice.DeviceType); - - return DRIVE_UNKNOWN; + if (hFile == INVALID_HANDLE_VALUE) + { + return DRIVE_NO_ROOT_DIR; /* According to WINE regression tests */ + } + + errCode = NtQueryVolumeInformationFile (hFile, + &IoStatusBlock, + &FileFsDevice, + sizeof(FILE_FS_DEVICE_INFORMATION), + FileFsDeviceInformation); + if (!NT_SUCCESS(errCode)) + { + CloseHandle(hFile); + BaseSetLastNTError (errCode); + return 0; + } + CloseHandle(hFile); + + switch (FileFsDevice.DeviceType) + { + case FILE_DEVICE_CD_ROM: + case FILE_DEVICE_CD_ROM_FILE_SYSTEM: + return DRIVE_CDROM; + case FILE_DEVICE_VIRTUAL_DISK: + return DRIVE_RAMDISK; + case FILE_DEVICE_NETWORK_FILE_SYSTEM: + return DRIVE_REMOTE; + case FILE_DEVICE_DISK: + case FILE_DEVICE_DISK_FILE_SYSTEM: + if (FileFsDevice.Characteristics & FILE_REMOTE_DEVICE) + return DRIVE_REMOTE; + if (FileFsDevice.Characteristics & FILE_REMOVABLE_MEDIA) + return DRIVE_REMOVABLE; + return DRIVE_FIXED; + } + + ERR("Returning DRIVE_UNKNOWN for device type %lu\n", FileFsDevice.DeviceType); + + return DRIVE_UNKNOWN; } /* EOF */
10 years, 10 months
1
0
0
0
[jgardou] 62019: [KERNEL32] - Use current directory for NULL parameter in GetDriveType Patch by Kenneth Deane (kde678 __AT__ gmail __DOT__ com), slightly modified by myself. Thanks!
by jgardou@svn.reactos.org
Author: jgardou Date: Thu Feb 6 22:10:44 2014 New Revision: 62019 URL:
http://svn.reactos.org/svn/reactos?rev=62019&view=rev
Log: [KERNEL32] - Use current directory for NULL parameter in GetDriveType Patch by Kenneth Deane (kde678 __AT__ gmail __DOT__ com), slightly modified by myself. Thanks! Modified: trunk/reactos/dll/win32/kernel32/client/file/disk.c Modified: trunk/reactos/dll/win32/kernel32/client/file/disk.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/client/…
============================================================================== --- trunk/reactos/dll/win32/kernel32/client/file/disk.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/kernel32/client/file/disk.c [iso-8859-1] Thu Feb 6 22:10:44 2014 @@ -360,6 +360,9 @@ { PWCHAR RootPathNameW; + if (!lpRootPathName) + return GetDriveTypeW(NULL); + if (!(RootPathNameW = FilenameA2W(lpRootPathName, FALSE))) return DRIVE_UNKNOWN; @@ -373,13 +376,31 @@ WINAPI GetDriveTypeW(IN LPCWSTR lpRootPathName) { - FILE_FS_DEVICE_INFORMATION FileFsDevice; - IO_STATUS_BLOCK IoStatusBlock; - - HANDLE hFile; - NTSTATUS errCode; - - hFile = InternalOpenDirW(lpRootPathName, FALSE); + FILE_FS_DEVICE_INFORMATION FileFsDevice; + IO_STATUS_BLOCK IoStatusBlock; + HANDLE hFile; + NTSTATUS errCode; + + if (!lpRootPathName) + { + /* If NULL is passed, use current directory path */ + DWORD BufferSize = GetCurrentDirectoryW(0, NULL); + LPWSTR CurrentDir = HeapAlloc(GetProcessHeap(), 0, BufferSize * sizeof(WCHAR)); + if (!CurrentDir) + return DRIVE_UNKNOWN; + if (!GetCurrentDirectoryW(BufferSize, CurrentDir)) + { + HeapFree(GetProcessHeap(), 0, CurrentDir); + return DRIVE_UNKNOWN; + } + hFile = InternalOpenDirW(CurrentDir, FALSE); + HeapFree(GetProcessHeap(), 0, CurrentDir); + } + else + { + hFile = InternalOpenDirW(lpRootPathName, FALSE); + } + if (hFile == INVALID_HANDLE_VALUE) { return DRIVE_NO_ROOT_DIR; /* According to WINE regression tests */
10 years, 10 months
1
0
0
0
[hbelusca] 62018: [NTVDM]: Silent few DPRINTs.
by hbelusca@svn.reactos.org
Author: hbelusca Date: Thu Feb 6 20:28:33 2014 New Revision: 62018 URL:
http://svn.reactos.org/svn/reactos?rev=62018&view=rev
Log: [NTVDM]: Silent few DPRINTs. Modified: branches/ntvdm/subsystems/ntvdm/bios/bios.c Modified: branches/ntvdm/subsystems/ntvdm/bios/bios.c URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/subsystems/ntvdm/bios/bio…
============================================================================== --- branches/ntvdm/subsystems/ntvdm/bios/bios.c [iso-8859-1] (original) +++ branches/ntvdm/subsystems/ntvdm/bios/bios.c [iso-8859-1] Thu Feb 6 20:28:33 2014 @@ -223,7 +223,7 @@ IOWriteB(PIC_MASTER_CMD, PIC_OCW3_READ_ISR /* == 0x0B */); IrqNumber = IOReadB(PIC_MASTER_CMD); - DPRINT1("Master - IrqNumber = 0x%x\n", IrqNumber); + DPRINT("Master - IrqNumber = 0x%x\n", IrqNumber); PicIRQComplete(Stack); } @@ -235,7 +235,7 @@ IOWriteB(PIC_SLAVE_CMD, PIC_OCW3_READ_ISR /* == 0x0B */); IrqNumber = IOReadB(PIC_SLAVE_CMD); - DPRINT1("Slave - IrqNumber = 0x%x\n", IrqNumber); + DPRINT("Slave - IrqNumber = 0x%x\n", IrqNumber); PicIRQComplete(Stack); }
10 years, 10 months
1
0
0
0
[tkreuzer] 62017: Fix GCC build
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Thu Feb 6 19:33:01 2014 New Revision: 62017 URL:
http://svn.reactos.org/svn/reactos?rev=62017&view=rev
Log: Fix GCC build Modified: trunk/reactos/ntoskrnl/se/audit.c Modified: trunk/reactos/ntoskrnl/se/audit.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/se/audit.c?rev=62…
============================================================================== --- trunk/reactos/ntoskrnl/se/audit.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/se/audit.c [iso-8859-1] Thu Feb 6 19:33:01 2014 @@ -310,6 +310,8 @@ AccessStatusList[i] = STATUS_SUCCESS; } + *GenerateOnClose = FALSE; + return STATUS_SUCCESS; } @@ -341,7 +343,7 @@ PTOKEN SubjectContextToken, ClientToken; BOOLEAN AllocatedResultLists; BOOLEAN HaveAuditPrivilege; - PISECURITY_DESCRIPTOR CapturedSecurityDescriptor; + PSECURITY_DESCRIPTOR CapturedSecurityDescriptor; UNICODE_STRING CapturedSubsystemName, CapturedObjectTypeName, CapturedObjectName; ACCESS_MASK GrantedAccess, *SafeGrantedAccessList; NTSTATUS AccessStatus, *SafeAccessStatusList; @@ -606,6 +608,7 @@ Status = _SEH2_GetExceptionCode(); DPRINT1("Exception while copying back data: 0x%lx\n", Status); } + _SEH2_END; Cleanup:
10 years, 10 months
1
0
0
0
[tkreuzer] 62016: [NTOSKRNL] Implement SepAccessCheckAndAuditAlarm, which now does proper argument capturing and forwards those to SepAccessCheckAndAuditAlarmWorker, which for now only grants acces...
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Thu Feb 6 19:26:05 2014 New Revision: 62016 URL:
http://svn.reactos.org/svn/reactos?rev=62016&view=rev
Log: [NTOSKRNL] Implement SepAccessCheckAndAuditAlarm, which now does proper argument capturing and forwards those to SepAccessCheckAndAuditAlarmWorker, which for now only grants access without checking. Modified: trunk/reactos/ntoskrnl/se/audit.c Modified: trunk/reactos/ntoskrnl/se/audit.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/se/audit.c?rev=62…
============================================================================== --- trunk/reactos/ntoskrnl/se/audit.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/se/audit.c [iso-8859-1] Thu Feb 6 19:26:05 2014 @@ -207,13 +207,119 @@ UNIMPLEMENTED; } +static +NTSTATUS +SeCaptureObjectTypeList( + _In_reads_opt_(ObjectTypeListLength) POBJECT_TYPE_LIST ObjectTypeList, + _In_ ULONG ObjectTypeListLength, + _In_ KPROCESSOR_MODE PreviousMode, + _Out_ POBJECT_TYPE_LIST *CapturedObjectTypeList) +{ + SIZE_T Size; + + if (PreviousMode == KernelMode) + { + return STATUS_NOT_IMPLEMENTED; + } + + if (ObjectTypeListLength == 0) + { + *CapturedObjectTypeList = NULL; + return STATUS_SUCCESS; + } + + if (ObjectTypeList == NULL) + { + return STATUS_INVALID_PARAMETER; + } + + /* Calculate the list size and check for integer overflow */ + Size = ObjectTypeListLength * sizeof(OBJECT_TYPE_LIST); + if (Size == 0) + { + return STATUS_INVALID_PARAMETER; + } + + /* Allocate a new list */ + *CapturedObjectTypeList = ExAllocatePoolWithTag(PagedPool, Size, TAG_SEPA); + if (*CapturedObjectTypeList == NULL) + { + return STATUS_INSUFFICIENT_RESOURCES; + } + + _SEH2_TRY + { + ProbeForRead(ObjectTypeList, Size, sizeof(ULONG)); + RtlCopyMemory(*CapturedObjectTypeList, ObjectTypeList, Size); + } + _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) + { + ExFreePoolWithTag(*CapturedObjectTypeList, TAG_SEPA); + *CapturedObjectTypeList = NULL; + return _SEH2_GetExceptionCode(); + } + _SEH2_END; + + return STATUS_SUCCESS; +} + +static +VOID +SeReleaseObjectTypeList( + _In_ _Post_invalid_ POBJECT_TYPE_LIST CapturedObjectTypeList, + _In_ KPROCESSOR_MODE PreviousMode) +{ + if ((PreviousMode != KernelMode) && (CapturedObjectTypeList != NULL)) + ExFreePoolWithTag(CapturedObjectTypeList, TAG_SEPA); +} + +_Must_inspect_result_ +static +NTSTATUS +SepAccessCheckAndAuditAlarmWorker( + _In_ PUNICODE_STRING SubsystemName, + _In_opt_ PVOID HandleId, + _In_ PSECURITY_SUBJECT_CONTEXT SubjectContext, + _In_ PUNICODE_STRING ObjectTypeName, + _In_ PUNICODE_STRING ObjectName, + _In_ PSECURITY_DESCRIPTOR SecurityDescriptor, + _In_opt_ PSID PrincipalSelfSid, + _In_ ACCESS_MASK DesiredAccess, + _In_ AUDIT_EVENT_TYPE AuditType, + _In_ BOOLEAN HaveAuditPrivilege, + _In_reads_opt_(ObjectTypeListLength) POBJECT_TYPE_LIST ObjectTypeList, + _In_ ULONG ObjectTypeListLength, + _In_ PGENERIC_MAPPING GenericMapping, + _Out_writes_(ObjectTypeListLength) PACCESS_MASK GrantedAccessList, + _Out_writes_(ObjectTypeListLength) PNTSTATUS AccessStatusList, + _Out_ PBOOLEAN GenerateOnClose, + _In_ BOOLEAN UseResultList) +{ + ULONG ResultListLength, i; + + /* Get the length of the result list */ + ResultListLength = UseResultList ? ObjectTypeListLength : 1; + + /// FIXME: we should do some real work here... + UNIMPLEMENTED; + + /// HACK: we just pretend all access is granted! + for (i = 0; i < ResultListLength; i++) + { + GrantedAccessList[i] = DesiredAccess; + AccessStatusList[i] = STATUS_SUCCESS; + } + + return STATUS_SUCCESS; +} + _Must_inspect_result_ NTSTATUS NTAPI SepAccessCheckAndAuditAlarm( _In_ PUNICODE_STRING SubsystemName, _In_opt_ PVOID HandleId, - _In_ PHANDLE ClientToken, + _In_ PHANDLE ClientTokenHandle, _In_ PUNICODE_STRING ObjectTypeName, _In_ PUNICODE_STRING ObjectName, _In_ PSECURITY_DESCRIPTOR SecurityDescriptor, @@ -232,13 +338,32 @@ SECURITY_SUBJECT_CONTEXT SubjectContext; ULONG ResultListLength; GENERIC_MAPPING LocalGenericMapping; + PTOKEN SubjectContextToken, ClientToken; + BOOLEAN AllocatedResultLists; + BOOLEAN HaveAuditPrivilege; + PISECURITY_DESCRIPTOR CapturedSecurityDescriptor; + UNICODE_STRING CapturedSubsystemName, CapturedObjectTypeName, CapturedObjectName; + ACCESS_MASK GrantedAccess, *SafeGrantedAccessList; + NTSTATUS AccessStatus, *SafeAccessStatusList; + PSID CapturedPrincipalSelfSid; + POBJECT_TYPE_LIST CapturedObjectTypeList; + ULONG i; + BOOLEAN LocalGenerateOnClose; NTSTATUS Status; PAGED_CODE(); - DBG_UNREFERENCED_LOCAL_VARIABLE(LocalGenericMapping); - /* Only user mode is supported! */ ASSERT(ExGetPreviousMode() != KernelMode); + + /* Start clean */ + AllocatedResultLists = FALSE; + ClientToken = NULL; + CapturedSecurityDescriptor = NULL; + CapturedSubsystemName.Buffer = NULL; + CapturedObjectTypeName.Buffer = NULL; + CapturedObjectName.Buffer = NULL; + CapturedPrincipalSelfSid = NULL; + CapturedObjectTypeList = NULL; /* Validate AuditType */ if ((AuditType != AuditEventObjectAccess) && @@ -252,12 +377,13 @@ SeCaptureSubjectContext(&SubjectContext); /* Did the caller pass a token handle? */ - if (ClientToken == NULL) + if (ClientTokenHandle == NULL) { /* Check if we have a token in the subject context */ if (SubjectContext.ClientToken == NULL) { Status = STATUS_NO_IMPERSONATION_TOKEN; + DPRINT1("No token\n"); goto Cleanup; } @@ -265,6 +391,8 @@ if (SubjectContext.ImpersonationLevel < SecurityIdentification) { Status = STATUS_BAD_IMPERSONATION_LEVEL; + DPRINT1("Invalid impersonation level 0x%lx\n", + SubjectContext.ImpersonationLevel); goto Cleanup; } } @@ -277,13 +405,30 @@ if ((ResultListLength == 0) || (ResultListLength > 0x1000)) { Status = STATUS_INVALID_PARAMETER; + DPRINT1("Invalud ResultListLength: 0x%lx\n", ResultListLength); goto Cleanup; } + + /* Allocate a safe buffer from paged pool */ + SafeGrantedAccessList = ExAllocatePoolWithTag(PagedPool, + 2 * ResultListLength * sizeof(ULONG), + TAG_SEPA); + if (SafeGrantedAccessList == NULL) + { + Status = STATUS_INSUFFICIENT_RESOURCES; + DPRINT1("Failed to allocate access lists\n"); + goto Cleanup; + } + + SafeAccessStatusList = (PNTSTATUS)&SafeGrantedAccessList[ResultListLength]; + AllocatedResultLists = TRUE; } else { /* List length is 1 */ ResultListLength = 1; + SafeGrantedAccessList = &GrantedAccess; + SafeAccessStatusList = &AccessStatus; } _SEH2_TRY @@ -303,17 +448,193 @@ _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) { Status = _SEH2_GetExceptionCode(); + DPRINT1("Exception while probing parameters: 0x%lx\n", Status); goto Cleanup; } _SEH2_END; - - UNIMPLEMENTED; - - /* For now pretend everything else is ok */ - Status = STATUS_SUCCESS; + /* Do we have a client token? */ + if (ClientTokenHandle != NULL) + { + /* Reference the client token */ + Status = ObReferenceObjectByHandle(*ClientTokenHandle, + TOKEN_QUERY, + SeTokenObjectType, + UserMode, + (PVOID*)&ClientToken, + NULL); + if (!NT_SUCCESS(Status)) + { + DPRINT1("Failed to reference token handle %p: %lx\n", + *ClientTokenHandle, Status); + goto Cleanup; + } + + SubjectContextToken = SubjectContext.ClientToken; + SubjectContext.ClientToken = ClientToken; + } + + /* Check for audit privilege */ + HaveAuditPrivilege = SeSinglePrivilegeCheck(SeAuditPrivilege, UserMode); + if (!HaveAuditPrivilege && !(Flags & AUDIT_ALLOW_NO_PRIVILEGE)) + { + DPRINT1("Caller does not have SeAuditPrivilege\n"); + Status = STATUS_PRIVILEGE_NOT_HELD; + goto Cleanup; + } + + /* Generic access must already be mapped to non-generic access types! */ + if (DesiredAccess & (GENERIC_READ | GENERIC_WRITE | GENERIC_EXECUTE | GENERIC_ALL)) + { + DPRINT1("Generic access rights requested: 0x%lx\n", DesiredAccess); + Status = STATUS_GENERIC_NOT_MAPPED; + goto Cleanup; + } + + /* Capture the security descriptor */ + Status = SeCaptureSecurityDescriptor(SecurityDescriptor, + UserMode, + PagedPool, + FALSE, + &CapturedSecurityDescriptor); + if (!NT_SUCCESS(Status)) + { + DPRINT1("Failed to capture security descriptor!\n"); + goto Cleanup; + } + + /* Validate the Security descriptor */ + if ((SepGetOwnerFromDescriptor(CapturedSecurityDescriptor) == NULL) || + (SepGetGroupFromDescriptor(CapturedSecurityDescriptor) == NULL)) + { + Status = STATUS_INVALID_SECURITY_DESCR; + DPRINT1("Invalid security descriptor\n"); + goto Cleanup; + } + + /* Probe and capture the subsystem name */ + Status = ProbeAndCaptureUnicodeString(&CapturedSubsystemName, + UserMode, + SubsystemName); + if (!NT_SUCCESS(Status)) + { + DPRINT1("Failed to capture subsystem name!\n"); + goto Cleanup; + } + + /* Probe and capture the object type name */ + Status = ProbeAndCaptureUnicodeString(&CapturedObjectTypeName, + UserMode, + ObjectTypeName); + if (!NT_SUCCESS(Status)) + { + DPRINT1("Failed to capture object type name!\n"); + goto Cleanup; + } + + /* Probe and capture the object name */ + Status = ProbeAndCaptureUnicodeString(&CapturedObjectName, + UserMode, + ObjectName); + if (!NT_SUCCESS(Status)) + { + DPRINT1("Failed to capture object name!\n"); + goto Cleanup; + } + + /* Check if we have a PrincipalSelfSid */ + if (PrincipalSelfSid != NULL) + { + /* Capture it */ + Status = SepCaptureSid(PrincipalSelfSid, + UserMode, + PagedPool, + FALSE, + &CapturedPrincipalSelfSid); + if (!NT_SUCCESS(Status)) + { + DPRINT1("Failed to capture PrincipalSelfSid!\n"); + goto Cleanup; + } + } + + /* Capture the object type list */ + Status = SeCaptureObjectTypeList(ObjectTypeList, + ObjectTypeListLength, + UserMode, + &CapturedObjectTypeList); + if (!NT_SUCCESS(Status)) + { + DPRINT1("Failed to capture object type list!\n"); + goto Cleanup; + } + + /* Call the worker routine with the captured buffers */ + SepAccessCheckAndAuditAlarmWorker(&CapturedSubsystemName, + HandleId, + &SubjectContext, + &CapturedObjectTypeName, + &CapturedObjectName, + CapturedSecurityDescriptor, + CapturedPrincipalSelfSid, + DesiredAccess, + AuditType, + HaveAuditPrivilege, + CapturedObjectTypeList, + ObjectTypeListLength, + &LocalGenericMapping, + SafeGrantedAccessList, + SafeAccessStatusList, + &LocalGenerateOnClose, + UseResultList); + + /* Enter SEH to copy the data back to user mode */ + _SEH2_TRY + { + /* Loop all result entries (only 1 when no list was requested) */ + NT_ASSERT(UseResultList || (ResultListLength == 1)); + for (i = 0; i < ResultListLength; i++) + { + AccessStatusList[i] = SafeAccessStatusList[i]; + GrantedAccessList[i] = SafeGrantedAccessList[i]; + } + + *GenerateOnClose = LocalGenerateOnClose; + } + _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) + { + Status = _SEH2_GetExceptionCode(); + DPRINT1("Exception while copying back data: 0x%lx\n", Status); + } Cleanup: + + if (CapturedObjectTypeList != NULL) + SeReleaseObjectTypeList(CapturedObjectTypeList, UserMode); + + if (CapturedPrincipalSelfSid != NULL) + SepReleaseSid(CapturedPrincipalSelfSid, UserMode, FALSE); + + if (CapturedObjectName.Buffer != NULL) + ReleaseCapturedUnicodeString(&CapturedObjectName, UserMode); + + if (CapturedObjectTypeName.Buffer != NULL) + ReleaseCapturedUnicodeString(&CapturedObjectTypeName, UserMode); + + if (CapturedSubsystemName.Buffer != NULL) + ReleaseCapturedUnicodeString(&CapturedSubsystemName, UserMode); + + if (CapturedSecurityDescriptor != NULL) + SeReleaseSecurityDescriptor(CapturedSecurityDescriptor, UserMode, FALSE); + + if (ClientToken != NULL) + { + ObDereferenceObject(ClientToken); + SubjectContext.ClientToken = SubjectContextToken; + } + + if (AllocatedResultLists) + ExFreePoolWithTag(SafeGrantedAccessList, TAG_SEPA); /* Release the security subject context */ SeReleaseSubjectContext(&SubjectContext); @@ -620,6 +941,9 @@ PreviousMode = ExGetPreviousMode(); ASSERT(PreviousMode != KernelMode); + CapturedSubsystemName.Buffer = NULL; + CapturedServiceName.Buffer = NULL; + /* Reference the client token */ Status = ObReferenceObjectByHandle(ClientToken, TOKEN_QUERY, @@ -724,8 +1048,8 @@ /* Call the internal function */ SepAdtPrivilegedServiceAuditAlarm(&SubjectContext, - &CapturedSubsystemName, - &CapturedServiceName, + SubsystemName ? &CapturedSubsystemName : NULL, + ServiceName ? &CapturedServiceName : NULL, Token, SubjectContext.PrimaryToken, CapturedPrivileges, @@ -738,9 +1062,9 @@ Cleanup: /* Cleanup resources */ - if (SubsystemName != NULL) + if (CapturedSubsystemName.Buffer != NULL) ReleaseCapturedUnicodeString(&CapturedSubsystemName, PreviousMode); - if (ServiceName != NULL) + if (CapturedServiceName.Buffer != NULL) ReleaseCapturedUnicodeString(&CapturedServiceName, PreviousMode); if (CapturedPrivileges != NULL) ExFreePoolWithTag(CapturedPrivileges, 0);
10 years, 10 months
1
0
0
0
[akhaldi] 62015: [NPFS] * Add header guards to the main header. * Improve header inclusions. CORE-7716
by akhaldi@svn.reactos.org
Author: akhaldi Date: Thu Feb 6 19:08:00 2014 New Revision: 62015 URL:
http://svn.reactos.org/svn/reactos?rev=62015&view=rev
Log: [NPFS] * Add header guards to the main header. * Improve header inclusions. CORE-7716 Modified: trunk/reactos/drivers/filesystems/npfs/npfs.h Modified: trunk/reactos/drivers/filesystems/npfs/npfs.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/npfs/n…
============================================================================== --- trunk/reactos/drivers/filesystems/npfs/npfs.h [iso-8859-1] (original) +++ trunk/reactos/drivers/filesystems/npfs/npfs.h [iso-8859-1] Thu Feb 6 19:08:00 2014 @@ -6,13 +6,14 @@ * PROGRAMMERS: ReactOS Portable Systems Group */ +#ifndef _NPFS_PCH_ +#define _NPFS_PCH_ + /* INCLUDES *******************************************************************/ -// -// System Headers -// +/* System Headers */ #include <ntifs.h> -#include <ntndk.h> +#include <ndk/obfuncs.h> #include <pseh/pseh2.h> //#define UNIMPLEMENTED //#define DPRINT1 DbgPrint @@ -21,9 +22,7 @@ #include <debug.h> #define TRACE(...) /* DPRINT1("%s: ", __FUNCTION__); DbgPrint(__VA_ARGS__) */ -// -// Allow Microsoft Extensions -// +/* Allow Microsoft Extensions */ #ifdef _MSC_VER #pragma warning(disable:4201) #pragma warning(disable:4214) @@ -32,7 +31,6 @@ #define MIN_INDEXED_LENGTH 5 #define MAX_INDEXED_LENGTH 9 - /* TYPEDEFS & DEFINES *********************************************************/ @@ -110,9 +108,7 @@ (NPFS_BUGCHECK_FILE_ID << 16) | __LINE__, \ (p1), (p2), (p3)) -// -// Node Type Codes for NPFS -// +/* Node Type Codes for NPFS */ #define NPFS_NTC_VCB 1 #define NPFS_NTC_ROOT_DCB 2 #define NPFS_NTC_FCB 4 @@ -121,9 +117,7 @@ #define NPFS_NTC_ROOT_DCB_CCB 8 typedef USHORT NODE_TYPE_CODE, *PNODE_TYPE_CODE; -// -// Data Queue States -// +/* Data Queue States */ typedef enum _NP_DATA_QUEUE_STATE { ReadEntries = 0, @@ -131,18 +125,14 @@ Empty = 2 } NP_DATA_QUEUE_STATE; -// -// Data Queue Entry Types -// +/* Data Queue Entry Types */ typedef enum _NP_DATA_QUEUE_ENTRY_TYPE { Buffered = 0, Unbuffered } NP_DATA_QUEUE_ENTRY_TYPE; -// -// An Input or Output Data Queue. Each CCB has two of these. -// +/* An Input or Output Data Queue. Each CCB has two of these. */ typedef struct _NP_DATA_QUEUE { LIST_ENTRY Queue; @@ -154,9 +144,7 @@ ULONG Quota; } NP_DATA_QUEUE, *PNP_DATA_QUEUE; -// -// The Entries that go into the Queue -// +/* The Entries that go into the Queue */ typedef struct _NP_DATA_QUEUE_ENTRY { LIST_ENTRY QueueEntry; @@ -167,18 +155,14 @@ ULONG DataSize; } NP_DATA_QUEUE_ENTRY, *PNP_DATA_QUEUE_ENTRY; -// -// A Wait Queue. Only the VCB has one of these. -// +/* A Wait Queue. Only the VCB has one of these. */ typedef struct _NP_WAIT_QUEUE { LIST_ENTRY WaitList; KSPIN_LOCK WaitLock; } NP_WAIT_QUEUE, *PNP_WAIT_QUEUE; -// -// The Entries in the Queue above, one for each Waiter. -// +/* The Entries in the Queue above, one for each Waiter. */ typedef struct _NP_WAIT_QUEUE_ENTRY { PIRP Irp; @@ -189,17 +173,13 @@ PFILE_OBJECT FileObject; } NP_WAIT_QUEUE_ENTRY, *PNP_WAIT_QUEUE_ENTRY; -// -// The event buffer in the NonPaged CCB -// +/* The event buffer in the NonPaged CCB */ typedef struct _NP_EVENT_BUFFER { PKEVENT Event; } NP_EVENT_BUFFER, *PNP_EVENT_BUFFER; -// -// The CCB for the Root DCB -// +/* The CCB for the Root DCB */ typedef struct _NP_ROOT_DCB_CCB { NODE_TYPE_CODE NodeType; @@ -207,9 +187,7 @@ ULONG Unknown2; } NP_ROOT_DCB_CCB, *PNP_ROOT_DCB_FCB; -// -// The header that both FCB and DCB share -// +/* The header that both FCB and DCB share */ typedef struct _NP_CB_HEADER { NODE_TYPE_CODE NodeType; @@ -220,9 +198,7 @@ PSECURITY_DESCRIPTOR SecurityDescriptor; } NP_CB_HEADER, *PNP_CB_HEADER; -// -// The footer that both FCB and DCB share -// +/* The footer that both FCB and DCB share */ typedef struct _NP_CB_FOOTER { UNICODE_STRING FullName; @@ -230,19 +206,13 @@ UNICODE_PREFIX_TABLE_ENTRY PrefixTableEntry; } NP_CB_FOOTER; -// -// A Directory Control Block (DCB) -// +/* A Directory Control Block (DCB) */ typedef struct _NP_DCB { - // - // Common Header - // + /* Common Header */ NP_CB_HEADER; - // - // DCB-specific data - // + /* DCB-specific data */ LIST_ENTRY NotifyList; LIST_ENTRY NotifyList2; LIST_ENTRY FcbList; @@ -250,25 +220,17 @@ ULONG Pad; #endif - // - // Common Footer - // + /* Common Footer */ NP_CB_FOOTER; } NP_DCB, *PNP_DCB; -// -// A File Control BLock (FCB) -// +/* A File Control BLock (FCB) */ typedef struct _NP_FCB { - // - // Common Header - // + /* Common Header */ NP_CB_HEADER; - // - // FCB-specific fields - // + /* FCB-specific fields */ ULONG MaximumInstances; USHORT NamedPipeConfiguration; USHORT NamedPipeType; @@ -278,17 +240,13 @@ PVOID Pad[2]; #endif - // - // Common Footer - // + /* Common Footer */ NP_CB_FOOTER; } NP_FCB, *PNP_FCB; C_ASSERT(FIELD_OFFSET(NP_FCB, PrefixTableEntry) == FIELD_OFFSET(NP_DCB, PrefixTableEntry)); -// -// The nonpaged portion of the CCB -// +/* The nonpaged portion of the CCB */ typedef struct _NP_NONPAGED_CCB { NODE_TYPE_CODE NodeType; @@ -296,9 +254,7 @@ ERESOURCE Lock; } NP_NONPAGED_CCB, *PNP_NONPAGED_CCB; -// -// A Client Control Block (CCB) -// +/* A Client Control Block (CCB) */ typedef struct _NP_CCB { NODE_TYPE_CODE NodeType; @@ -317,9 +273,7 @@ LIST_ENTRY IrpList; } NP_CCB, *PNP_CCB; -// -// A Volume Control Block (VCB) -// +/* A Volume Control Block (VCB) */ typedef struct _NP_VCB { NODE_TYPE_CODE NodeType; @@ -333,9 +287,7 @@ extern PNP_VCB NpVcb; -// -// Defines an alias -// +/* Defines an alias */ typedef struct _NPFS_ALIAS { struct _NPFS_ALIAS *Next; @@ -343,9 +295,7 @@ UNICODE_STRING Name; } NPFS_ALIAS, *PNPFS_ALIAS; -// -// Private structure used to enumerate the alias values -// +/* Private structure used to enumerate the alias values */ typedef struct _NPFS_QUERY_VALUE_CONTEXT { BOOLEAN SizeOnly; @@ -360,9 +310,7 @@ extern PNPFS_ALIAS NpAliasList; extern PNPFS_ALIAS NpAliasListByLength[MAX_INDEXED_LENGTH + 1 - MIN_INDEXED_LENGTH]; -// -// This structure is actually a user-mode structure and should go into a share header -// +/* This structure is actually a user-mode structure and should go into a share header */ typedef struct _NP_CLIENT_PROCESS { PVOID Unknown; @@ -371,12 +319,10 @@ WCHAR Buffer[17]; } NP_CLIENT_PROCESS, *PNP_CLIENT_PROCESS; - /* FUNCTIONS ******************************************************************/ -// -// Functions to lock/unlock the global VCB lock -// +/* Functions to lock/unlock the global VCB lock */ + FORCEINLINE VOID NpAcquireSharedVcb(VOID) @@ -400,8 +346,6 @@ /* Release the lock */ ExReleaseResourceLite(&NpVcb->Lock); } - - // // Function to process deferred IRPs outside the VCB lock but still within the @@ -444,7 +388,6 @@ VOID NTAPI NpInitializeWaitQueue(IN PNP_WAIT_QUEUE WaitQueue); - NTSTATUS NTAPI @@ -541,7 +484,6 @@ NpFsdClose(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); - NTSTATUS NTAPI NpFsdCleanup(IN PDEVICE_OBJECT DeviceObject, @@ -563,7 +505,6 @@ NpSetListeningPipeState(IN PNP_CCB Ccb, IN PIRP Irp, IN PLIST_ENTRY List); - NTSTATUS NTAPI @@ -751,4 +692,4 @@ NpFsdQueryVolumeInformation(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); -/* EOF */ +#endif /* _NPFS_PCH_ */
10 years, 10 months
1
0
0
0
[akhaldi] 62014: [MUP] * Add header guards to the main header. * Improve header inclusions. CORE-7716
by akhaldi@svn.reactos.org
Author: akhaldi Date: Thu Feb 6 18:05:58 2014 New Revision: 62014 URL:
http://svn.reactos.org/svn/reactos?rev=62014&view=rev
Log: [MUP] * Add header guards to the main header. * Improve header inclusions. CORE-7716 Modified: trunk/reactos/drivers/filesystems/mup/mup.h Modified: trunk/reactos/drivers/filesystems/mup/mup.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/mup/mu…
============================================================================== --- trunk/reactos/drivers/filesystems/mup/mup.h [iso-8859-1] (original) +++ trunk/reactos/drivers/filesystems/mup/mup.h [iso-8859-1] Thu Feb 6 18:05:58 2014 @@ -1,5 +1,7 @@ +#ifndef _MUP_PCH_ +#define _MUP_PCH_ -#include <ntddk.h> +#include <wdm.h> #define ROUND_UP(N, S) ((((N) + (S) - 1) / (S)) * (S)) @@ -19,3 +21,5 @@ NTSTATUS NTAPI DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath); + +#endif /* _MUP_PCH_ */
10 years, 10 months
1
0
0
0
[akhaldi] 62013: [NDISUIO] * Improve header inclusions. CORE-7716
by akhaldi@svn.reactos.org
Author: akhaldi Date: Thu Feb 6 17:19:30 2014 New Revision: 62013 URL:
http://svn.reactos.org/svn/reactos?rev=62013&view=rev
Log: [NDISUIO] * Improve header inclusions. CORE-7716 Modified: trunk/reactos/drivers/network/ndisuio/ndisuio.h Modified: trunk/reactos/drivers/network/ndisuio/ndisuio.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/network/ndisuio/nd…
============================================================================== --- trunk/reactos/drivers/network/ndisuio/ndisuio.h [iso-8859-1] (original) +++ trunk/reactos/drivers/network/ndisuio/ndisuio.h [iso-8859-1] Thu Feb 6 17:19:30 2014 @@ -4,10 +4,10 @@ * FILE: ndisuio.h * PURPOSE: NDISUIO definitions */ + #ifndef __NDISUIO_H #define __NDISUIO_H -#include <wdm.h> #include <ndis.h> #include <nuiouser.h> @@ -207,4 +207,5 @@ NTAPI NduDispatchWrite(PDEVICE_OBJECT DeviceObject, PIRP Irp); + #endif /* __NDISUIO_H */
10 years, 10 months
1
0
0
0
[bfreisen] 62012: [MSPAINT] Due to the previous fix changing the selection opacity now behaved oddly when there was no selection
by bfreisen@svn.reactos.org
Author: bfreisen Date: Thu Feb 6 14:08:59 2014 New Revision: 62012 URL:
http://svn.reactos.org/svn/reactos?rev=62012&view=rev
Log: [MSPAINT] Due to the previous fix changing the selection opacity now behaved oddly when there was no selection Modified: trunk/reactos/base/applications/mspaint/toolsettings.c Modified: trunk/reactos/base/applications/mspaint/toolsettings.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mspaint/…
============================================================================== --- trunk/reactos/base/applications/mspaint/toolsettings.c [iso-8859-1] (original) +++ trunk/reactos/base/applications/mspaint/toolsettings.c [iso-8859-1] Thu Feb 6 14:08:59 2014 @@ -184,10 +184,13 @@ transpBg = (y - 2) / 31; InvalidateRect(hwnd, NULL, TRUE); - /* force refresh of selection contents */ - SendMessage(hSelection, WM_LBUTTONDOWN, 0, MAKELPARAM(0, 0)); - SendMessage(hSelection, WM_MOUSEMOVE, 0, MAKELPARAM(0, 0)); - SendMessage(hSelection, WM_LBUTTONUP, 0, MAKELPARAM(0, 0)); + if (IsWindowVisible(hSelection)) + { + /* force refresh of selection contents */ + SendMessage(hSelection, WM_LBUTTONDOWN, 0, MAKELPARAM(0, 0)); + SendMessage(hSelection, WM_MOUSEMOVE, 0, MAKELPARAM(0, 0)); + SendMessage(hSelection, WM_LBUTTONUP, 0, MAKELPARAM(0, 0)); + } } break; case TOOL_RUBBER:
10 years, 10 months
1
0
0
0
← Newer
1
...
32
33
34
35
36
37
38
...
47
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Results per page:
10
25
50
100
200