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
2025
May
April
March
February
January
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
March 2010
----- 2025 -----
May 2025
April 2025
March 2025
February 2025
January 2025
----- 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
19 participants
896 discussions
Start a n
N
ew thread
[akhaldi] 46409: [DDK] - Move cfg.h and cfgmgr32.h to PSDK, introduce pragma once, apply consistent formatting, add missing definitions and improve several existing ones. [UNIATA] - DDKAPI -> NTAPI.
by akhaldi@svn.reactos.org
Author: akhaldi Date: Wed Mar 24 23:56:18 2010 New Revision: 46409 URL:
http://svn.reactos.org/svn/reactos?rev=46409&view=rev
Log: [DDK] - Move cfg.h and cfgmgr32.h to PSDK, introduce pragma once, apply consistent formatting, add missing definitions and improve several existing ones. [UNIATA] - DDKAPI -> NTAPI. Added: branches/header-work/include/psdk/cfg.h - copied, changed from r46395, branches/header-work/include/ddk/cfg.h branches/header-work/include/psdk/cfgmgr32.h - copied, changed from r46395, branches/header-work/include/ddk/cfgmgr32.h Removed: branches/header-work/include/ddk/cfg.h branches/header-work/include/ddk/cfgmgr32.h Modified: branches/header-work/drivers/storage/ide/uniata/id_ata.cpp [This mail would be too long, it was shortened to contain the URLs only.] Modified: branches/header-work/drivers/storage/ide/uniata/id_ata.cpp URL:
http://svn.reactos.org/svn/reactos/branches/header-work/drivers/storage/ide…
Removed: branches/header-work/include/ddk/cfg.h URL:
http://svn.reactos.org/svn/reactos/branches/header-work/include/ddk/cfg.h?r…
Removed: branches/header-work/include/ddk/cfgmgr32.h URL:
http://svn.reactos.org/svn/reactos/branches/header-work/include/ddk/cfgmgr3…
Copied: branches/header-work/include/psdk/cfg.h (from r46395, branches/header-work/include/ddk/cfg.h) URL:
http://svn.reactos.org/svn/reactos/branches/header-work/include/psdk/cfg.h?…
Copied: branches/header-work/include/psdk/cfgmgr32.h (from r46395, branches/header-work/include/ddk/cfgmgr32.h) URL:
http://svn.reactos.org/svn/reactos/branches/header-work/include/psdk/cfgmgr…
15 years, 1 month
1
0
0
0
[cgutman] 46408: [DDK] - Fix a signedness warning
by cgutman@svn.reactos.org
Author: cgutman Date: Wed Mar 24 23:56:16 2010 New Revision: 46408 URL:
http://svn.reactos.org/svn/reactos?rev=46408&view=rev
Log: [DDK] - Fix a signedness warning Modified: trunk/reactos/include/ddk/acpiioct.h Modified: trunk/reactos/include/ddk/acpiioct.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ddk/acpiioct.h?rev…
============================================================================== --- trunk/reactos/include/ddk/acpiioct.h [iso-8859-1] (original) +++ trunk/reactos/include/ddk/acpiioct.h [iso-8859-1] Wed Mar 24 23:56:16 2010 @@ -159,7 +159,7 @@ #define ACPI_METHOD_SET_ARGUMENT_STRING( Argument, StrData ) \ { Argument->Type = ACPI_METHOD_ARGUMENT_STRING; \ - Argument->DataLength = strlen((PUCHAR)StrData) + sizeof(UCHAR); \ + Argument->DataLength = strlen((PCHAR)StrData) + sizeof(UCHAR); \ RtlCopyMemory(&Argument->Data[0],(PUCHAR)StrData,Argument->DataLength); } #define ACPI_METHOD_SET_ARGUMENT_BUFFER( Argument, BuffData, BuffLength ) \
15 years, 1 month
1
0
0
0
[tkreuzer] 46407: [ACLEDIT] remove $Id fields
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Wed Mar 24 23:56:12 2010 New Revision: 46407 URL:
http://svn.reactos.org/svn/reactos?rev=46407&view=rev
Log: [ACLEDIT] remove $Id fields Modified: trunk/reactos/dll/win32/acledit/acledit.c trunk/reactos/dll/win32/acledit/stubs.c Modified: trunk/reactos/dll/win32/acledit/acledit.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/acledit/acledit.…
============================================================================== --- trunk/reactos/dll/win32/acledit/acledit.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/acledit/acledit.c [iso-8859-1] Wed Mar 24 23:56:12 2010 @@ -16,8 +16,7 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -/* $Id: acledit.c 35011 2008-08-01 16:29:40Z sginsberg $ - * +/* * PROJECT: ReactOS Access Control List Editor * FILE: lib/acledit/acledit.c * PURPOSE: Access Control List Editor Modified: trunk/reactos/dll/win32/acledit/stubs.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/acledit/stubs.c?…
============================================================================== --- trunk/reactos/dll/win32/acledit/stubs.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/acledit/stubs.c [iso-8859-1] Wed Mar 24 23:56:12 2010 @@ -1,5 +1,4 @@ -/* $Id: stubs.c 35011 2008-08-01 16:29:40Z sginsberg $ - * +/* * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS Access Control List Editor * FILE: lib/acledit/stubs.c
15 years, 1 month
1
0
0
0
[tkreuzer] 46406: [NTOS] - remove KeGetCurrentThread inline function, it's already in the wdm.h, reenable the exported function - Add InitializeSListHead export - Use RtlInitializeSListHead for InititializeSListHead - Add hacks for WDK compilation - Add ValidKernelPte/Pde - Comment out MiSyncARM3WithROS, add a stub instead
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Wed Mar 24 23:02:26 2010 New Revision: 46406 URL:
http://svn.reactos.org/svn/reactos?rev=46406&view=rev
Log: [NTOS] - remove KeGetCurrentThread inline function, it's already in the wdm.h, reenable the exported function - Add InitializeSListHead export - Use RtlInitializeSListHead for InititializeSListHead - Add hacks for WDK compilation - Add ValidKernelPte/Pde - Comment out MiSyncARM3WithROS, add a stub instead Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/amd64/ke.h branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/amd64/mm.h branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/rtl.h branches/ros-amd64-bringup/reactos/ntoskrnl/include/ntoskrnl.h branches/ros-amd64-bringup/reactos/ntoskrnl/io/iomgr/adapter.c branches/ros-amd64-bringup/reactos/ntoskrnl/io/iomgr/arcname.c branches/ros-amd64-bringup/reactos/ntoskrnl/ke/thrdobj.c branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/mminit.c branches/ros-amd64-bringup/reactos/ntoskrnl/mm/amd64/init.c branches/ros-amd64-bringup/reactos/ntoskrnl/mm/sysldr.c branches/ros-amd64-bringup/reactos/ntoskrnl/ntoskrnl.pspec Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/amd64/ke.h URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
============================================================================== --- branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/amd64/ke.h [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/amd64/ke.h [iso-8859-1] Wed Mar 24 23:02:26 2010 @@ -144,13 +144,6 @@ { /* Flush the TLB by resetting CR3 */ __writecr3(__readcr3()); -} - -FORCEINLINE -PRKTHREAD -KeGetCurrentThread(VOID) -{ - return (PRKTHREAD)__readgsqword(FIELD_OFFSET(KIPCR, Prcb.CurrentThread)); } FORCEINLINE Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/amd64/mm.h URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
============================================================================== --- branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/amd64/mm.h [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/amd64/mm.h [iso-8859-1] Wed Mar 24 23:02:26 2010 @@ -158,13 +158,12 @@ #define MI_MAKE_WRITE_PAGE(x) ((x)->u.Hard.Writable = 1) #endif -#if 0 // FIXME +// FIXME!!! #define PAGE_TO_SECTION_PAGE_DIRECTORY_OFFSET(x) \ ((x) / (4*1024*1024)) #define PAGE_TO_SECTION_PAGE_TABLE_OFFSET(x) \ ((((x)) % (4*1024*1024)) / (4*1024)) -#endif #define NR_SECTION_PAGE_TABLES 1024 #define NR_SECTION_PAGE_ENTRIES 1024 Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/rtl.h URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
============================================================================== --- branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/rtl.h [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/rtl.h [iso-8859-1] Wed Mar 24 23:02:26 2010 @@ -1,4 +1,8 @@ #pragma once + +#ifdef _WIN64 +#define InitializeSListHead RtlInitializeSListHead +#endif NTSTATUS NTAPI Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/include/ntoskrnl.h URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
============================================================================== --- branches/ros-amd64-bringup/reactos/ntoskrnl/include/ntoskrnl.h [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/ntoskrnl/include/ntoskrnl.h [iso-8859-1] Wed Mar 24 23:02:26 2010 @@ -11,6 +11,12 @@ /* ARM Bringup Hack */ #ifdef _M_ARM #define DbgPrint DbgPrintEarly +#endif + +/* WDK hacks */ +#ifdef _M_AMD64 +#define IoAllocateAdapterChannel _IoAllocateAdapterChannel +#define KeGetCurrentThread _KeGetCurrentThread #endif /* Version Data */ Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/io/iomgr/adapter.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
============================================================================== --- branches/ros-amd64-bringup/reactos/ntoskrnl/io/iomgr/adapter.c [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/ntoskrnl/io/iomgr/adapter.c [iso-8859-1] Wed Mar 24 23:02:26 2010 @@ -21,6 +21,7 @@ /* FUNCTIONS *****************************************************************/ +#undef IoAllocateAdapterChannel /* * @implemented */ Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/io/iomgr/arcname.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
============================================================================== --- branches/ros-amd64-bringup/reactos/ntoskrnl/io/iomgr/arcname.c [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/ntoskrnl/io/iomgr/arcname.c [iso-8859-1] Wed Mar 24 23:02:26 2010 @@ -377,7 +377,9 @@ } goto checkbootcd; +#ifndef _M_AMD64 freeldrhack: +#endif /* * FIXME: In normal conditions, NTLDR/FreeLdr sends the *proper* CDROM * ARC Path name, and what happens here is a comparision of both checksums Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/ke/thrdobj.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
============================================================================== --- branches/ros-amd64-bringup/reactos/ntoskrnl/ke/thrdobj.c [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/ntoskrnl/ke/thrdobj.c [iso-8859-1] Wed Mar 24 23:02:26 2010 @@ -897,7 +897,6 @@ UNIMPLEMENTED; } -#ifndef _M_AMD64 /* * @implemented */ @@ -909,7 +908,6 @@ /* Return the current thread on this PCR */ return _KeGetCurrentThread(); } -#endif /* * @implemented Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/mminit.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
============================================================================== --- branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/mminit.c [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/mminit.c [iso-8859-1] Wed Mar 24 23:02:26 2010 @@ -303,6 +303,7 @@ /* PRIVATE FUNCTIONS **********************************************************/ +#ifndef _M_AMD64 // // In Bavaria, this is probably a hate crime // @@ -325,6 +326,7 @@ Pde++; } } +#endif PFN_NUMBER NTAPI Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/mm/amd64/init.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
============================================================================== --- branches/ros-amd64-bringup/reactos/ntoskrnl/mm/amd64/init.c [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/ntoskrnl/mm/amd64/init.c [iso-8859-1] Wed Mar 24 23:02:26 2010 @@ -26,21 +26,16 @@ /* GLOBALS *****************************************************************/ +/* Template PTE and PDE for a kernel page */ +MMPTE ValidKernelPde = {.u.Hard.Valid = 1, .u.Hard.Write = 1, .u.Hard.Dirty = 1, .u.Hard.Accessed = 1}; +MMPTE ValidKernelPte = {.u.Hard.Valid = 1, .u.Hard.Write = 1, .u.Hard.Dirty = 1, .u.Hard.Accessed = 1}; + /* Sizes */ -//SIZE_T MmBootImageSize; -//SIZE_T MmMinimumNonPagedPoolSize = 256 * 1024; -//SIZE_T MmSizeOfNonPagedPoolInBytes; -//SIZE_T MmMaximumNonPagedPoolInBytes; -//ULONG MmMaximumNonPagedPoolPercent; -//ULONG MmMinAdditionNonPagedPoolPerMb = 32 * 1024; -//ULONG MmMaxAdditionNonPagedPoolPerMb = 400 * 1024; -//SIZE_T MmDefaultMaximumNonPagedPool = 1024 * 1024; -//SIZE_T MmSessionSize = MI_SESSION_SIZE; +///SIZE_T MmSessionSize = MI_SESSION_SIZE; SIZE_T MmSessionViewSize = MI_SESSION_VIEW_SIZE; SIZE_T MmSessionPoolSize = MI_SESSION_POOL_SIZE; SIZE_T MmSessionImageSize = MI_SESSION_IMAGE_SIZE; SIZE_T MmSystemViewSize = MI_SYSTEM_VIEW_SIZE; -//SIZE_T MmSizeOfPagedPoolInBytes = MI_MIN_INIT_PAGED_POOLSIZE; SIZE_T MiNonPagedSystemSize; /* Address ranges */ @@ -66,15 +61,8 @@ ///PVOID MmNonPagedPoolEnd = MI_NONPAGED_POOL_END; // 0xFFFFFAE000000000 PVOID MmHyperSpaceEnd = (PVOID)HYPER_SPACE_END; -//PPHYSICAL_MEMORY_DESCRIPTOR MmPhysicalMemoryBlock; -//ULONG MmNumberOfPhysicalPages, MmHighestPhysicalPage, MmLowestPhysicalPage = -1; // FIXME: ULONG64 - -//ULONG MmNumberOfSystemPtes; -//PMMPTE MmSystemPagePtes; MMSUPPORT MmSystemCacheWs; -//RTL_BITMAP MiPfnBitMap; -//ULONG64 MxPfnAllocation; ULONG64 MxPfnSizeInBytes; PMEMORY_ALLOCATION_DESCRIPTOR MxFreeDescriptor; @@ -87,7 +75,6 @@ ULONG64 MxFreePageCount = 0; extern PFN_NUMBER MmSystemPageDirectory; -//PFN_NUMBER MmSizeOfPagedPoolInPages = MI_MIN_INIT_PAGED_POOLSIZE / PAGE_SIZE; BOOLEAN MiPfnsInitialized = FALSE; @@ -878,3 +865,18 @@ return STATUS_SUCCESS; } +VOID +FASTCALL +MiSyncARM3WithROS(IN PVOID AddressStart, + IN PVOID AddressEnd) +{ + +} + +NTSTATUS +NTAPI +MiInitMachineDependent(IN PLOADER_PARAMETER_BLOCK LoaderBlock) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/mm/sysldr.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
============================================================================== --- branches/ros-amd64-bringup/reactos/ntoskrnl/mm/sysldr.c [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/ntoskrnl/mm/sysldr.c [iso-8859-1] Wed Mar 24 23:02:26 2010 @@ -790,7 +790,7 @@ } /* Free the driver */ - MmFreeSection(LdrEntry->DllBase); + //MmFreeSection(LdrEntry->DllBase); /* Check if we're linked in */ if (LdrEntry->InLoadOrderLinks.Flink) Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/ntoskrnl.pspec URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
============================================================================== --- branches/ros-amd64-bringup/reactos/ntoskrnl/ntoskrnl.pspec [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/ntoskrnl/ntoskrnl.pspec [iso-8859-1] Wed Mar 24 23:02:26 2010 @@ -347,6 +347,8 @@ @ FASTCALL InterlockedIncrement(ptr) @ FASTCALL InterlockedPopEntrySList(ptr) @ FASTCALL InterlockedPushEntrySList(ptr ptr) +#else +@ stdcall InitializeSListHead(ptr) RtlInitializeSListHead #endif @ stdcall IoAcquireCancelSpinLock(ptr) @ stdcall IoAcquireRemoveLockEx(ptr ptr str long long)
15 years, 1 month
1
0
0
0
[tkreuzer] 46405: [RTL] Fix RtlInitializeSListHead and RtlQueryDepthSList
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Wed Mar 24 22:56:24 2010 New Revision: 46405 URL:
http://svn.reactos.org/svn/reactos?rev=46405&view=rev
Log: [RTL] Fix RtlInitializeSListHead and RtlQueryDepthSList Modified: branches/ros-amd64-bringup/reactos/lib/rtl/slist.c Modified: branches/ros-amd64-bringup/reactos/lib/rtl/slist.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/r…
============================================================================== --- branches/ros-amd64-bringup/reactos/lib/rtl/slist.c [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/lib/rtl/slist.c [iso-8859-1] Wed Mar 24 22:56:24 2010 @@ -17,15 +17,32 @@ VOID NTAPI -RtlInitializeSListHead(IN PSLIST_HEADER ListHead) +RtlInitializeSListHead( + OUT PSLIST_HEADER SListHead) { -#ifdef _WIN64 - ListHead->Alignment = 0; - ListHead->Region = 0; - ListHead->Header8.Init = 1; - // ListHead->Header8.HeaderType = 1; // FIXME: depending on cmpxchg16b support? -#else - ListHead->Alignment = 0; +#if defined(_IA64_) + ULONG64 FeatureBits; +#endif + +#if defined(_WIN64) + /* Make sure the alignment is ok */ + if (((ULONG_PTR)SListHead & 0xf) != 0) + { + RtlRaiseStatus(STATUS_DATATYPE_MISALIGNMENT); + } +#endif + + /* Zero it */ + SListHead->Alignment = 0; + SListHead->Region = 0; + +#if defined(_IA64_) + FeatureBits = __getReg(CV_IA64_CPUID4); + if (FeatureBits & KF_16BYTE_INSTR) + { + SListHead->Header16.HeaderType = 1; + SListHead->Header16.Init = 1; + } #endif } @@ -64,7 +81,7 @@ { #ifdef _WIN64 return ListHead->Header8.HeaderType ? - ListHead->Header16.Sequence : ListHead->Header8.Sequence; + ListHead->Header16.Depth : ListHead->Header8.Depth; #else return ListHead->Depth; #endif
15 years, 1 month
1
0
0
0
[tkreuzer] 46404: [NTOS] - Multiple ULONG -> SIZE_T fixes - Use SLIST_ENTRY, not SINGLE_LIST_ENTRY in InterlockedPushEntrySList, they are not the same! - Fix InterlockedCompareExchangePointer usage - _1MB is 1024 KB, not 1000 - Rename PDE_SIZE to PD_SIZE to reflect it's purpose (size of a page directory, not a page directory entry) - Add PD_COUNT, PDE_COUNT and PTE_COUNT for amd64 (should rather use PTE_PER_PAGE etc and move them to arch specific files. - Some more PFN_TYPE -> PFN_NUMBER
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Wed Mar 24 21:36:12 2010 New Revision: 46404 URL:
http://svn.reactos.org/svn/reactos?rev=46404&view=rev
Log: [NTOS] - Multiple ULONG -> SIZE_T fixes - Use SLIST_ENTRY, not SINGLE_LIST_ENTRY in InterlockedPushEntrySList, they are not the same! - Fix InterlockedCompareExchangePointer usage - _1MB is 1024 KB, not 1000 - Rename PDE_SIZE to PD_SIZE to reflect it's purpose (size of a page directory, not a page directory entry) - Add PD_COUNT, PDE_COUNT and PTE_COUNT for amd64 (should rather use PTE_PER_PAGE etc and move them to arch specific files. - Some more PFN_TYPE -> PFN_NUMBER Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/mm.h branches/ros-amd64-bringup/reactos/ntoskrnl/io/iomgr/iocomp.c branches/ros-amd64-bringup/reactos/ntoskrnl/io/iomgr/irp.c branches/ros-amd64-bringup/reactos/ntoskrnl/ke/bug.c branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/contmem.c branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/iosup.c branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/miarm.h branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/mminit.c branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/ncache.c branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/procsup.c branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/virtual.c branches/ros-amd64-bringup/reactos/ntoskrnl/mm/balance.c branches/ros-amd64-bringup/reactos/ntoskrnl/mm/pagefile.c branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ppool.c Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/mm.h URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
============================================================================== --- branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/mm.h [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/mm.h [iso-8859-1] Wed Mar 24 21:36:12 2010 @@ -6,22 +6,22 @@ struct _EPROCESS; -extern ULONG MiFreeSwapPages; -extern ULONG MiUsedSwapPages; -extern ULONG MmPagedPoolSize; -extern ULONG MmTotalPagedPoolQuota; -extern ULONG MmTotalNonPagedPoolQuota; +extern PFN_NUMBER MiFreeSwapPages; +extern PFN_NUMBER MiUsedSwapPages; +extern SIZE_T MmPagedPoolSize; +extern SIZE_T MmTotalPagedPoolQuota; +extern SIZE_T MmTotalNonPagedPoolQuota; extern PHYSICAL_ADDRESS MmSharedDataPagePhysicalAddress; -extern ULONG MmNumberOfPhysicalPages; +extern PFN_NUMBER MmNumberOfPhysicalPages; extern UCHAR MmDisablePagingExecutive; -extern ULONG MmLowestPhysicalPage; -extern ULONG MmHighestPhysicalPage; -extern ULONG MmAvailablePages; -extern ULONG MmResidentAvailablePages; -extern ULONG MmNumberOfSystemPtes; +extern PFN_NUMBER MmLowestPhysicalPage; +extern PFN_NUMBER MmHighestPhysicalPage; +extern PFN_NUMBER MmAvailablePages; +extern PFN_NUMBER MmResidentAvailablePages; +extern ULONG_PTR MmNumberOfSystemPtes; extern PVOID MmPagedPoolBase; -extern ULONG MmPagedPoolSize; +extern SIZE_T MmPagedPoolSize; extern PMEMORY_ALLOCATION_DESCRIPTOR MiFreeDescriptor; extern MEMORY_ALLOCATION_DESCRIPTOR MiFreeDescriptorOrg; Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/io/iomgr/iocomp.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
============================================================================== --- branches/ros-amd64-bringup/reactos/ntoskrnl/io/iomgr/iocomp.c [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/ntoskrnl/io/iomgr/iocomp.c [iso-8859-1] Wed Mar 24 21:36:12 2010 @@ -92,7 +92,7 @@ } /* The free was within dhe Depth */ - InterlockedPushEntrySList(&List->L.ListHead, (PSINGLE_LIST_ENTRY)Packet); + InterlockedPushEntrySList(&List->L.ListHead, (PSLIST_ENTRY)Packet); } VOID Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/io/iomgr/irp.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
============================================================================== --- branches/ros-amd64-bringup/reactos/ntoskrnl/io/iomgr/irp.c [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/ntoskrnl/io/iomgr/irp.c [iso-8859-1] Wed Mar 24 21:36:12 2010 @@ -1553,7 +1553,7 @@ if (Irp) { InterlockedPushEntrySList(&List->L.ListHead, - (PSINGLE_LIST_ENTRY)Irp); + (PSLIST_ENTRY)Irp); } } } Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/ke/bug.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
============================================================================== --- branches/ros-amd64-bringup/reactos/ntoskrnl/ke/bug.c [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/ntoskrnl/ke/bug.c [iso-8859-1] Wed Mar 24 21:36:12 2010 @@ -1411,7 +1411,7 @@ // KiAcquireNmiListLock(&OldIrql); NmiData->Next = KiNmiCallbackListHead; - Next = InterlockedCompareExchangePointer(&KiNmiCallbackListHead, + Next = InterlockedCompareExchangePointer((PVOID*)&KiNmiCallbackListHead, NmiData, NmiData->Next); ASSERT(Next == NmiData->Next); Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/contmem.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
============================================================================== --- branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/contmem.c [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/contmem.c [iso-8859-1] Wed Mar 24 21:36:12 2010 @@ -391,7 +391,7 @@ */ PVOID NTAPI -MmAllocateContiguousMemory(IN ULONG NumberOfBytes, +MmAllocateContiguousMemory(IN SIZE_T NumberOfBytes, IN PHYSICAL_ADDRESS HighestAcceptableAddress) { PFN_NUMBER HighestPfn; Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/iosup.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
============================================================================== --- branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/iosup.c [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/iosup.c [iso-8859-1] Wed Mar 24 21:36:12 2010 @@ -46,7 +46,7 @@ PVOID NTAPI MmMapIoSpace(IN PHYSICAL_ADDRESS PhysicalAddress, - IN ULONG NumberOfBytes, + IN SIZE_T NumberOfBytes, IN MEMORY_CACHING_TYPE CacheType) { Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/miarm.h URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
============================================================================== --- branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/miarm.h [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/miarm.h [iso-8859-1] Wed Mar 24 21:36:12 2010 @@ -33,6 +33,8 @@ #define MI_NONPAGED_POOL_END (PVOID)0xFFBE0000 #define MI_DEBUG_MAPPING (PVOID)0xFFBFF000 +#endif /* !_M_AMD64 */ + #define MI_MIN_SECONDARY_COLORS 8 #define MI_SECONDARY_COLORS 64 #define MI_MAX_SECONDARY_COLORS 1024 @@ -42,10 +44,10 @@ /* Make the code cleaner with some definitions for size multiples */ #define _1KB (1024) -#define _1MB (1000 * _1KB) - -/* Size of a PDE directory, and size of a page table */ -#define PDE_SIZE (PDE_COUNT * sizeof(MMPDE)) +#define _1MB (1024 * _1KB) + +/* Size of a page directory, and size of a page table */ +#define PD_SIZE (PDE_COUNT * sizeof(MMPDE)) #define PT_SIZE (PTE_COUNT * sizeof(MMPTE)) /* Architecture specific count of PDEs in a directory, and count of PTEs in a PT */ @@ -53,7 +55,11 @@ #define PD_COUNT 1 #define PDE_COUNT 1024 #define PTE_COUNT 1024 -#elif _M_ARM +#elif defined(_M_AMD64) +#define PD_COUNT (512 * 512) +#define PDE_COUNT 512 +#define PTE_COUNT 512 +#elif defined(_M_ARM) #define PD_COUNT 1 #define PDE_COUNT 4096 #define PTE_COUNT 256 @@ -72,8 +78,6 @@ #define POOL_LISTS_PER_PAGE (PAGE_SIZE / sizeof(LIST_ENTRY)) #define BASE_POOL_TYPE_MASK 1 #define POOL_MAX_ALLOC (PAGE_SIZE - (sizeof(POOL_HEADER) + sizeof(LIST_ENTRY))) - -#endif typedef struct _POOL_DESCRIPTOR { @@ -196,24 +200,24 @@ extern MMPTE ValidKernelPde; extern MMPTE ValidKernelPte; -extern ULONG_PTR MmSizeOfNonPagedPoolInBytes; -extern ULONG_PTR MmMaximumNonPagedPoolInBytes; +extern SIZE_T MmSizeOfNonPagedPoolInBytes; +extern SIZE_T MmMaximumNonPagedPoolInBytes; extern PFN_NUMBER MmMaximumNonPagedPoolInPages; extern PFN_NUMBER MmSizeOfPagedPoolInPages; extern PVOID MmNonPagedSystemStart; extern PVOID MmNonPagedPoolStart; extern PVOID MmNonPagedPoolExpansionStart; extern PVOID MmNonPagedPoolEnd; -extern ULONG_PTR MmSizeOfPagedPoolInBytes; +extern SIZE_T MmSizeOfPagedPoolInBytes; extern PVOID MmPagedPoolStart; extern PVOID MmPagedPoolEnd; extern PVOID MmSessionBase; -extern ULONG_PTR MmSessionSize; +extern SIZE_T MmSessionSize; extern PMMPTE MmFirstReservedMappingPte, MmLastReservedMappingPte; extern PMMPTE MiFirstReservedZeroingPte; extern MI_PFN_CACHE_ATTRIBUTE MiPlatformCacheAttributes[2][MmMaximumCacheType]; extern PPHYSICAL_MEMORY_DESCRIPTOR MmPhysicalMemoryBlock; -extern ULONG_PTR MmBootImageSize; +extern SIZE_T MmBootImageSize; extern PMMPTE MmSystemPtesStart[MaximumPtePoolTypes]; extern PMMPTE MmSystemPtesEnd[MaximumPtePoolTypes]; extern PMEMORY_ALLOCATION_DESCRIPTOR MxFreeDescriptor; @@ -226,10 +230,9 @@ extern PVOID MmPagedPoolEnd; extern PVOID MmNonPagedSystemStart; extern PVOID MiSystemViewStart; -extern ULONG_PTR MmSystemViewSize; +extern SIZE_T MmSystemViewSize; extern PVOID MmSessionBase; extern PVOID MiSessionSpaceEnd; -extern ULONG_PTR MmSizeOfPagedPoolInBytes; extern PMMPTE MmSystemPagePtes; extern PVOID MmSystemCacheStart; extern PVOID MmSystemCacheEnd; @@ -239,13 +242,12 @@ extern ULONG MmSpecialPoolTag; extern PVOID MmHyperSpaceEnd; extern PMMWSL MmSystemCacheWorkingSetList; -extern ULONG MmMinimumNonPagedPoolSize; +extern SIZE_T MmMinimumNonPagedPoolSize; extern ULONG MmMinAdditionNonPagedPoolPerMb; -extern ULONG MmDefaultMaximumNonPagedPool; +extern SIZE_T MmDefaultMaximumNonPagedPool; extern ULONG MmMaxAdditionNonPagedPoolPerMb; extern ULONG MmSecondaryColors; extern ULONG MmSecondaryColorMask; -extern ULONG MmNumberOfSystemPtes; extern ULONG MmMaximumNonPagedPoolPercent; extern ULONG MmLargeStackSize; extern PMMCOLOR_TABLES MmFreePagesByColor[FreePageList + 1]; Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/mminit.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
============================================================================== --- branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/mminit.c [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/mminit.c [iso-8859-1] Wed Mar 24 21:36:12 2010 @@ -23,8 +23,8 @@ // figure out the most appropriate values. // ULONG MmMaximumNonPagedPoolPercent; -ULONG MmSizeOfNonPagedPoolInBytes; -ULONG MmMaximumNonPagedPoolInBytes; +SIZE_T MmSizeOfNonPagedPoolInBytes; +SIZE_T MmMaximumNonPagedPoolInBytes; /* Some of the same values, in pages */ PFN_NUMBER MmMaximumNonPagedPoolInPages; @@ -36,9 +36,9 @@ // They are described on
http://support.microsoft.com/default.aspx/kb/126402/ja
// along with the algorithm that uses them, which is implemented later below. // -ULONG MmMinimumNonPagedPoolSize = 256 * 1024; +SIZE_T MmMinimumNonPagedPoolSize = 256 * 1024; ULONG MmMinAdditionNonPagedPoolPerMb = 32 * 1024; -ULONG MmDefaultMaximumNonPagedPool = 1024 * 1024; +SIZE_T MmDefaultMaximumNonPagedPool = 1024 * 1024; ULONG MmMaxAdditionNonPagedPoolPerMb = 400 * 1024; // @@ -107,7 +107,7 @@ // // And this is its default size // -ULONG MmSizeOfPagedPoolInBytes = MI_MIN_INIT_PAGED_POOLSIZE; +SIZE_T MmSizeOfPagedPoolInBytes = MI_MIN_INIT_PAGED_POOLSIZE; PFN_NUMBER MmSizeOfPagedPoolInPages = MI_MIN_INIT_PAGED_POOLSIZE / PAGE_SIZE; // @@ -131,10 +131,10 @@ PVOID MiSessionPoolEnd; // 0xBE000000 PVOID MiSessionPoolStart; // 0xBD000000 PVOID MmSessionBase; // 0xBD000000 -ULONG MmSessionSize; -ULONG MmSessionViewSize; -ULONG MmSessionPoolSize; -ULONG MmSessionImageSize; +SIZE_T MmSessionSize; +SIZE_T MmSessionViewSize; +SIZE_T MmSessionPoolSize; +SIZE_T MmSessionImageSize; // // The system view space, on the other hand, is where sections that are memory @@ -143,7 +143,7 @@ // By default, it is a 16MB region. // PVOID MiSystemViewStart; -ULONG MmSystemViewSize; +SIZE_T MmSystemViewSize; // // A copy of the system page directory (the page directory associated with the @@ -167,13 +167,13 @@ // On systems with more than 32MB, this number is then doubled, and further // aligned up to a PDE boundary (4MB). // -ULONG MmNumberOfSystemPtes; +ULONG_PTR MmNumberOfSystemPtes; // // This is how many pages the PFN database will take up // In Windows, this includes the Quark Color Table, but not in ARM³ // -ULONG MxPfnAllocation; +PFN_NUMBER MxPfnAllocation; // // Unlike the old ReactOS Memory Manager, ARM³ (and Windows) does not keep track @@ -197,7 +197,7 @@ // // This is where we keep track of the most basic physical layout markers // -ULONG MmNumberOfPhysicalPages, MmHighestPhysicalPage, MmLowestPhysicalPage = -1; +PFN_NUMBER MmNumberOfPhysicalPages, MmHighestPhysicalPage, MmLowestPhysicalPage = -1; // // The total number of pages mapped by the boot loader, which include the kernel @@ -207,13 +207,13 @@ // // This number is later aligned up to a PDE boundary. // -ULONG MmBootImageSize; +SIZE_T MmBootImageSize; // // These three variables keep track of the core separation of address space that // exists between kernel mode and user mode. // -ULONG MmUserProbeAddress; +ULONG_PTR MmUserProbeAddress; PVOID MmHighestUserAddress; PVOID MmSystemRangeStart; Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/ncache.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
============================================================================== --- branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/ncache.c [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/ncache.c [iso-8859-1] Wed Mar 24 21:36:12 2010 @@ -23,7 +23,7 @@ */ PVOID NTAPI -MmAllocateNonCachedMemory(IN ULONG NumberOfBytes) +MmAllocateNonCachedMemory(IN SIZE_T NumberOfBytes) { PFN_NUMBER PageCount, MdlPageCount, PageFrameIndex; PHYSICAL_ADDRESS LowAddress, HighAddress, SkipBytes; Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/procsup.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
============================================================================== --- branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/procsup.c [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/procsup.c [iso-8859-1] Wed Mar 24 21:36:12 2010 @@ -503,7 +503,7 @@ ImageConfigData = RtlImageDirectoryEntryToData(Peb->ImageBaseAddress, TRUE, IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG, - &ViewSize); + (PULONG)&ViewSize); if (ImageConfigData) { // Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/virtual.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
============================================================================== --- branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/virtual.c [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/virtual.c [iso-8859-1] Wed Mar 24 21:36:12 2010 @@ -775,7 +775,7 @@ KPROCESSOR_MODE PreviousMode = ExGetPreviousMode(); PEPROCESS Process; NTSTATUS Status = STATUS_SUCCESS; - ULONG BytesWritten = 0; + SIZE_T BytesWritten = 0; PAGED_CODE(); // Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/mm/balance.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
============================================================================== --- branches/ros-amd64-bringup/reactos/ntoskrnl/mm/balance.c [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/ntoskrnl/mm/balance.c [iso-8859-1] Wed Mar 24 21:36:12 2010 @@ -228,7 +228,7 @@ PsGetCurrentThread() == MiBalancerThreadId.UniqueThread; } -VOID NTAPI MiSetConsumer(IN PFN_TYPE Pfn, IN ULONG Consumer); +VOID NTAPI MiSetConsumer(IN PFN_NUMBER Pfn, IN ULONG Consumer); NTSTATUS NTAPI Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/mm/pagefile.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
============================================================================== --- branches/ros-amd64-bringup/reactos/ntoskrnl/mm/pagefile.c [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/ntoskrnl/mm/pagefile.c [iso-8859-1] Wed Mar 24 21:36:12 2010 @@ -81,15 +81,15 @@ ULONG MmNumberOfPagingFiles; /* Number of pages that are available for swapping */ -ULONG MiFreeSwapPages; +PFN_NUMBER MiFreeSwapPages; /* Number of pages that have been allocated for swapping */ -ULONG MiUsedSwapPages; +PFN_NUMBER MiUsedSwapPages; /* * Number of pages that have been reserved for swapping but not yet allocated */ -static ULONG MiReservedSwapPages; +static PFN_NUMBER MiReservedSwapPages; /* * Ratio between reserved and available swap pages, e.g. setting this to five Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ppool.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
============================================================================== --- branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ppool.c [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ppool.c [iso-8859-1] Wed Mar 24 21:36:12 2010 @@ -159,8 +159,8 @@ R_POOL, *PR_POOL; PVOID MmPagedPoolBase; -ULONG MmPagedPoolSize; -ULONG MmTotalPagedPoolQuota = 0; // TODO FIXME commented out until we use it +SIZE_T MmPagedPoolSize; +SIZE_T MmTotalPagedPoolQuota = 0; // TODO FIXME commented out until we use it static PR_POOL MmPagedPool = NULL; /* FUNCTIONS*******************************************************************/
15 years, 1 month
1
0
0
0
[tkreuzer] 46403: [NTOS] - fix ExInterlockedPopEntryList and ExInterlockedPushEntryList - Update amd64/mm.h and mm/amd64/init.c to reflect latest trunk changes - make freelist.c compile again
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Wed Mar 24 21:26:54 2010 New Revision: 46403 URL:
http://svn.reactos.org/svn/reactos?rev=46403&view=rev
Log: [NTOS] - fix ExInterlockedPopEntryList and ExInterlockedPushEntryList - Update amd64/mm.h and mm/amd64/init.c to reflect latest trunk changes - make freelist.c compile again Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/ex/amd64/fastinterlck.c branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/amd64/mm.h branches/ros-amd64-bringup/reactos/ntoskrnl/mm/amd64/init.c branches/ros-amd64-bringup/reactos/ntoskrnl/mm/amd64/page.c branches/ros-amd64-bringup/reactos/ntoskrnl/mm/freelist.c Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/ex/amd64/fastinterlck.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
============================================================================== --- branches/ros-amd64-bringup/reactos/ntoskrnl/ex/amd64/fastinterlck.c [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/ntoskrnl/ex/amd64/fastinterlck.c [iso-8859-1] Wed Mar 24 21:26:54 2010 @@ -79,11 +79,11 @@ IN PKSPIN_LOCK Lock) { KIRQL OldIrql; - PSINGLE_LIST_ENTRY OldHead = NULL; + PSINGLE_LIST_ENTRY FirstEntry; KeAcquireSpinLock(Lock, &OldIrql); - if (!ListHead->Next) OldHead = PopEntryList(ListHead); + FirstEntry = PopEntryList(ListHead); KeReleaseSpinLock(Lock, OldIrql); - return OldHead; + return FirstEntry; } PSINGLE_LIST_ENTRY @@ -94,7 +94,8 @@ KIRQL OldIrql; PSINGLE_LIST_ENTRY OldHead = NULL; KeAcquireSpinLock(Lock, &OldIrql); - if (!ListHead->Next) OldHead = PushEntryList(ListHead, ListEntry); + OldHead = ListHead->Next; + PushEntryList(ListHead, ListEntry); KeReleaseSpinLock(Lock, OldIrql); return OldHead; } Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/amd64/mm.h URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
============================================================================== --- branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/amd64/mm.h [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/amd64/mm.h [iso-8859-1] Wed Mar 24 21:26:54 2010 @@ -2,8 +2,7 @@ * Lowlevel memory managment definitions */ -#ifndef __NTOSKRNL_INCLUDE_INTERNAL_AMD64_MM_H -#define __NTOSKRNL_INCLUDE_INTERNAL_AMD64_MM_H +#pragma once /* Helper macros */ #define PAGE_MASK(x) ((x)&(~0xfff)) @@ -22,8 +21,25 @@ #define MI_NONPAGED_POOL_END (PVOID)0xFFFFFAE000000000ULL #define MI_DEBUG_MAPPING (PVOID)0xFFFFFFFF80000000ULL // FIXME #define MI_HIGHEST_SYSTEM_ADDRESS (PVOID)0xFFFFFFFFFFFFFFFFULL +#define MI_SYSTEM_CACHE_WS_START (PVOID)0xFFFFF78000001000ULL // CHECKME - +/* Memory sizes */ +#define MI_MIN_PAGES_FOR_NONPAGED_POOL_TUNING ((255*1024*1024) >> PAGE_SHIFT) +#define MI_MIN_PAGES_FOR_SYSPTE_TUNING ((19*1024*1024) >> PAGE_SHIFT) +#define MI_MIN_PAGES_FOR_SYSPTE_BOOST ((32*1024*1024) >> PAGE_SHIFT) +#define MI_MAX_INIT_NONPAGED_POOL_SIZE (128ULL * 1024 * 1024 * 1024) +#define MI_MAX_NONPAGED_POOL_SIZE (128ULL * 1024 * 1024 * 1024) +#define MI_MAX_FREE_PAGE_LISTS 4 +#define MI_MIN_INIT_PAGED_POOLSIZE (32 * 1024 * 1024) +#define MI_SESSION_VIEW_SIZE (20 * 1024 * 1024) +#define MI_SESSION_POOL_SIZE (16 * 1024 * 1024) +#define MI_SESSION_IMAGE_SIZE (8 * 1024 * 1024) +#define MI_SESSION_WORKING_SET_SIZE (4 * 1024 * 1024) +#define MI_SESSION_SIZE (MI_SESSION_VIEW_SIZE + \ + MI_SESSION_POOL_SIZE + \ + MI_SESSION_IMAGE_SIZE + \ + MI_SESSION_WORKING_SET_SIZE) +#define MI_SYSTEM_VIEW_SIZE (16 * 1024 * 1024) #define MI_NUMBER_SYSTEM_PTES 22000 PULONG64 @@ -53,21 +69,23 @@ PMMPTE FORCEINLINE -MiAddressToPde(PVOID Address) +_MiAddressToPde(PVOID Address) { ULONG64 Offset = (ULONG64)Address >> (PDI_SHIFT - 3); Offset &= 0x7FFFFFF << 3; return (PMMPTE)(PDE_BASE + Offset); } +#define MiAddressToPde(x) _MiAddressToPde((PVOID)(x)) PMMPTE FORCEINLINE -MiAddressToPte(PVOID Address) +_MiAddressToPte(PVOID Address) { ULONG64 Offset = (ULONG64)Address >> (PTI_SHIFT - 3); Offset &= 0xFFFFFFFFFULL << 3; return (PMMPTE)(PTE_BASE + Offset); } +#define MiAddressToPte(x) _MiAddressToPte((PVOID)(x)) /* Convert a PTE into a corresponding address */ PVOID @@ -90,9 +108,9 @@ (MiAddressToPde(Address)->u.Hard.Valid)); } -//#define ADDR_TO_PAGE_TABLE(v) (((ULONG)(v)) / (1024 * PAGE_SIZE)) -//#define ADDR_TO_PDE_OFFSET(v) ((((ULONG)(v)) / (1024 * PAGE_SIZE))) -//#define ADDR_TO_PTE_OFFSET(v) ((((ULONG)(v)) % (1024 * PAGE_SIZE)) / PAGE_SIZE) +#define ADDR_TO_PAGE_TABLE(v) (((ULONG_PTR)(v)) / (512 * PAGE_SIZE)) +#define ADDR_TO_PDE_OFFSET(v) ((((ULONG_PTR)(v)) / (512 * PAGE_SIZE))) +#define ADDR_TO_PTE_OFFSET(v) ((((ULONG_PTR)(v)) % (512 * PAGE_SIZE)) / PAGE_SIZE) #define VAtoPXI(va) ((((ULONG64)va) >> PXI_SHIFT) & 0x1FF) #define VAtoPPI(va) ((((ULONG64)va) >> PPI_SHIFT) & 0x1FF) @@ -117,8 +135,6 @@ #define IS_ALIGNED(addr, align) (((ULONG64)(addr) & (align - 1)) == 0) #define IS_PAGE_ALIGNED(addr) IS_ALIGNED(addr, PAGE_SIZE) -/// MIARM.H - /* Easy accessing PFN in PTE */ #define PFN_FROM_PTE(v) ((v)->u.Hard.PageFrameNumber) @@ -128,43 +144,47 @@ #define MI_PAGE_DISABLE_CACHE(x) ((x)->u.Hard.CacheDisable = 1) #define MI_PAGE_WRITE_THROUGH(x) ((x)->u.Hard.WriteThrough = 1) #define MI_PAGE_WRITE_COMBINED(x) ((x)->u.Hard.WriteThrough = 0) +#if !defined(CONFIG_SMP) #define MI_IS_PAGE_WRITEABLE(x) ((x)->u.Hard.Write == 1) +#else +#define MI_IS_PAGE_WRITEABLE(x) ((x)->u.Hard.Writable == 1) +#endif #define MI_IS_PAGE_COPY_ON_WRITE(x)((x)->u.Hard.CopyOnWrite == 1) #define MI_IS_PAGE_DIRTY(x) ((x)->u.Hard.Dirty == 1) #define MI_MAKE_OWNER_PAGE(x) ((x)->u.Hard.Owner = 1) +#if !defined(CONFIG_SMP) #define MI_MAKE_WRITE_PAGE(x) ((x)->u.Hard.Write = 1) +#else +#define MI_MAKE_WRITE_PAGE(x) ((x)->u.Hard.Writable = 1) +#endif +#if 0 // FIXME +#define PAGE_TO_SECTION_PAGE_DIRECTORY_OFFSET(x) \ + ((x) / (4*1024*1024)) -#define MI_MIN_PAGES_FOR_NONPAGED_POOL_TUNING ((255*1024*1024) >> PAGE_SHIFT) -#define MI_MIN_PAGES_FOR_SYSPTE_TUNING ((19*1024*1024) >> PAGE_SHIFT) -#define MI_MIN_PAGES_FOR_SYSPTE_BOOST ((32*1024*1024) >> PAGE_SHIFT) -#define MI_MAX_INIT_NONPAGED_POOL_SIZE (128ULL * 1024 * 1024 * 1024) -#define MI_MAX_NONPAGED_POOL_SIZE (128ULL * 1024 * 1024 * 1024) -#define MI_MAX_FREE_PAGE_LISTS 4 +#define PAGE_TO_SECTION_PAGE_TABLE_OFFSET(x) \ + ((((x)) % (4*1024*1024)) / (4*1024)) +#endif -#define MI_MIN_INIT_PAGED_POOLSIZE (32 * 1024 * 1024) +#define NR_SECTION_PAGE_TABLES 1024 +#define NR_SECTION_PAGE_ENTRIES 1024 -#define MI_SESSION_VIEW_SIZE (20 * 1024 * 1024) -#define MI_SESSION_POOL_SIZE (16 * 1024 * 1024) -#define MI_SESSION_IMAGE_SIZE (8 * 1024 * 1024) -#define MI_SESSION_WORKING_SET_SIZE (4 * 1024 * 1024) -#define MI_SESSION_SIZE (MI_SESSION_VIEW_SIZE + \ - MI_SESSION_POOL_SIZE + \ - MI_SESSION_IMAGE_SIZE + \ - MI_SESSION_WORKING_SET_SIZE) +//#define TEB_BASE 0x7FFDE000 -#define MI_SYSTEM_VIEW_SIZE (16 * 1024 * 1024) +#define MI_HYPERSPACE_PTES (256 - 1) +#define MI_ZERO_PTES (32) +#define MI_MAPPING_RANGE_START (ULONG)HYPER_SPACE +#define MI_MAPPING_RANGE_END (MI_MAPPING_RANGE_START + \ + MI_HYPERSPACE_PTES * PAGE_SIZE) +#define MI_ZERO_PTE (PMMPTE)(MI_MAPPING_RANGE_END + \ + PAGE_SIZE) - -#define MM_HIGHEST_VAD_ADDRESS \ - (PVOID)((ULONG_PTR)MM_HIGHEST_USER_ADDRESS - (16 * PAGE_SIZE)) +/* On x86, these two are the same */ +#define MMPDE MMPTE +#define PMMPDE PMMPTE +/* +* FIXME - different architectures have different cache line sizes... +*/ +#define MM_CACHE_LINE_SIZE 32 -// -// FIXFIX: These should go in ex.h after the pool merge -// -#define POOL_LISTS_PER_PAGE (PAGE_SIZE / sizeof(LIST_ENTRY)) -#define BASE_POOL_TYPE_MASK 1 -#define POOL_MAX_ALLOC (PAGE_SIZE - (sizeof(POOL_HEADER) + sizeof(LIST_ENTRY))) - -#endif /* __NTOSKRNL_INCLUDE_INTERNAL_AMD64_MM_H */ Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/mm/amd64/init.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
============================================================================== --- branches/ros-amd64-bringup/reactos/ntoskrnl/mm/amd64/init.c [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/ntoskrnl/mm/amd64/init.c [iso-8859-1] Wed Mar 24 21:26:54 2010 @@ -27,21 +27,21 @@ /* GLOBALS *****************************************************************/ /* Sizes */ -ULONG64 MmBootImageSize; -ULONG64 MmMinimumNonPagedPoolSize = 256 * 1024; -ULONG64 MmSizeOfNonPagedPoolInBytes; -ULONG64 MmMaximumNonPagedPoolInBytes; -ULONG64 MmMaximumNonPagedPoolPercent; -ULONG64 MmMinAdditionNonPagedPoolPerMb = 32 * 1024; -ULONG64 MmMaxAdditionNonPagedPoolPerMb = 400 * 1024; -ULONG64 MmDefaultMaximumNonPagedPool = 1024 * 1024; -ULONG64 MmSessionSize = MI_SESSION_SIZE; -ULONG64 MmSessionViewSize = MI_SESSION_VIEW_SIZE; -ULONG64 MmSessionPoolSize = MI_SESSION_POOL_SIZE; -ULONG64 MmSessionImageSize = MI_SESSION_IMAGE_SIZE; -ULONG64 MmSystemViewSize = MI_SYSTEM_VIEW_SIZE; -ULONG64 MmSizeOfPagedPoolInBytes = MI_MIN_INIT_PAGED_POOLSIZE; -ULONG64 MiNonPagedSystemSize; +//SIZE_T MmBootImageSize; +//SIZE_T MmMinimumNonPagedPoolSize = 256 * 1024; +//SIZE_T MmSizeOfNonPagedPoolInBytes; +//SIZE_T MmMaximumNonPagedPoolInBytes; +//ULONG MmMaximumNonPagedPoolPercent; +//ULONG MmMinAdditionNonPagedPoolPerMb = 32 * 1024; +//ULONG MmMaxAdditionNonPagedPoolPerMb = 400 * 1024; +//SIZE_T MmDefaultMaximumNonPagedPool = 1024 * 1024; +//SIZE_T MmSessionSize = MI_SESSION_SIZE; +SIZE_T MmSessionViewSize = MI_SESSION_VIEW_SIZE; +SIZE_T MmSessionPoolSize = MI_SESSION_POOL_SIZE; +SIZE_T MmSessionImageSize = MI_SESSION_IMAGE_SIZE; +SIZE_T MmSystemViewSize = MI_SYSTEM_VIEW_SIZE; +//SIZE_T MmSizeOfPagedPoolInBytes = MI_MIN_INIT_PAGED_POOLSIZE; +SIZE_T MiNonPagedSystemSize; /* Address ranges */ ULONG64 MmUserProbeAddress = 0x7FFFFFF0000ULL; @@ -57,24 +57,24 @@ PVOID MiSessionSpaceEnd = MI_SESSION_SPACE_END; // FFFFF98000000000 PVOID MmSystemCacheStart; // FFFFF98000000000 PVOID MmSystemCacheEnd; // FFFFFA8000000000 -PVOID MmPagedPoolStart = MI_PAGED_POOL_START; // FFFFFA8000000000 +/// PVOID MmPagedPoolStart = MI_PAGED_POOL_START; // FFFFFA8000000000 PVOID MmPagedPoolEnd; // FFFFFAA000000000 PVOID MiSystemViewStart; PVOID MmNonPagedSystemStart; // FFFFFAA000000000 PVOID MmNonPagedPoolStart; PVOID MmNonPagedPoolExpansionStart; -PVOID MmNonPagedPoolEnd = MI_NONPAGED_POOL_END; // 0xFFFFFAE000000000 +///PVOID MmNonPagedPoolEnd = MI_NONPAGED_POOL_END; // 0xFFFFFAE000000000 PVOID MmHyperSpaceEnd = (PVOID)HYPER_SPACE_END; -PPHYSICAL_MEMORY_DESCRIPTOR MmPhysicalMemoryBlock; -ULONG MmNumberOfPhysicalPages, MmHighestPhysicalPage, MmLowestPhysicalPage = -1; // FIXME: ULONG64 - -ULONG MmNumberOfSystemPtes; -PMMPTE MmSystemPagePtes; +//PPHYSICAL_MEMORY_DESCRIPTOR MmPhysicalMemoryBlock; +//ULONG MmNumberOfPhysicalPages, MmHighestPhysicalPage, MmLowestPhysicalPage = -1; // FIXME: ULONG64 + +//ULONG MmNumberOfSystemPtes; +//PMMPTE MmSystemPagePtes; MMSUPPORT MmSystemCacheWs; -RTL_BITMAP MiPfnBitMap; -ULONG64 MxPfnAllocation; +//RTL_BITMAP MiPfnBitMap; +//ULONG64 MxPfnAllocation; ULONG64 MxPfnSizeInBytes; PMEMORY_ALLOCATION_DESCRIPTOR MxFreeDescriptor; @@ -86,8 +86,8 @@ PFN_NUMBER MxFreePageBase; ULONG64 MxFreePageCount = 0; -PFN_NUMBER MmSystemPageDirectory; -PFN_NUMBER MmSizeOfPagedPoolInPages = MI_MIN_INIT_PAGED_POOLSIZE / PAGE_SIZE; +extern PFN_NUMBER MmSystemPageDirectory; +//PFN_NUMBER MmSizeOfPagedPoolInPages = MI_MIN_INIT_PAGED_POOLSIZE / PAGE_SIZE; BOOLEAN MiPfnsInitialized = FALSE; @@ -187,7 +187,7 @@ if (MiPfnsInitialized) { - return MmAllocPage(MC_SYSTEM, 0); + return MmAllocPage(MC_SYSTEM); } /* Make sure we have enough pages */ @@ -308,7 +308,7 @@ MxPfnAllocation = MxPfnSizeInBytes >> PAGE_SHIFT; /* Simply start at hardcoded address */ - MmPfnDatabase = MI_PFN_DATABASE; + MmPfnDatabase[1] = MI_PFN_DATABASE; /* Loop the memory descriptors */ for (ListEntry = LoaderBlock->MemoryDescriptorListHead.Flink; @@ -552,7 +552,7 @@ } /* Initialize the ARM3 nonpaged pool */ - MiInitializeArmPool(); + MiInitializeNonPagedPool(); /* Initialize the nonpaged pool */ InitializePool(NonPagedPool, 0); @@ -693,7 +693,7 @@ VOID NTAPI -MiBuildPagedPool(VOID) +MiBuildPagedPool_x(VOID) { PMMPTE Pte; MMPTE TmplPte; @@ -737,7 +737,7 @@ if (!Pte->u.Flush.Valid) { /* Map it! */ - TmplPte.u.Flush.PageFrameNumber = MmAllocPage(MC_SYSTEM, 0); + TmplPte.u.Flush.PageFrameNumber = MmAllocPage(MC_SYSTEM); *Pte = TmplPte; } @@ -817,7 +817,7 @@ NTSTATUS NTAPI -MmArmInitSystem(IN ULONG Phase, +MmArmInitSystem_x(IN ULONG Phase, IN PLOADER_PARAMETER_BLOCK LoaderBlock) { if (Phase == 0) @@ -829,7 +829,7 @@ MiEvaluateMemoryDescriptors(LoaderBlock); /* Start PFN database at hardcoded address */ - MmPfnDatabase = MI_PFN_DATABASE; + MmPfnDatabase[1] = MI_PFN_DATABASE; /* Prepare PFN database mappings */ MiPreparePfnDatabse(LoaderBlock); Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/mm/amd64/page.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
============================================================================== --- branches/ros-amd64-bringup/reactos/ntoskrnl/mm/amd64/page.c [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/ntoskrnl/mm/amd64/page.c [iso-8859-1] Wed Mar 24 21:26:54 2010 @@ -15,7 +15,7 @@ #undef InterlockedExchangePte #define InterlockedExchangePte(pte1, pte2) \ - InterlockedExchange64(&pte1->u.Long, pte2.u.Long) + InterlockedExchange64((LONG64*)&pte1->u.Long, pte2.u.Long) #define PAGE_EXECUTE_ANY (PAGE_EXECUTE|PAGE_EXECUTE_READ|PAGE_EXECUTE_READWRITE|PAGE_EXECUTE_WRITECOPY) #define PAGE_WRITE_ANY (PAGE_EXECUTE_READWRITE|PAGE_READWRITE|PAGE_EXECUTE_WRITECOPY|PAGE_WRITECOPY) @@ -251,7 +251,6 @@ MmGetPageProtect(PEPROCESS Process, PVOID Address) { MMPTE Pte; - ULONG Protect; Pte.u.Long = MiGetPteValueForProcess(Process, Address); @@ -362,7 +361,7 @@ if (Pte) { /* Atomically set the entry to zero and get the old value. */ - OldPte.u.Long = InterlockedExchange64(&Pte->u.Long, 0); + OldPte.u.Long = InterlockedExchange64((LONG64*)&Pte->u.Long, 0); if (OldPte.u.Hard.Valid) { Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/mm/freelist.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
============================================================================== --- branches/ros-amd64-bringup/reactos/ntoskrnl/mm/freelist.c [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/ntoskrnl/mm/freelist.c [iso-8859-1] Wed Mar 24 21:26:54 2010 @@ -27,14 +27,9 @@ // // ReactOS to NT Physical Page Descriptor Entry Legacy Mapping Definitions // -// REACTOS NT -// -#define RmapListHead AweReferenceCount -#define PHYSICAL_PAGE MMPFN -#define PPHYSICAL_PAGE PMMPFN - -/* The first array contains ReactOS PFNs, the second contains ARM3 PFNs */ -PPHYSICAL_PAGE MmPfnDatabase[2]; +typedef union +{ + MMPFN;// Pfn; struct { @@ -61,18 +56,22 @@ C_ASSERT(sizeof(PHYSICAL_PAGE) == sizeof(MMPFN)); -#define MiGetPfnEntry(Pfn) ((PPHYSICAL_PAGE)MiGetPfnEntry(Pfn)) +//#define MiGetPfnEntry(Pfn) ((PPHYSICAL_PAGE)MiGetPfnEntry(Pfn)) #define MiGetPfnEntryIndex(x) MiGetPfnEntryIndex((struct _MMPFN*)x) #define LockCount Flags.LockCount -PMMPFN MmPfnDatabase; -#define MmPfnDatabase ((PPHYSICAL_PAGE)MmPfnDatabase) - -#define MMPFN PHYSICAL_PAGE -#define PMMPFN PPHYSICAL_PAGE - -ULONG MmAvailablePages; -ULONG MmResidentAvailablePages; +/* The first array contains ReactOS PFNs, the second contains ARM3 PFNs */ +PMMPFN MmPfnDatabase[2]; +#define MmPfnDatabase ((PPHYSICAL_PAGE*)MmPfnDatabase) + +//#define MMPFN PHYSICAL_PAGE +//#define PMMPFN PPHYSICAL_PAGE + +/* The first array contains ReactOS PFNs, the second contains ARM3 PFNs */ +//PPHYSICAL_PAGE MmPfnDatabase[2]; + +PFN_NUMBER MmAvailablePages; +PFN_NUMBER MmResidentAvailablePages; SIZE_T MmTotalCommitLimit; SIZE_T MmTotalCommittedPages; @@ -108,7 +107,7 @@ RtlClearAllBits(&MiUserPfnBitMap); } -PFN_TYPE +PFN_NUMBER NTAPI MmGetLRUFirstUserPage(VOID) { @@ -371,7 +370,7 @@ PFN_NUMBER PageCount, LowPage, HighPage, SkipPages, PagesFound = 0, Page; PPFN_NUMBER MdlPage, LastMdlPage; KIRQL OldIrql; - PPHYSICAL_PAGE Pfn1; + PMMPFN Pfn1; INT LookForZeroedPages; ASSERT (KeGetCurrentIrql() <= APC_LEVEL); @@ -608,7 +607,7 @@ MmDumpPfnDatabase(VOID) { ULONG i; - PPHYSICAL_PAGE Pfn1; + PMMPFN Pfn1; PCHAR State = "????", Type = "Unknown"; KIRQL OldIrql; ULONG Totals[5] = {0}, FreePages = 0; @@ -646,7 +645,7 @@ State, Type, Pfn1->u3.e2.ReferenceCount, - Pfn1->RmapListHead); + ((PPHYSICAL_PAGE)Pfn1)->RmapListHead); } DbgPrint("Nonpaged Pool: %d pages\t[%d KB]\n", Totals[MC_NPPOOL], (Totals[MC_NPPOOL] << PAGE_SHIFT) / 1024); @@ -742,7 +741,7 @@ KIRQL oldIrql; oldIrql = KeAcquireQueuedSpinLock(LockQueuePfnLock); - MiGetPfnEntry(Pfn)->RmapListHead = (LONG_PTR)ListHead; + ((PPHYSICAL_PAGE)MiGetPfnEntry(Pfn))->RmapListHead = (LONG_PTR)ListHead; KeReleaseQueuedSpinLock(LockQueuePfnLock, oldIrql); } @@ -754,7 +753,7 @@ struct _MM_RMAP_ENTRY* ListHead; oldIrql = KeAcquireQueuedSpinLock(LockQueuePfnLock); - ListHead = (struct _MM_RMAP_ENTRY*)MiGetPfnEntry(Pfn)->RmapListHead; + ListHead = (struct _MM_RMAP_ENTRY*)((PPHYSICAL_PAGE)MiGetPfnEntry(Pfn))->RmapListHead; KeReleaseQueuedSpinLock(LockQueuePfnLock, oldIrql); return(ListHead); @@ -833,7 +832,7 @@ VOID NTAPI -MiSetConsumer(IN PFN_TYPE Pfn, +MiSetConsumer(IN PFN_NUMBER Pfn, IN ULONG Type) { MiGetPfnEntry(Pfn)->u3.e1.PageLocation = ActiveAndValid;
15 years, 1 month
1
0
0
0
[tkreuzer] 46402: [DDK/PSDK] - Update changes from header branch [NDK] - add KeTickCount for amd64 (HACK)
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Wed Mar 24 21:22:20 2010 New Revision: 46402 URL:
http://svn.reactos.org/svn/reactos?rev=46402&view=rev
Log: [DDK/PSDK] - Update changes from header branch [NDK] - add KeTickCount for amd64 (HACK) Modified: branches/ros-amd64-bringup/reactos/include/ddk/ntddk.h branches/ros-amd64-bringup/reactos/include/ddk/ntifs.h branches/ros-amd64-bringup/reactos/include/ddk/wdm.h branches/ros-amd64-bringup/reactos/include/ndk/amd64/ketypes.h branches/ros-amd64-bringup/reactos/include/psdk/ktmtypes.h branches/ros-amd64-bringup/reactos/include/psdk/ntdef.h Modified: branches/ros-amd64-bringup/reactos/include/ddk/ntddk.h URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/inclu…
============================================================================== --- branches/ros-amd64-bringup/reactos/include/ddk/ntddk.h [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/include/ddk/ntddk.h [iso-8859-1] Wed Mar 24 21:22:20 2010 @@ -3135,6 +3135,9 @@ ULONG64 LastExceptionFromRip; } CONTEXT; +#define PCR_MINOR_VERSION 1 +#define PCR_MAJOR_VERSION 1 + typedef struct _KPCR { _ANONYMOUS_UNION union @@ -3209,6 +3212,10 @@ #define PDE_TOP 0xFFFFF6FB7FFFFFFFULL #define PTE_TOP 0xFFFFF6FFFFFFFFFFULL +extern NTKERNELAPI PVOID MmHighestUserAddress; +extern NTKERNELAPI PVOID MmSystemRangeStart; +extern NTKERNELAPI ULONG64 MmUserProbeAddress; + #define MM_HIGHEST_USER_ADDRESS MmHighestUserAddress #define MM_SYSTEM_RANGE_START MmSystemRangeStart #define MM_USER_PROBE_ADDRESS MmUserProbeAddress @@ -3376,13 +3383,14 @@ /* Hardware Abstraction Layer Functions */ +#if (NTDDI_VERSION >= NTDDI_WIN2K) + #if defined(USE_DMA_MACROS) && !defined(_NTHAL_) && (defined(_NTDDK_) || defined(_NTDRIVER_)) || defined(_WDM_INCLUDED_) - - -#else - -#if (NTDDI_VERSION >= NTDDI_WIN2K) +/* Nothing here */ + +#else /* USE_DMA_MACROS ... */ + //DECLSPEC_DEPRECATED_DDK NTHALAPI VOID @@ -3448,16 +3456,9 @@ IN ULONG NumberOfMapRegisters, IN PDRIVER_CONTROL ExecutionRoutine); -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ - - -#endif - +#endif /* USE_DMA_MACROS ... */ #if !defined(NO_LEGACY_DRIVERS) - -#if (NTDDI_VERSION >= NTDDI_WIN2K) - NTHALAPI NTSTATUS NTAPI @@ -3507,12 +3508,7 @@ NTAPI HalMakeBeep( IN ULONG Frequency); - -#endif - #endif /* !defined(NO_LEGACY_DRIVERS) */ - -#if (NTDDI_VERSION >= NTDDI_WIN2K) NTHALAPI PADAPTER_OBJECT @@ -3601,7 +3597,7 @@ IN ULONG SectorSize, IN ULONG MBRTypeIdentifier, OUT PVOID *Buffer); -#endif +#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ #if (NTDDI_VERSION >= NTDDI_WIN7) @@ -3618,7 +3614,7 @@ HalFreeHardwareCounters( IN HANDLE CounterSetHandle); -#endif +#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ #if defined(_IA64_) #if (NTDDI_VERSION >= NTDDI_WIN2K) @@ -4137,7 +4133,6 @@ #if (NTDDI_VERSION >= NTDDI_WIN2K) - NTKERNELAPI VOID NTAPI @@ -4178,7 +4173,6 @@ IN ULONG BugCheckCode); - #if defined(SINGLE_GROUP_LEGACY_API) @@ -4210,15 +4204,17 @@ #if (NTDDI_VERSION >= NTDDI_WS03) + + NTKERNELAPI BOOLEAN NTAPI KeInvalidateAllCaches(VOID); - #endif /* (NTDDI_VERSION >= NTDDI_WS03) */ #if (NTDDI_VERSION >= NTDDI_WS03SP1) + NTKERNELAPI NTSTATUS NTAPI @@ -4242,6 +4238,7 @@ #if (NTDDI_VERSION >= NTDDI_VISTA) + #if defined(SINGLE_GROUP_LEGACY_API) NTKERNELAPI ULONG @@ -4254,7 +4251,7 @@ NTAPI KeQueryMaximumProcessorCount(VOID); -#endif +#endif /* SINGLE_GROUP_LEGACY_API */ #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ Modified: branches/ros-amd64-bringup/reactos/include/ddk/ntifs.h URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/inclu…
============================================================================== --- branches/ros-amd64-bringup/reactos/include/ddk/ntifs.h [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/include/ddk/ntifs.h [iso-8859-1] Wed Mar 24 21:22:20 2010 @@ -4689,7 +4689,7 @@ KeAcquireQueuedSpinLock( IN OUT KSPIN_LOCK_QUEUE_NUMBER Number); -NTHALAPI +_DECL_HAL_KE_IMPORT VOID FASTCALL KeReleaseQueuedSpinLock( Modified: branches/ros-amd64-bringup/reactos/include/ddk/wdm.h URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/inclu…
============================================================================== --- branches/ros-amd64-bringup/reactos/include/ddk/wdm.h [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/include/ddk/wdm.h [iso-8859-1] Wed Mar 24 21:22:20 2010 @@ -1694,7 +1694,7 @@ MmLargeSystem } MM_SYSTEMSIZE; -extern PBOOLEAN Mm64BitPhysicalAddress; +extern NTKERNELAPI BOOLEAN Mm64BitPhysicalAddress; extern PVOID MmBadPointer; @@ -7923,9 +7923,6 @@ return KfRaiseIrql(12); // SYNCH_LEVEL = IPI_LEVEL - 2 } -#define KeAcquireSpinLock(SpinLock, OldIrql) \ - *(OldIrql) = KeAcquireSpinLockRaiseToDpc(SpinLock) - FORCEINLINE PKTHREAD KeGetCurrentThread(VOID) @@ -9685,7 +9682,6 @@ #if (NTDDI_VERSION >= NTDDI_WIN2K) - #if defined(_NTDDK_) || defined(_NTIFS_) NTKERNELAPI VOID @@ -9734,7 +9730,6 @@ #endif /* defined(SINGLE_GROUP_LEGACY_API) */ #if !defined(_M_AMD64) - NTKERNELAPI ULONGLONG NTAPI @@ -9745,8 +9740,37 @@ NTAPI KeQuerySystemTime( OUT PLARGE_INTEGER CurrentTime); - #endif /* !_M_AMD64 */ + +#if !defined(_X86_) +NTKERNELAPI +KIRQL +NTAPI +KeAcquireSpinLockRaiseToDpc( + IN OUT PKSPIN_LOCK SpinLock); + +#define KeAcquireSpinLock(SpinLock, OldIrql) \ + *(OldIrql) = KeAcquireSpinLockRaiseToDpc(SpinLock) + +NTKERNELAPI +VOID +NTAPI +KeAcquireSpinLockAtDpcLevel( + IN OUT PKSPIN_LOCK SpinLock); + +NTKERNELAPI +VOID +NTAPI +KeReleaseSpinLock( + IN OUT PKSPIN_LOCK SpinLock, + IN KIRQL NewIrql); + +NTKERNELAPI +VOID +NTAPI +KeReleaseSpinLockFromDpcLevel( + IN OUT PKSPIN_LOCK SpinLock); +#endif /* !_X86_ */ #if defined(_X86_) && (defined(_WDM_INCLUDED_) || defined(WIN9X_COMPAT_SPINLOCK)) NTKERNELAPI @@ -10191,9 +10215,11 @@ KeTestSpinLock( IN PKSPIN_LOCK SpinLock); + #endif /* (NTDDI_VERSION >= NTDDI_WS03) */ #if (NTDDI_VERSION >= NTDDI_WS03SP1) + NTKERNELAPI BOOLEAN @@ -10255,6 +10281,7 @@ #endif /* (NTDDI_VERSION >= NTDDI_WS03SP1) */ #if (NTDDI_VERSION >= NTDDI_VISTA) + NTKERNELAPI VOID FASTCALL @@ -10298,7 +10325,7 @@ ULONG NTAPI KeQueryMaximumProcessorCount(VOID); -#endif +#endif /* SINGLE_GROUP_LEGACY_API */ #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ @@ -13270,6 +13297,8 @@ ExInterlockedFlushSList( IN OUT PSLIST_HEADER ListHead); +#endif /* !defined(_WIN64) */ + #if defined(_WIN2K_COMPAT_SLIST_USAGE) && defined(_X86_) NTKERNELAPI @@ -13300,12 +13329,14 @@ IN OUT PPAGED_LOOKASIDE_LIST Lookaside, IN PVOID Entry); -#else - +#else /* !_WIN2K_COMPAT_SLIST_USAGE */ + +#if !defined(_WIN64) #define ExInterlockedPopEntrySList(_ListHead, _Lock) \ InterlockedPopEntrySList(_ListHead) #define ExInterlockedPushEntrySList(_ListHead, _ListEntry, _Lock) \ InterlockedPushEntrySList(_ListHead, _ListEntry) +#endif static __inline PVOID @@ -13342,7 +13373,6 @@ #endif /* _WIN2K_COMPAT_SLIST_USAGE */ -#endif /* !defined(_WIN64) */ /* ERESOURCE_THREAD * ExGetCurrentResourceThread( @@ -14565,8 +14595,9 @@ #endif /* Hardware Abstraction Layer Functions */ +#if (NTDDI_VERSION >= NTDDI_WIN2K) + #if defined(USE_DMA_MACROS) && !defined(_NTHAL_) && (defined(_NTDDK_) || defined(_NTDRIVER_)) || defined(_WDM_INCLUDED_) - FORCEINLINE PVOID @@ -14632,9 +14663,8 @@ return alignment; } - - -#endif +#endif /* USE_DMA_MACROS ... */ +#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ #ifndef _NTTMAPI_ #define _NTTMAPI_ Modified: branches/ros-amd64-bringup/reactos/include/ndk/amd64/ketypes.h URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/inclu…
============================================================================== --- branches/ros-amd64-bringup/reactos/include/ndk/amd64/ketypes.h [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/include/ndk/amd64/ketypes.h [iso-8859-1] Wed Mar 24 21:22:20 2010 @@ -877,5 +877,8 @@ return (struct _KPRCB *)__readgsqword(FIELD_OFFSET(KIPCR, CurrentPrcb)); } -#endif -#endif +// HACK +extern NTKERNELAPI volatile KSYSTEM_TIME KeTickCount; + +#endif +#endif Modified: branches/ros-amd64-bringup/reactos/include/psdk/ktmtypes.h URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/inclu…
============================================================================== --- branches/ros-amd64-bringup/reactos/include/psdk/ktmtypes.h [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/include/psdk/ktmtypes.h [iso-8859-1] Wed Mar 24 21:22:20 2010 @@ -72,7 +72,10 @@ #define MAX_TRANSACTION_DESCRIPTION_LENGTH 64 #define MAX_RESOURCEMANAGER_DESCRIPTION_LENGTH 64 +#ifndef _WDMDDK_ typedef GUID UOW, *PUOW; +#endif + typedef GUID CRM_PROTOCOL_ID, *PCRM_PROTOCOL_ID; typedef ULONG NOTIFICATION_MASK; typedef ULONG SAVEPOINT_ID, *PSAVEPOINT_ID; Modified: branches/ros-amd64-bringup/reactos/include/psdk/ntdef.h URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/inclu…
============================================================================== --- branches/ros-amd64-bringup/reactos/include/psdk/ntdef.h [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/include/psdk/ntdef.h [iso-8859-1] Wed Mar 24 21:22:20 2010 @@ -1,15 +1,13 @@ -#ifndef _NTDEF_H -#define _NTDEF_H - -// -// Dependencies -// +#ifndef _NTDEF_ +#define _NTDEF_ + +/* Dependencies */ #include <ctype.h> #include <basetsd.h> #include <excpt.h> #include <sdkddkver.h> -// FIXME: Should we include these here? +// FIXME: Shouldn't be included! #include <stdarg.h> #include <string.h> @@ -24,11 +22,8 @@ typedef unsigned long POINTER_64; // FIXME! HACK!!! - - -// -// Pseudo Modifiers for Input Parameters -// +/* Pseudo Modifiers for Input Parameters */ + #ifndef IN #define IN #endif @@ -54,29 +49,21 @@ #endif -// -// Defines the "size" of an any-size array -// +/* Defines the "size" of an any-size array */ #ifndef ANYSIZE_ARRAY #define ANYSIZE_ARRAY 1 #endif -// -// Constant modifier -// +/* Constant modifier */ #ifndef CONST #define CONST const #endif -// -// TRUE/FALSE -// +/* TRUE/FALSE */ #define FALSE 0 #define TRUE 1 -// -// NULL/NULL64 -// +/* NULL/NULL64 */ #ifndef NULL #ifdef __cplusplus #define NULL 0 @@ -85,22 +72,8 @@ #define NULL ((void *)0) #define NULL64 ((void * POINTER_64)0) #endif -#endif // NULL - -typedef enum _EVENT_TYPE { - NotificationEvent, - SynchronizationEvent -} EVENT_TYPE; - -typedef enum _TIMER_TYPE { - NotificationTimer, - SynchronizationTimer -} TIMER_TYPE; - -typedef enum _WAIT_TYPE { - WaitAll, - WaitAny -} WAIT_TYPE; +#endif /* NULL */ + // // FIXME @@ -171,35 +144,27 @@ #define ARGUMENT_PRESENT(ArgumentPointer) \ ((CHAR*)((ULONG_PTR)(ArgumentPointer)) != (CHAR*)NULL) -// -// Returns the base address of a structure from a structure member -// +/* Returns the base address of a structure from a structure member */ #ifndef CONTAINING_RECORD #define CONTAINING_RECORD(address, type, field) \ ((type *)(((ULONG_PTR)address) - (ULONG_PTR)(&(((type *)0)->field)))) #endif -// -// Returns the byte offset of the specified structure's member -// +/* Returns the byte offset of the specified structure's member */ #ifndef __GNUC__ #define FIELD_OFFSET(Type, Field) ((LONG)(LONG_PTR)&(((Type*) 0)->Field)) #else #define FIELD_OFFSET(Type, Field) __builtin_offsetof(Type, Field) #endif -// -// Returns the type's alignment -// +/* Returns the type's alignment */ #if defined(_MSC_VER) && (_MSC_VER >= 1300) #define TYPE_ALIGNMENT(t) __alignof(t) #else #define TYPE_ALIGNMENT(t) FIELD_OFFSET( struct { char x; t test; }, test ) #endif -// -// Calling Conventions -// +/* Calling Conventions */ #if defined(_M_IX86) #define FASTCALL __fastcall #else @@ -214,14 +179,11 @@ #define DDKAPI __stdcall // Use NTAPI instead #define DDKCDECLAPI __cdecl // Just use __cdecl -// -// Import and Export Specifiers -// - -// Done the same way as in windef.h for now +/* Import and Export Specifiers */ + +/* Done the same way as in windef.h for now */ #define DECLSPEC_IMPORT __declspec(dllimport) #define DECLSPEC_NORETURN __declspec(noreturn) - #ifndef DECLSPEC_ADDRSAFE #if (_MSC_VER >= 1200) && (defined(_M_ALPHA) || defined(_M_AXP64)) @@ -243,9 +205,7 @@ #endif #endif -// -// Inlines -// +/* Inlines */ #ifndef FORCEINLINE #if (_MSC_VER >= 1200) #define FORCEINLINE __forceinline @@ -272,9 +232,7 @@ #define NTAPI_INLINE #endif -// -// Use to specify structure alignment -// +/* Use to specify structure alignment */ #ifndef DECLSPEC_ALIGN #if defined(_MSC_VER) && (_MSC_VER >= 1300) && !defined(MIDL_PASS) #define DECLSPEC_ALIGN(x) __declspec(align(x)) @@ -285,21 +243,13 @@ #endif #endif - - -// -// Use to silence unused variable warnings when it is intentional -// +/* Use to silence unused variable warnings when it is intentional */ #define UNREFERENCED_PARAMETER(P) {(P)=(P);} #define UNREFERENCED_LOCAL_VARIABLE(L) {(L)=(L);} #define DBG_UNREFERENCED_PARAMETER(P) #define DBG_UNREFERENCED_LOCAL_VARIABLE(L) - - -// -// min/max helper macros -// +/* min/max helper macros */ #ifndef NOMINMAX #ifndef min @@ -310,25 +260,17 @@ #define max(a,b) (((a) > (b)) ? (a) : (b)) #endif -#endif // NOMINMAX - - - -// -// Tell windef.h that we have defined some basic types -// +#endif /* NOMINMAX */ + +/* Tell windef.h that we have defined some basic types */ #define BASETYPES -// -// Void Pointers -// +/* Void Pointers */ typedef void *PVOID; //typedef void * POINTER_64 PVOID64; typedef PVOID PVOID64; // FIXME! -// -// Handle Type -// +/* Handle Type */ #ifdef STRICT typedef void *HANDLE; #define DECLARE_HANDLE(n) typedef struct n##__{int i;}*n @@ -338,9 +280,7 @@ #endif typedef HANDLE *PHANDLE; -// -// Upper-Case Versions of Some Standard C Types -// +/* Upper-Case Versions of Some Standard C Types */ #ifndef VOID #define VOID void typedef char CHAR; @@ -352,47 +292,25 @@ #endif typedef double DOUBLE; -// -// Used to store a non-float 8 byte aligned structure -// -typedef struct _QUAD -{ - _ANONYMOUS_UNION union - { - __GNU_EXTENSION __int64 UseThisFieldToCopy; - double DoNotUseThisField; - }; -} QUAD, *PQUAD, UQUAD, *PUQUAD; - - -// -// Unsigned Types -// +/* Unsigned Types */ typedef unsigned char UCHAR, *PUCHAR; typedef unsigned short USHORT, *PUSHORT; typedef unsigned long ULONG, *PULONG; typedef CONST UCHAR *PCUCHAR; typedef CONST USHORT *PCUSHORT; typedef CONST ULONG *PCULONG; - typedef UCHAR FCHAR; typedef USHORT FSHORT; typedef ULONG FLONG; -typedef UCHAR BOOLEAN; -typedef BOOLEAN *PBOOLEAN; - +typedef UCHAR BOOLEAN, *PBOOLEAN; typedef ULONG LOGICAL; typedef ULONG *PLOGICAL; -// -// Signed Types -// +/* Signed Types */ typedef SHORT *PSHORT; typedef LONG *PLONG; - typedef LONG NTSTATUS; typedef NTSTATUS *PNTSTATUS; - typedef signed char SCHAR; typedef SCHAR *PSCHAR; @@ -401,22 +319,15 @@ typedef LONG HRESULT; #endif -// -// 64-bit types -// +/* 64-bit types */ __GNU_EXTENSION typedef __int64 LONGLONG, *PLONGLONG; __GNU_EXTENSION typedef unsigned __int64 ULONGLONG, *PULONGLONG; typedef ULONGLONG DWORDLONG, *PDWORDLONG; -// -// Update Sequence Number -// +/* Update Sequence Number */ typedef LONGLONG USN; - -// -// ANSI (Multi-byte Character) types -// +/* ANSI (Multi-byte Character) types */ typedef CHAR *PCHAR, *LPCH, *PCH; typedef CONST CHAR *LPCCH, *PCCH; typedef CHAR *NPSTR, *LPSTR, *PSTR; @@ -425,15 +336,11 @@ typedef CONST CHAR *LPCSTR, *PCSTR; typedef PCSTR *PZPCSTR; -// -// Pointer to an Asciiz string -// +/* Pointer to an Asciiz string */ typedef CHAR *PSZ; typedef CONST char *PCSZ; -// -// UNICODE (Wide Character) types -// +/* UNICODE (Wide Character) types */ typedef wchar_t WCHAR; typedef WCHAR *PWCHAR, *LPWCH, *PWCH; typedef CONST WCHAR *LPCWCH, *PCWCH; @@ -445,25 +352,27 @@ typedef PCWSTR *PZPCWSTR; typedef CONST WCHAR UNALIGNED *LPCUWSTR, *PCUWSTR; -// -// Cardinal Data Types -// +/* Cardinal Data Types */ typedef char CCHAR, *PCCHAR; typedef short CSHORT, *PCSHORT; typedef ULONG CLONG, *PCLONG; -// -// NLS basics (Locale and Language Ids) -// +/* NLS basics (Locale and Language Ids) */ typedef ULONG LCID; typedef PULONG PLCID; typedef USHORT LANGID; - - -// -// Large Integer Unions -// +/* Used to store a non-float 8 byte aligned structure */ +typedef struct _QUAD +{ + _ANONYMOUS_UNION union + { + __GNU_EXTENSION __int64 UseThisFieldToCopy; + double DoNotUseThisField; + } DUMMYUNIONNAME; +} QUAD, *PQUAD, UQUAD, *PUQUAD; + +/* Large Integer Unions */ #if defined(MIDL_PASS) typedef struct _LARGE_INTEGER { #else @@ -478,7 +387,7 @@ ULONG LowPart; LONG HighPart; } u; -#endif //MIDL_PASS +#endif /* MIDL_PASS */ LONGLONG QuadPart; } LARGE_INTEGER, *PLARGE_INTEGER; @@ -496,40 +405,26 @@ ULONG LowPart; ULONG HighPart; } u; -#endif //MIDL_PASS +#endif /* MIDL_PASS */ ULONGLONG QuadPart; } ULARGE_INTEGER, *PULARGE_INTEGER; -// -// Physical Addresses are always treated as 64-bit wide -// +/* Physical Addresses are always treated as 64-bit wide */ typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS; - - -// -// Locally Unique Identifier -// +/* Locally Unique Identifier */ typedef struct _LUID { ULONG LowPart; LONG HighPart; } LUID, *PLUID; - - -// -// Native API Return Value Macros -// +/* Native API Return Value Macros */ #define NT_SUCCESS(Status) (((NTSTATUS)(Status)) >= 0) #define NT_INFORMATION(Status) ((((ULONG)(Status)) >> 30) == 1) #define NT_WARNING(Status) ((((ULONG)(Status)) >> 30) == 2) #define NT_ERROR(Status) ((((ULONG)(Status)) >> 30) == 3) - - -// -// String Types -// +/* String Types */ typedef struct _UNICODE_STRING { USHORT Length; USHORT MaximumLength; @@ -575,9 +470,7 @@ UNICODE_STRING64, *PUNICODE_STRING64, ANSI_STRING64, *PANSI_STRING64; -// -// LangID and NLS -// +/* LangID and NLS */ #define MAKELANGID(p, s) ((((USHORT)(s)) << 10) | (USHORT)(p)) #define PRIMARYLANGID(lgid) ((USHORT)(lgid) & 0x3ff) #define SUBLANGID(lgid) ((USHORT)(lgid) >> 10) @@ -594,10 +487,7 @@ #define SORTVERSIONFROMLCID(lcid) ((USHORT)((((ULONG)(lcid)) >> 20) & 0xf)) - -// -// Object Attributes -// +/* Object Attributes */ typedef struct _OBJECT_ATTRIBUTES { ULONG Length; HANDLE RootDirectory; @@ -608,9 +498,7 @@ } OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES; typedef CONST OBJECT_ATTRIBUTES *PCOBJECT_ATTRIBUTES; -// -// Values for the Attributes member -// +/* Values for the Attributes member */ #define OBJ_INHERIT 0x00000002 #define OBJ_PERMANENT 0x00000010 #define OBJ_EXCLUSIVE 0x00000020 @@ -621,9 +509,7 @@ #define OBJ_FORCE_ACCESS_CHECK 0x00000400 #define OBJ_VALID_ATTRIBUTES 0x000007F2 -// -// Helper Macro -// +/* Helper Macro */ #define InitializeObjectAttributes(p,n,a,r,s) { \ (p)->Length = sizeof(OBJECT_ATTRIBUTES); \ (p)->RootDirectory = (r); \ @@ -633,22 +519,29 @@ (p)->SecurityQualityOfService = NULL; \ } - - -// -// Product Types -// +/* Product Types */ typedef enum _NT_PRODUCT_TYPE { NtProductWinNt = 1, NtProductLanManNt, NtProductServer } NT_PRODUCT_TYPE, *PNT_PRODUCT_TYPE; - - -// -// Doubly Linked Lists -// +typedef enum _EVENT_TYPE { + NotificationEvent, + SynchronizationEvent +} EVENT_TYPE; + +typedef enum _TIMER_TYPE { + NotificationTimer, + SynchronizationTimer +} TIMER_TYPE; + +typedef enum _WAIT_TYPE { + WaitAll, + WaitAny +} WAIT_TYPE; + +/* Doubly Linked Lists */ typedef struct _LIST_ENTRY { struct _LIST_ENTRY *Flink; struct _LIST_ENTRY *Blink; @@ -666,13 +559,10 @@ ULONGLONG Blink; } LIST_ENTRY64, *PLIST_ENTRY64; -// -// Singly Linked Lists -// +/* Singly Linked Lists */ typedef struct _SINGLE_LIST_ENTRY { struct _SINGLE_LIST_ENTRY *Next; } SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY; - typedef struct _PROCESSOR_NUMBER { USHORT Group; @@ -681,16 +571,19 @@ } PROCESSOR_NUMBER, *PPROCESSOR_NUMBER; typedef EXCEPTION_DISPOSITION -(DDKAPI *PEXCEPTION_ROUTINE)( +(NTAPI *PEXCEPTION_ROUTINE)( IN struct _EXCEPTION_RECORD *ExceptionRecord, IN PVOID EstablisherFrame, IN OUT struct _CONTEXT *ContextRecord, IN OUT PVOID DispatcherContext); - -// -// Helper Macros -// +typedef struct _GROUP_AFFINITY { + KAFFINITY Mask; + USHORT Group; + USHORT Reserved[3]; +} GROUP_AFFINITY, *PGROUP_AFFINITY; + +/* Helper Macros */ #define RTL_CONSTANT_STRING(s) { sizeof(s)-sizeof((s)[0]), sizeof(s), s } #define RTL_FIELD_SIZE(type, field) (sizeof(((type *)0)->field)) @@ -704,11 +597,7 @@ #endif #define ARRAYSIZE(A) RTL_NUMBER_OF_V2(A) - - -// -// Type Limits -// +/* Type Limits */ #define MINCHAR 0x80 #define MAXCHAR 0x7f #define MINSHORT 0x8000 @@ -720,29 +609,17 @@ #define MAXULONG 0xffffffff #define MAXLONGLONG (0x7fffffffffffffffLL) - - -// -// Multiplication and Shift Operations -// +/* Multiplication and Shift Operations */ #define Int32x32To64(a,b) ((LONGLONG)(a)*(LONGLONG)(b)) #define UInt32x32To64(a,b) ((DWORDLONG)(a)*(DWORDLONG)(b)) #define Int64ShllMod32(a,b) ((DWORDLONG)(a)<<(b)) #define Int64ShraMod32(a,b) ((LONGLONG)(a)>>(b)) #define Int64ShrlMod32(a,b) ((DWORDLONG)(a)>>(b)) - - -// -// C_ASSERT Definition -// +/* C_ASSERT Definition */ #define C_ASSERT(expr) extern char (*c_assert(void)) [(expr) ? 1 : -1] - - -// -// Primary language IDs. -// +/* Primary language IDs. */ #define LANG_NEUTRAL 0x00 #define LANG_INVARIANT 0x7f @@ -873,6 +750,4 @@ #define LANG_YORUBA 0x6a #define LANG_ZULU 0x35 - - -#endif /* _NTDEF_H */ +#endif /* _NTDEF_ */
15 years, 1 month
1
0
0
0
[tkreuzer] 46401: [NTIFS] - KeReleaseQueuedSpinLock [XDK] - reorder some #if's - fix Mm64BitPhysicalAddress
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Wed Mar 24 21:19:04 2010 New Revision: 46401 URL:
http://svn.reactos.org/svn/reactos?rev=46401&view=rev
Log: [NTIFS] - KeReleaseQueuedSpinLock [XDK] - reorder some #if's - fix Mm64BitPhysicalAddress Modified: branches/header-work/include/ddk/ntifs.h branches/header-work/include/xdk/halfuncs.h branches/header-work/include/xdk/mmtypes.h Modified: branches/header-work/include/ddk/ntifs.h URL:
http://svn.reactos.org/svn/reactos/branches/header-work/include/ddk/ntifs.h…
============================================================================== --- branches/header-work/include/ddk/ntifs.h [iso-8859-1] (original) +++ branches/header-work/include/ddk/ntifs.h [iso-8859-1] Wed Mar 24 21:19:04 2010 @@ -4689,7 +4689,7 @@ KeAcquireQueuedSpinLock( IN OUT KSPIN_LOCK_QUEUE_NUMBER Number); -NTHALAPI +_DECL_HAL_KE_IMPORT VOID FASTCALL KeReleaseQueuedSpinLock( Modified: branches/header-work/include/xdk/halfuncs.h URL:
http://svn.reactos.org/svn/reactos/branches/header-work/include/xdk/halfunc…
============================================================================== --- branches/header-work/include/xdk/halfuncs.h [iso-8859-1] (original) +++ branches/header-work/include/xdk/halfuncs.h [iso-8859-1] Wed Mar 24 21:19:04 2010 @@ -1,7 +1,8 @@ /* Hardware Abstraction Layer Functions */ +#if (NTDDI_VERSION >= NTDDI_WIN2K) + #if defined(USE_DMA_MACROS) && !defined(_NTHAL_) && (defined(_NTDDK_) || defined(_NTDRIVER_)) || defined(_WDM_INCLUDED_) - $if (_WDMDDK_) FORCEINLINE @@ -69,12 +70,12 @@ } $endif - $if (_NTDDK_) -#else - -#if (NTDDI_VERSION >= NTDDI_WIN2K) +/* Nothing here */ + +#else /* USE_DMA_MACROS ... */ + //DECLSPEC_DEPRECATED_DDK NTHALAPI VOID @@ -140,18 +141,11 @@ IN ULONG NumberOfMapRegisters, IN PDRIVER_CONTROL ExecutionRoutine); -#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ - -$endif - -#endif - +$endif /* _NTDDK_ */ +#endif /* USE_DMA_MACROS ... */ $if (_NTDDK_) #if !defined(NO_LEGACY_DRIVERS) - -#if (NTDDI_VERSION >= NTDDI_WIN2K) - NTHALAPI NTSTATUS NTAPI @@ -201,12 +195,7 @@ NTAPI HalMakeBeep( IN ULONG Frequency); - -#endif - #endif /* !defined(NO_LEGACY_DRIVERS) */ - -#if (NTDDI_VERSION >= NTDDI_WIN2K) NTHALAPI PADAPTER_OBJECT @@ -284,7 +273,9 @@ IN PSCATTER_GATHER_LIST ScatterGather, IN BOOLEAN WriteToDevice); +$endif /* _NTDDK_ */ #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ +$if (_NTDDK_) #if (NTDDI_VERSION >= NTDDI_WINXP) NTKERNELAPI @@ -295,7 +286,7 @@ IN ULONG SectorSize, IN ULONG MBRTypeIdentifier, OUT PVOID *Buffer); -#endif +#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ #if (NTDDI_VERSION >= NTDDI_WIN7) @@ -312,7 +303,7 @@ HalFreeHardwareCounters( IN HANDLE CounterSetHandle); -#endif +#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ #if defined(_IA64_) #if (NTDDI_VERSION >= NTDDI_WIN2K) @@ -351,5 +342,5 @@ #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ - -$endif +$endif /* _NTDDK_ */ + Modified: branches/header-work/include/xdk/mmtypes.h URL:
http://svn.reactos.org/svn/reactos/branches/header-work/include/xdk/mmtypes…
============================================================================== --- branches/header-work/include/xdk/mmtypes.h [iso-8859-1] (original) +++ branches/header-work/include/xdk/mmtypes.h [iso-8859-1] Wed Mar 24 21:19:04 2010 @@ -142,7 +142,7 @@ MmLargeSystem } MM_SYSTEMSIZE; -extern PBOOLEAN Mm64BitPhysicalAddress; +extern NTKERNELAPI BOOLEAN Mm64BitPhysicalAddress; extern PVOID MmBadPointer; $endif /* _WDMDDK_ */
15 years, 1 month
1
0
0
0
[janderwald] 46400: [KSPROXY] - Load ksproxy plugins for input / output pins
by janderwald@svn.reactos.org
Author: janderwald Date: Wed Mar 24 21:05:43 2010 New Revision: 46400 URL:
http://svn.reactos.org/svn/reactos?rev=46400&view=rev
Log: [KSPROXY] - Load ksproxy plugins for input / output pins Modified: trunk/reactos/dll/directx/ksproxy/input_pin.cpp trunk/reactos/dll/directx/ksproxy/output_pin.cpp Modified: trunk/reactos/dll/directx/ksproxy/input_pin.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/ksproxy/input_…
============================================================================== --- trunk/reactos/dll/directx/ksproxy/input_pin.cpp [iso-8859-1] (original) +++ trunk/reactos/dll/directx/ksproxy/input_pin.cpp [iso-8859-1] Wed Mar 24 21:05:43 2010 @@ -62,6 +62,8 @@ public ISpecifyPropertyPages { public: + typedef std::vector<IUnknown *>ProxyPluginVector; + STDMETHODIMP QueryInterface( REFIID InterfaceId, PVOID* Interface); STDMETHODIMP_(ULONG) AddRef() @@ -170,6 +172,8 @@ HRESULT STDMETHODCALLTYPE CheckFormat(const AM_MEDIA_TYPE *pmt); HRESULT STDMETHODCALLTYPE CreatePin(const AM_MEDIA_TYPE *pmt); HRESULT STDMETHODCALLTYPE CreatePinHandle(PKSPIN_MEDIUM Medium, PKSPIN_INTERFACE Interface, const AM_MEDIA_TYPE *pmt); + HRESULT STDMETHODCALLTYPE GetSupportedSets(LPGUID * pOutGuid, PULONG NumGuids); + HRESULT STDMETHODCALLTYPE LoadProxyPlugins(LPGUID pGuids, ULONG NumGuids); CInputPin(IBaseFilter * ParentFilter, LPCWSTR PinName, ULONG PinId, KSPIN_COMMUNICATION Communication); virtual ~CInputPin(){}; @@ -195,6 +199,7 @@ LPWSTR m_FilterName; FRAMING_PROP m_FramingProp[4]; PKSALLOCATOR_FRAMING_EX m_FramingEx[4]; + ProxyPluginVector m_Plugins; }; CInputPin::CInputPin( @@ -215,7 +220,8 @@ m_KsAllocatorEx(0), m_PipeAllocatorFlag(0), m_bPinBusCacheInitialized(0), - m_FilterName(0) + m_FilterName(0), + m_Plugins() { ZeroMemory(m_FramingProp, sizeof(m_FramingProp)); ZeroMemory(m_FramingEx, sizeof(m_FramingEx)); @@ -1614,6 +1620,33 @@ CopyMemory(m_MediaFormat.pbFormat, pmt->pbFormat, pmt->cbFormat); } + LPGUID pGuid; + ULONG NumGuids = 0; + + // get all supported sets + hr = GetSupportedSets(&pGuid, &NumGuids); + if (FAILED(hr)) + { +#ifdef KSPROXY_TRACE + OutputDebugStringW(L"CInputPin::CreatePinHandle GetSupportedSets failed\n"); +#endif + return hr; + } + + // load all proxy plugins + hr = LoadProxyPlugins(pGuid, NumGuids); + if (FAILED(hr)) + { +#ifdef KSPROXY_TRACE + OutputDebugStringW(L"CInputPin::CreatePinHandle LoadProxyPlugins failed\n"); +#endif + return hr; + } + + // free sets + CoTaskMemFree(pGuid); + + //TODO // connect pin pipes @@ -1623,6 +1656,137 @@ CoTaskMemFree(PinConnect); return hr; +} + +HRESULT +STDMETHODCALLTYPE +CInputPin::GetSupportedSets( + LPGUID * pOutGuid, + PULONG NumGuids) +{ + KSPROPERTY Property; + LPGUID pGuid; + ULONG NumProperty = 0; + ULONG NumMethods = 0; + ULONG NumEvents = 0; + ULONG Length; + ULONG BytesReturned; + HRESULT hr; + + Property.Set = GUID_NULL; + Property.Id = 0; + Property.Flags = KSPROPERTY_TYPE_SETSUPPORT; + + KsSynchronousDeviceControl(m_hPin, IOCTL_KS_PROPERTY, (PVOID)&Property, sizeof(KSPROPERTY), NULL, 0, &NumProperty); + KsSynchronousDeviceControl(m_hPin, IOCTL_KS_METHOD, (PVOID)&Property, sizeof(KSPROPERTY), NULL, 0, &NumMethods); + KsSynchronousDeviceControl(m_hPin, IOCTL_KS_ENABLE_EVENT, (PVOID)&Property, sizeof(KSPROPERTY), NULL, 0, &NumEvents); + + Length = NumProperty + NumMethods + NumEvents; + + // allocate guid buffer + pGuid = (LPGUID)CoTaskMemAlloc(Length); + if (!pGuid) + { + // failed + return E_OUTOFMEMORY; + } + + NumProperty /= sizeof(GUID); + NumMethods /= sizeof(GUID); + NumEvents /= sizeof(GUID); + + // get all properties + hr = KsSynchronousDeviceControl(m_hPin, IOCTL_KS_PROPERTY, (PVOID)&Property, sizeof(KSPROPERTY), (PVOID)pGuid, Length, &BytesReturned); + if (FAILED(hr)) + { + CoTaskMemFree(pGuid); + return E_FAIL; + } + Length -= BytesReturned; + + // get all methods + if (Length) + { + hr = KsSynchronousDeviceControl(m_hPin, IOCTL_KS_METHOD, (PVOID)&Property, sizeof(KSPROPERTY), (PVOID)&pGuid[NumProperty], Length, &BytesReturned); + if (FAILED(hr)) + { + CoTaskMemFree(pGuid); + return E_FAIL; + } + Length -= BytesReturned; + } + + // get all events + if (Length) + { + hr = KsSynchronousDeviceControl(m_hPin, IOCTL_KS_ENABLE_EVENT, (PVOID)&Property, sizeof(KSPROPERTY), (PVOID)&pGuid[NumProperty+NumMethods], Length, &BytesReturned); + if (FAILED(hr)) + { + CoTaskMemFree(pGuid); + return E_FAIL; + } + Length -= BytesReturned; + } + +#ifdef KSPROXY_TRACE + WCHAR Buffer[200]; + swprintf(Buffer, L"NumProperty %lu NumMethods %lu NumEvents %lu\n", NumProperty, NumMethods, NumEvents); + OutputDebugStringW(Buffer); +#endif + + *pOutGuid = pGuid; + *NumGuids = NumProperty+NumEvents+NumMethods; + return S_OK; +} + +HRESULT +STDMETHODCALLTYPE +CInputPin::LoadProxyPlugins( + LPGUID pGuids, + ULONG NumGuids) +{ + ULONG Index; + LPOLESTR pStr; + HKEY hKey, hSubKey; + HRESULT hr; + IUnknown * pUnknown; + + if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SYSTEM\\CurrentControlSet\\Control\\MediaInterfaces", 0, KEY_READ, &hKey) != ERROR_SUCCESS) + { + OutputDebugStringW(L"CInputPin::LoadProxyPlugins failed to open MediaInterfaces key\n"); + return E_FAIL; + } + + // enumerate all sets + for(Index = 0; Index < NumGuids; Index++) + { + // convert to string + hr = StringFromCLSID(pGuids[Index], &pStr); + if (FAILED(hr)) + return E_FAIL; + + // now try open class key + if (RegOpenKeyExW(hKey, pStr, 0, KEY_READ, &hSubKey) != ERROR_SUCCESS) + { + // no plugin for that set exists + CoTaskMemFree(pStr); + continue; + } + + // try load plugin + hr = CoCreateInstance(pGuids[Index], (IBaseFilter*)this, CLSCTX_INPROC_SERVER, IID_IUnknown, (void**)&pUnknown); + if (SUCCEEDED(hr)) + { + // store plugin + m_Plugins.push_back(pUnknown); + } + // close key + RegCloseKey(hSubKey); + } + + // close media interfaces key + RegCloseKey(hKey); + return S_OK; } HRESULT Modified: trunk/reactos/dll/directx/ksproxy/output_pin.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/ksproxy/output…
============================================================================== --- trunk/reactos/dll/directx/ksproxy/output_pin.cpp [iso-8859-1] (original) +++ trunk/reactos/dll/directx/ksproxy/output_pin.cpp [iso-8859-1] Wed Mar 24 21:05:43 2010 @@ -26,6 +26,8 @@ { public: + typedef std::vector<IUnknown *>ProxyPluginVector; + STDMETHODIMP QueryInterface( REFIID InterfaceId, PVOID* Interface); STDMETHODIMP_(ULONG) AddRef() @@ -162,6 +164,8 @@ HRESULT STDMETHODCALLTYPE CreatePinHandle(PKSPIN_MEDIUM Medium, PKSPIN_INTERFACE Interface, const AM_MEDIA_TYPE *pmt); HRESULT WINAPI IoProcessRoutine(); HRESULT WINAPI InitializeIOThread(); + HRESULT STDMETHODCALLTYPE GetSupportedSets(LPGUID * pOutGuid, PULONG NumGuids); + HRESULT STDMETHODCALLTYPE LoadProxyPlugins(LPGUID pGuids, ULONG NumGuids); friend DWORD WINAPI COutputPin_IoThreadStartup(LPVOID lpParameter); friend HRESULT STDMETHODCALLTYPE COutputPin_SetState(IPin * Pin, KSSTATE State); @@ -199,6 +203,8 @@ KSSTATE m_State; CRITICAL_SECTION m_Lock; + + ProxyPluginVector m_Plugins; }; COutputPin::~COutputPin() @@ -229,7 +235,8 @@ m_hStopEvent(0), m_StopInProgress(0), m_IoThreadStarted(0), - m_State(KSSTATE_STOP) + m_State(KSSTATE_STOP), + m_Plugins() { HRESULT hr; IKsObject * KsObjectParent; @@ -2165,6 +2172,33 @@ DebugBreak(); } + LPGUID pGuid; + ULONG NumGuids = 0; + + // get all supported sets + hr = GetSupportedSets(&pGuid, &NumGuids); + if (FAILED(hr)) + { +#ifdef KSPROXY_TRACE + OutputDebugStringW(L"CInputPin::CreatePinHandle GetSupportedSets failed\n"); +#endif + return hr; + } + + // load all proxy plugins + hr = LoadProxyPlugins(pGuid, NumGuids); + if (FAILED(hr)) + { +#ifdef KSPROXY_TRACE + OutputDebugStringW(L"CInputPin::CreatePinHandle LoadProxyPlugins failed\n"); +#endif + return hr; + } + + // free sets + CoTaskMemFree(pGuid); + + //TODO // connect pin pipes @@ -2174,6 +2208,138 @@ return hr; } + +HRESULT +STDMETHODCALLTYPE +COutputPin::GetSupportedSets( + LPGUID * pOutGuid, + PULONG NumGuids) +{ + KSPROPERTY Property; + LPGUID pGuid; + ULONG NumProperty = 0; + ULONG NumMethods = 0; + ULONG NumEvents = 0; + ULONG Length; + ULONG BytesReturned; + HRESULT hr; + + Property.Set = GUID_NULL; + Property.Id = 0; + Property.Flags = KSPROPERTY_TYPE_SETSUPPORT; + + KsSynchronousDeviceControl(m_hPin, IOCTL_KS_PROPERTY, (PVOID)&Property, sizeof(KSPROPERTY), NULL, 0, &NumProperty); + KsSynchronousDeviceControl(m_hPin, IOCTL_KS_METHOD, (PVOID)&Property, sizeof(KSPROPERTY), NULL, 0, &NumMethods); + KsSynchronousDeviceControl(m_hPin, IOCTL_KS_ENABLE_EVENT, (PVOID)&Property, sizeof(KSPROPERTY), NULL, 0, &NumEvents); + + Length = NumProperty + NumMethods + NumEvents; + + // allocate guid buffer + pGuid = (LPGUID)CoTaskMemAlloc(Length); + if (!pGuid) + { + // failed + return E_OUTOFMEMORY; + } + + NumProperty /= sizeof(GUID); + NumMethods /= sizeof(GUID); + NumEvents /= sizeof(GUID); + + // get all properties + hr = KsSynchronousDeviceControl(m_hPin, IOCTL_KS_PROPERTY, (PVOID)&Property, sizeof(KSPROPERTY), (PVOID)pGuid, Length, &BytesReturned); + if (FAILED(hr)) + { + CoTaskMemFree(pGuid); + return E_FAIL; + } + Length -= BytesReturned; + + // get all methods + if (Length) + { + hr = KsSynchronousDeviceControl(m_hPin, IOCTL_KS_METHOD, (PVOID)&Property, sizeof(KSPROPERTY), (PVOID)&pGuid[NumProperty], Length, &BytesReturned); + if (FAILED(hr)) + { + CoTaskMemFree(pGuid); + return E_FAIL; + } + Length -= BytesReturned; + } + + // get all events + if (Length) + { + hr = KsSynchronousDeviceControl(m_hPin, IOCTL_KS_ENABLE_EVENT, (PVOID)&Property, sizeof(KSPROPERTY), (PVOID)&pGuid[NumProperty+NumMethods], Length, &BytesReturned); + if (FAILED(hr)) + { + CoTaskMemFree(pGuid); + return E_FAIL; + } + Length -= BytesReturned; + } + +#ifdef KSPROXY_TRACE + WCHAR Buffer[200]; + swprintf(Buffer, L"NumProperty %lu NumMethods %lu NumEvents %lu\n", NumProperty, NumMethods, NumEvents); + OutputDebugStringW(Buffer); +#endif + + *pOutGuid = pGuid; + *NumGuids = NumProperty+NumEvents+NumMethods; + return S_OK; +} + +HRESULT +STDMETHODCALLTYPE +COutputPin::LoadProxyPlugins( + LPGUID pGuids, + ULONG NumGuids) +{ + ULONG Index; + LPOLESTR pStr; + HKEY hKey, hSubKey; + HRESULT hr; + IUnknown * pUnknown; + + if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SYSTEM\\CurrentControlSet\\Control\\MediaInterfaces", 0, KEY_READ, &hKey) != ERROR_SUCCESS) + { + OutputDebugStringW(L"CKsProxy::LoadProxyPlugins failed to open MediaInterfaces key\n"); + return E_FAIL; + } + + // enumerate all sets + for(Index = 0; Index < NumGuids; Index++) + { + // convert to string + hr = StringFromCLSID(pGuids[Index], &pStr); + if (FAILED(hr)) + return E_FAIL; + + // now try open class key + if (RegOpenKeyExW(hKey, pStr, 0, KEY_READ, &hSubKey) != ERROR_SUCCESS) + { + // no plugin for that set exists + CoTaskMemFree(pStr); + continue; + } + + // try load plugin + hr = CoCreateInstance(pGuids[Index], (IBaseFilter*)this, CLSCTX_INPROC_SERVER, IID_IUnknown, (void**)&pUnknown); + if (SUCCEEDED(hr)) + { + // store plugin + m_Plugins.push_back(pUnknown); + } + // close key + RegCloseKey(hSubKey); + } + + // close media interfaces key + RegCloseKey(hKey); + return S_OK; +} + HRESULT WINAPI
15 years, 1 month
1
0
0
0
← Newer
1
...
20
21
22
23
24
25
26
...
90
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
Results per page:
10
25
50
100
200