diff --git a/reactos/drivers/base/bootvid/bootvid.c b/reactos/drivers/base/bootvid/bootvid.c index 62cfad382f9..5b44fe43b0f 100644 --- a/reactos/drivers/base/bootvid/bootvid.c +++ b/reactos/drivers/base/bootvid/bootvid.c @@ -225,7 +225,7 @@ InbvInitVGAMode(VOID) } -static BOOL STDCALL +static BOOLEAN STDCALL VidResetDisplay(VOID) { /* diff --git a/reactos/drivers/base/bootvid/ntbootvid.h b/reactos/drivers/base/bootvid/ntbootvid.h index 199a0201f6a..ab441542bfb 100644 --- a/reactos/drivers/base/bootvid/ntbootvid.h +++ b/reactos/drivers/base/bootvid/ntbootvid.h @@ -9,5 +9,5 @@ typedef struct { - BOOL (STDCALL *ResetDisplay)(VOID); + BOOLEAN (NTAPI *ResetDisplay)(VOID); } NTBOOTVID_FUNCTION_TABLE; diff --git a/reactos/include/ddk/ntifs.h b/reactos/include/ddk/ntifs.h index 5cfec2d5d94..6e77057acf7 100644 --- a/reactos/include/ddk/ntifs.h +++ b/reactos/include/ddk/ntifs.h @@ -272,11 +272,7 @@ extern LARGE_INTEGER IoOtherTransferCount; #define IO_ATTACH_DEVICE 0x0400 #define IO_ATTACH_DEVICE_API 0x80000000 -/* also in winnt.h */ -#define IO_COMPLETION_QUERY_STATE 0x0001 -#define IO_COMPLETION_MODIFY_STATE 0x0002 -#define IO_COMPLETION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) -/* end winnt.h */ + #define IO_FILE_OBJECT_NON_PAGED_POOL_CHARGE 64 #define IO_FILE_OBJECT_PAGED_POOL_CHARGE 1024 @@ -297,9 +293,7 @@ extern LARGE_INTEGER IoOtherTransferCount; #define MAP_PROCESS 1L #define MAP_SYSTEM 2L #define MEM_DOS_LIM 0x40000000 -/* also in winnt.h */ -#define MEM_IMAGE SEC_IMAGE -/* end winnt.h */ + #define OB_TYPE_TYPE 1 #define OB_TYPE_DIRECTORY 2 #define OB_TYPE_SYMBOLIC_LINK 3 @@ -332,15 +326,7 @@ extern LARGE_INTEGER IoOtherTransferCount; #define RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE 1 #define RTL_DUPLICATE_UNICODE_STRING_ALLOCATE_NULL_STRING 2 -/* also in winnt.h */ #define SEC_BASED 0x00200000 -#define SEC_NO_CHANGE 0x00400000 -#define SEC_FILE 0x00800000 -#define SEC_IMAGE 0x01000000 -#define SEC_VLM 0x02000000 -#define SEC_RESERVE 0x04000000 -#define SEC_COMMIT 0x08000000 -#define SEC_NOCACHE 0x10000000 #define SECURITY_WORLD_SID_AUTHORITY {0,0,0,0,0,1} #define SECURITY_WORLD_RID (0x00000000L) @@ -921,14 +907,15 @@ typedef struct _FILE_LINK_INFORMATION { WCHAR FileName[1]; } FILE_LINK_INFORMATION, *PFILE_LINK_INFORMATION; -typedef struct _FILE_LOCK_INFO { - LARGE_INTEGER StartingByte; - LARGE_INTEGER Length; - BOOLEAN ExclusiveLock; - ULONG Key; - PFILE_OBJECT FileObject; - PEPROCESS Process; - LARGE_INTEGER EndingByte; +typedef struct _FILE_LOCK_INFO +{ + LARGE_INTEGER StartingByte; + LARGE_INTEGER Length; + BOOLEAN ExclusiveLock; + ULONG Key; + PFILE_OBJECT FileObject; + PVOID ProcessId; + LARGE_INTEGER EndingByte; } FILE_LOCK_INFO, *PFILE_LOCK_INFO; /* raw internal file lock struct returned from FsRtlGetNextFileLock */ @@ -1227,25 +1214,21 @@ typedef struct _BASE_MCB { ULONG MaximumPairCount; ULONG PairCount; - POOL_TYPE PoolType; + USHORT PoolType; + USHORT Flags; PVOID Mapping; -} BASE_MCB; -typedef BASE_MCB *PBASE_MCB; +} BASE_MCB, *PBASE_MCB; -typedef struct _LARGE_MCB { - PFAST_MUTEX FastMutex; - ULONG MaximumPairCount; - ULONG PairCount; - POOL_TYPE PoolType; - PVOID Mapping; -} LARGE_MCB; -typedef LARGE_MCB *PLARGE_MCB; +typedef struct _LARGE_MCB +{ + PKGUARDED_MUTEX GuardedMutex; + BASE_MCB BaseMcb; +} LARGE_MCB, *PLARGE_MCB; -typedef struct _MCB +typedef struct _MCB { LARGE_MCB DummyFieldThatSizesThisStructureCorrectly; -} MCB; -typedef MCB *PMCB; +} MCB, *PMCB; typedef struct _GENERATE_NAME_CONTEXT { USHORT Checksum; @@ -1268,10 +1251,6 @@ typedef struct _GET_RETRIEVAL_DESCRIPTOR { MAPPING_PAIR Pair[1]; } GET_RETRIEVAL_DESCRIPTOR, *PGET_RETRIEVAL_DESCRIPTOR; -typedef struct _IO_COMPLETION_BASIC_INFORMATION { - LONG Depth; -} IO_COMPLETION_BASIC_INFORMATION, *PIO_COMPLETION_BASIC_INFORMATION; - typedef struct _KQUEUE { DISPATCHER_HEADER Header; LIST_ENTRY EntryListHead; diff --git a/reactos/include/ddk/winddk.h b/reactos/include/ddk/winddk.h index 1c11651c97d..8bd053379a9 100644 --- a/reactos/include/ddk/winddk.h +++ b/reactos/include/ddk/winddk.h @@ -397,7 +397,6 @@ extern POBJECT_TYPE NTSYSAPI IoDriverObjectType; extern POBJECT_TYPE NTSYSAPI IoFileObjectType; extern POBJECT_TYPE NTSYSAPI PsThreadType; extern POBJECT_TYPE NTSYSAPI LpcPortObjectType; -extern POBJECT_TYPE NTSYSAPI MmSectionObjectType; extern POBJECT_TYPE NTSYSAPI SeTokenObjectType; #if (NTDDI_VERSION >= NTDDI_LONGHORN) @@ -4627,7 +4626,7 @@ typedef enum _MM_SYSTEM_SIZE { MmSmallSystem, MmMediumSystem, MmLargeSystem -} MM_SYSTEM_SIZE; +} MM_SYSTEMSIZE; typedef struct _OBJECT_HANDLE_INFORMATION { ULONG HandleAttributes; @@ -5114,7 +5113,6 @@ typedef ULONG PFN_NUMBER, *PPFN_NUMBER; #define CLOCK1_LEVEL 28 #define CLOCK2_LEVEL 28 #define IPI_LEVEL 29 -#define SYNCH_LEVEL (IPI_LEVEL-1) #define POWER_LEVEL 30 #define HIGH_LEVEL 31 @@ -9466,7 +9464,7 @@ MmProbeAndLockPages( IN LOCK_OPERATION Operation); NTOSAPI -MM_SYSTEM_SIZE +MM_SYSTEMSIZE DDKAPI MmQuerySystemSize( VOID); @@ -10246,7 +10244,6 @@ ZwSetValueKey( /* [Nt|Zw]MapViewOfSection.InheritDisposition constants */ #define AT_EXTENDABLE_FILE 0x00002000 -#define SEC_NO_CHANGE 0x00400000 #define AT_RESERVED 0x20000000 #define AT_ROUND_TO_PAGE 0x40000000 diff --git a/reactos/include/ndk/extypes.h b/reactos/include/ndk/extypes.h index b94c5ee5c4c..30437447db8 100644 --- a/reactos/include/ndk/extypes.h +++ b/reactos/include/ndk/extypes.h @@ -92,9 +92,18 @@ extern ULONG NTSYSAPI NtBuildNumber; #define EVENT_QUERY_STATE 0x0001 // -// Semaphore Object Acess Masks +// Semaphore Object Access Masks // #define SEMAPHORE_QUERY_STATE 0x0001 +#else + +// +// Mutant Object Access Masks +// +#define MUTANT_QUERY_STATE 0x0001 +#define MUTANT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | \ + SYNCHRONIZE | \ + MUTANT_QUERY_STATE) #endif // @@ -343,6 +352,29 @@ NTSTATUS #else +// +// Compatibility with Windows XP Drivers using ERESOURCE +// +typedef struct _ERESOURCE_XP +{ + LIST_ENTRY SystemResourcesList; + POWNER_ENTRY OwnerTable; + SHORT ActiveCount; + USHORT Flag; + PKSEMAPHORE SharedWaiters; + PKEVENT ExclusiveWaiters; + OWNER_ENTRY OwnerThreads[2]; + ULONG ContentionCount; + USHORT NumberOfSharedWaiters; + USHORT NumberOfExclusiveWaiters; + union + { + PVOID Address; + ULONG_PTR CreatorBackTraceIndex; + }; + KSPIN_LOCK SpinLock; +} ERESOURCE_XP, *PERESOURCE_XP; + // // Executive Work Queue Structures // @@ -519,6 +551,14 @@ typedef struct _HANDLE_TABLE_ENTRY }; } HANDLE_TABLE_ENTRY, *PHANDLE_TABLE_ENTRY; +// +// FIXME +// +#ifdef _REACTOS_ +#undef NTDDI_VERSION +#define NTDDI_VERSION NTDDI_WIN2K +#endif + typedef struct _HANDLE_TABLE { #if (NTDDI_VERSION >= NTDDI_WINXP) diff --git a/reactos/include/ndk/i386/ketypes.h b/reactos/include/ndk/i386/ketypes.h index 0f95e500934..3f10f732cb3 100644 --- a/reactos/include/ndk/i386/ketypes.h +++ b/reactos/include/ndk/i386/ketypes.h @@ -106,6 +106,15 @@ Author: // #define KSEG0_BASE 0x80000000 +// +// Synchronization-level IRQL +// +#if defined(NT_UP) +#define SYNCH_LEVEL DISPATCH_LEVEL +#else +#define SYNCH_LEVEL (IPI_LEVEL - 1) +#endif + // // Macro to get current KPRCB // diff --git a/reactos/include/ndk/iotypes.h b/reactos/include/ndk/iotypes.h index de2034cf23b..54644305983 100644 --- a/reactos/include/ndk/iotypes.h +++ b/reactos/include/ndk/iotypes.h @@ -27,7 +27,15 @@ Author: typedef PVOID PFS_FILTER_CALLBACKS; #endif +// +// I/O Completion Access Rights +// +#define IO_COMPLETION_QUERY_STATE 0x0001 #ifndef NTOS_MODE_USER +#define IO_COMPLETION_MODIFY_STATE 0x0002 +#define IO_COMPLETION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | \ + SYNCHRONIZE | \ + 0x3) // // Kernel Exported Object Types @@ -649,6 +657,14 @@ typedef struct _IO_ERROR_LOG_MESSAGE #endif +// +// I/O Completion Information structures +// +typedef struct _IO_COMPLETION_BASIC_INFORMATION +{ + LONG Depth; +} IO_COMPLETION_BASIC_INFORMATION, *PIO_COMPLETION_BASIC_INFORMATION; + // // Parameters for NtCreateMailslotFile/NtCreateNamedPipeFile // diff --git a/reactos/include/ndk/mmtypes.h b/reactos/include/ndk/mmtypes.h index 3ff541be0d5..f440545c83e 100644 --- a/reactos/include/ndk/mmtypes.h +++ b/reactos/include/ndk/mmtypes.h @@ -28,27 +28,50 @@ Author: // // Page-Rounding Macros // -#define PAGE_ROUND_DOWN(x) (((ULONG_PTR)x)&(~(PAGE_SIZE-1))) -#define PAGE_ROUND_UP(x) \ - ( (((ULONG_PTR)x)%PAGE_SIZE) ? ((((ULONG_PTR)x)&(~(PAGE_SIZE-1)))+PAGE_SIZE) : ((ULONG_PTR)x) ) +#define PAGE_ROUND_DOWN(x) \ + (((ULONG_PTR)x)&(~(PAGE_SIZE-1))) +#define PAGE_ROUND_UP(x) \ + ( (((ULONG_PTR)x)%PAGE_SIZE) ? \ + ((((ULONG_PTR)x)&(~(PAGE_SIZE-1)))+PAGE_SIZE) : \ + ((ULONG_PTR)x) ) #ifdef NTOS_MODE_USER -#define ROUND_TO_PAGES(Size) (((ULONG_PTR)(Size) + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1)) +#define ROUND_TO_PAGES(Size) \ + (((ULONG_PTR)(Size) + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1)) #endif -#define ROUND_TO_ALLOCATION_GRANULARITY(Size) (((ULONG_PTR)(Size) + MM_ALLOCATION_GRANULARITY - 1) \ +#define ROUND_TO_ALLOCATION_GRANULARITY(Size) \ + (((ULONG_PTR)(Size) + MM_ALLOCATION_GRANULARITY - 1) \ & ~(MM_ALLOCATION_GRANULARITY - 1)) // // Macro for generating pool tags // -#define TAG(A, B, C, D) (ULONG)(((A)<<0) + ((B)<<8) + ((C)<<16) + ((D)<<24)) +#define TAG(A, B, C, D) \ + (ULONG)(((A)<<0) + ((B)<<8) + ((C)<<16) + ((D)<<24)) -#ifdef NTOS_MODE_USER +#ifndef NTOS_MODE_USER + +// +// Virtual Memory Flags +// +#define MEM_WRITE_WATCH 0x200000 +#define MEM_PHYSICAL 0x400000 +#define MEM_ROTATE 0x800000 +#define MEM_IMAGE SEC_IMAGE // // Section Flags for NtCreateSection // -#define SEC_BASED 0x00200000 -#define SEC_NO_CHANGE 0x00400000 +#define SEC_NO_CHANGE 0x400000 +#define SEC_FILE 0x800000 +#define SEC_IMAGE 0x1000000 +#define SEC_PROTECTED_IMAGE 0x2000000 +#define SEC_RESERVE 0x4000000 +#define SEC_COMMIT 0x8000000 +#define SEC_NOCACHE 0x10000000 +#define SEC_WRITECOMBINE 0x40000000 +#define SEC_LARGE_PAGES 0x80000000 +#else +#define SEC_BASED 0x200000 // // Section Inherit Flags for NtCreateSection @@ -583,11 +606,6 @@ typedef struct _MEMORY_BASIC_INFORMATION ULONG Type; } MEMORY_BASIC_INFORMATION,*PMEMORY_BASIC_INFORMATION; - -// -// Mm Global Variables -// - // // Default heap size values. For user mode, these values are copied to a new // process's PEB by the kernel in MmCreatePeb. In kernel mode, RtlCreateHeap @@ -601,6 +619,11 @@ extern SIZE_T MmHeapSegmentCommit; extern SIZE_T MmHeapDeCommitTotalFreeThreshold; extern SIZE_T MmHeapDeCommitFreeBlockThreshold; +// +// Section Object Type +// +extern POBJECT_TYPE MmSectionObjectType; + #endif // !NTOS_MODE_USER #endif // _MMTYPES_H diff --git a/reactos/include/ndk/psfuncs.h b/reactos/include/ndk/psfuncs.h index 32656d136e3..a057c8dd48a 100644 --- a/reactos/include/ndk/psfuncs.h +++ b/reactos/include/ndk/psfuncs.h @@ -175,6 +175,27 @@ NtCreateThread( IN BOOLEAN CreateSuspended ); +#ifndef NTOS_MODE_USER +FORCEINLINE +PTEB +NtCurrentTeb(VOID) +{ +#ifndef __GNUC__ + return (PTEB)(ULONG_PTR)__readfsdword(0x18); +#else + struct _TEB *ret; + + __asm__ __volatile__ ( + "movl %%fs:0x18, %0\n" + : "=r" (ret) + : /* no inputs */ + ); + + return ret; +#endif +} +#endif + NTSYSCALLAPI NTSTATUS NTAPI diff --git a/reactos/include/ndk/pstypes.h b/reactos/include/ndk/pstypes.h index e19da5c6e5d..548102fcac5 100644 --- a/reactos/include/ndk/pstypes.h +++ b/reactos/include/ndk/pstypes.h @@ -119,10 +119,19 @@ extern NTSYSAPI POBJECT_TYPE PsProcessType; // #define TLS_EXPANSION_SLOTS 64 +#ifndef NTOS_MODE_USER + +// +// Thread Access Types +// +#define THREAD_QUERY_INFORMATION 0x0040 +#define THREAD_SET_THREAD_TOKEN 0x0080 +#define THREAD_IMPERSONATE 0x0100 +#define THREAD_DIRECT_IMPERSONATION 0x0200 + // // Process Access Types // -#ifndef NTOS_MODE_USER #define PROCESS_TERMINATE 0x0001 #define PROCESS_CREATE_THREAD 0x0002 #define PROCESS_SET_SESSIONID 0x0004 diff --git a/reactos/include/ndk/setypes.h b/reactos/include/ndk/setypes.h index 03563a74c16..6d36d7b22cb 100644 --- a/reactos/include/ndk/setypes.h +++ b/reactos/include/ndk/setypes.h @@ -59,8 +59,33 @@ Author: #define SE_CHANGE_NOTIFY_PRIVILEGE (23L) #define SE_REMOTE_SHUTDOWN_PRIVILEGE (24L) #define SE_MAX_WELL_KNOWN_PRIVILEGE (SE_REMOTE_SHUTDOWN_PRIVILEGE) + #else +// +// User and Group-related SID Attributes +// +#define SE_GROUP_MANDATORY 0x00000001 +#define SE_GROUP_ENABLED_BY_DEFAULT 0x00000002 +#define SE_GROUP_ENABLED 0x00000004 +#define SE_GROUP_OWNER 0x00000008 +#define SE_GROUP_USE_FOR_DENY_ONLY 0x00000010 +#define SE_GROUP_INTEGRITY 0x00000020 +#define SE_GROUP_INTEGRITY_ENABLED 0x00000040 +#define SE_GROUP_RESOURCE 0x20000000 +#define SE_GROUP_LOGON_ID 0xC0000000 + +#define SE_GROUP_VALID_ATTRIBUTES \ + (SE_GROUP_MANDATORY | \ + SE_GROUP_ENABLED_BY_DEFAULT | \ + SE_GROUP_ENABLED | \ + SE_GROUP_OWNER | \ + SE_GROUP_USE_FOR_DENY_ONLY | \ + SE_GROUP_LOGON_ID | \ + SE_GROUP_RESOURCE | \ + SE_GROUP_INTEGRITY | \ + SE_GROUP_INTEGRITY_ENABLED) + // // Audit and Policy Structures // @@ -142,5 +167,11 @@ typedef struct _AUX_DATA ULONG Reserved; } AUX_DATA, *PAUX_DATA; +// +// External SRM Data +// +extern PACL SePublicDefaultDacl; +extern PACL SeSystemDefaultDacl; + #endif #endif diff --git a/reactos/include/psdk/winnt.h b/reactos/include/psdk/winnt.h index af06ef9892c..c0901cce594 100644 --- a/reactos/include/psdk/winnt.h +++ b/reactos/include/psdk/winnt.h @@ -424,9 +424,12 @@ typedef DWORD FLONG; #define FILE_SUPPORTS_ENCRYPTION 0x00020000 #define FILE_NAMED_STREAMS 0x00040000 +/* FIXME: Oh how I wish, I wish the w32api DDK wouldn't include winnt.h... */ +#ifndef __NTDDK_H #define IO_COMPLETION_QUERY_STATE 0x0001 #define IO_COMPLETION_MODIFY_STATE 0x0002 #define IO_COMPLETION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) +#endif /* end ntifs.h */ /* also in ddk/winddk.h */ @@ -457,10 +460,13 @@ typedef DWORD FLONG; #define THREAD_GET_CONTEXT 8 #define THREAD_SET_CONTEXT 16 #define THREAD_SET_INFORMATION 32 +/* FIXME: Oh how I wish, I wish the w32api DDK wouldn't include winnt.h... */ +#ifndef __NTDDK_H #define THREAD_QUERY_INFORMATION 64 #define THREAD_SET_THREAD_TOKEN 128 #define THREAD_IMPERSONATE 256 #define THREAD_DIRECT_IMPERSONATION 0x200 +#endif #define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3FF) #define THREAD_BASE_PRIORITY_LOWRT 15 #define THREAD_BASE_PRIORITY_MAX 2 @@ -468,8 +474,11 @@ typedef DWORD FLONG; #define THREAD_BASE_PRIORITY_IDLE (-15) #define EXCEPTION_NONCONTINUABLE 1 #define EXCEPTION_MAXIMUM_PARAMETERS 15 +/* FIXME: Oh how I wish, I wish the w32api DDK wouldn't include winnt.h... */ +#ifndef __NTDDK_H #define MUTANT_QUERY_STATE 0x0001 #define MUTANT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|MUTANT_QUERY_STATE) +#endif #define TIMER_QUERY_STATE 0x0001 #define TIMER_MODIFY_STATE 0x0002 #define TIMER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|TIMER_QUERY_STATE|TIMER_MODIFY_STATE) @@ -654,6 +663,8 @@ typedef enum #define SE_CHANGE_NOTIFY_NAME TEXT("SeChangeNotifyPrivilege") #define SE_REMOTE_SHUTDOWN_NAME TEXT("SeRemoteShutdownPrivilege") #define SE_CREATE_GLOBAL_NAME TEXT("SeCreateGlobalPrivilege") +/* FIXME: Oh how I wish, I wish the w32api DDK wouldn't include winnt.h... */ +#ifndef __NTDDK_H #define SE_GROUP_MANDATORY 1 #define SE_GROUP_ENABLED_BY_DEFAULT 2 #define SE_GROUP_ENABLED 4 @@ -661,6 +672,7 @@ typedef enum #define SE_GROUP_USE_FOR_DENY_ONLY 16 #define SE_GROUP_LOGON_ID 3221225472U #define SE_GROUP_RESOURCE 536870912 +#endif #define LANG_NEUTRAL 0x00 #define LANG_ARABIC 0x01 #define LANG_BULGARIAN 0x02 @@ -1005,9 +1017,9 @@ typedef enum #define MEM_WRITE_WATCH 0x200000 /* 98/Me */ #define MEM_PHYSICAL 0x400000 #define MEM_4MB_PAGES 0x80000000 -/* also in ddk/ntifs.h */ +/* FIXME: Oh how I wish, I wish the w32api DDK wouldn't include winnt.h... */ +#ifndef __NTDDK_H #define MEM_IMAGE SEC_IMAGE -#define SEC_BASED 0x00200000 #define SEC_NO_CHANGE 0x00400000 #define SEC_FILE 0x00800000 #define SEC_IMAGE 0x01000000 @@ -1015,7 +1027,7 @@ typedef enum #define SEC_RESERVE 0x04000000 #define SEC_COMMIT 0x08000000 #define SEC_NOCACHE 0x10000000 -/* end ntifs.h */ +#endif #define SECTION_EXTEND_SIZE 16 #define SECTION_MAP_READ 4 #define SECTION_MAP_WRITE 2 @@ -3772,6 +3784,8 @@ static __inline__ PVOID GetCurrentFiber(void) return ret; } +/* FIXME: Oh how I wish, I wish the w32api DDK wouldn't include winnt.h... */ +#ifndef __NTDDK_H static __inline__ struct _TEB * NtCurrentTeb(void) { struct _TEB *ret; @@ -3784,6 +3798,7 @@ static __inline__ struct _TEB * NtCurrentTeb(void) return ret; } +#endif #elif defined(__WATCOMC__) diff --git a/reactos/ntoskrnl/ex/resource.c b/reactos/ntoskrnl/ex/resource.c index ce3927ff33e..cdca8c1e981 100644 --- a/reactos/ntoskrnl/ex/resource.c +++ b/reactos/ntoskrnl/ex/resource.c @@ -57,7 +57,7 @@ BOOLEAN ExResourceStrict = FALSE; /* FIXME */ *--*/ VOID NTAPI -ExpVerifyResource(IN PERESOURCE Resource) +ExpVerifyResource(IN PERESOURCE_XP Resource) { /* Verify the resource data */ ASSERT((((ULONG_PTR)Resource) & (sizeof(ULONG_PTR) - 1)) == 0); @@ -94,7 +94,7 @@ ExpVerifyResource(IN PERESOURCE Resource) VOID NTAPI ExpCheckForApcsDisabled(IN BOOLEAN BreakIfTrue, - IN PERESOURCE Resource, + IN PERESOURCE_XP Resource, IN PETHREAD Thread) { /* Check if we should care and check if we should break */ @@ -156,7 +156,7 @@ ExpResourceInitialization(VOID) *--*/ VOID NTAPI -ExpAllocateExclusiveWaiterEvent(IN PERESOURCE Resource, +ExpAllocateExclusiveWaiterEvent(IN PERESOURCE_XP Resource, IN PKIRQL OldIrql) { PKEVENT Event; @@ -205,7 +205,7 @@ ExpAllocateExclusiveWaiterEvent(IN PERESOURCE Resource, *--*/ VOID NTAPI -ExpAllocateSharedWaiterSemaphore(IN PERESOURCE Resource, +ExpAllocateSharedWaiterSemaphore(IN PERESOURCE_XP Resource, IN PKIRQL OldIrql) { PKSEMAPHORE Semaphore; @@ -254,7 +254,7 @@ ExpAllocateSharedWaiterSemaphore(IN PERESOURCE Resource, *--*/ VOID NTAPI -ExpExpandResourceOwnerTable(IN PERESOURCE Resource, +ExpExpandResourceOwnerTable(IN PERESOURCE_XP Resource, IN PKIRQL OldIrql) { POWNER_ENTRY Owner, Table; @@ -354,7 +354,7 @@ ExpExpandResourceOwnerTable(IN PERESOURCE Resource, *--*/ POWNER_ENTRY FASTCALL -ExpFindFreeEntry(IN PERESOURCE Resource, +ExpFindFreeEntry(IN PERESOURCE_XP Resource, IN PKIRQL OldIrql) { POWNER_ENTRY Owner, Limit; @@ -440,7 +440,7 @@ ExpFindFreeEntry(IN PERESOURCE Resource, *--*/ POWNER_ENTRY FASTCALL -ExpFindEntryForThread(IN PERESOURCE Resource, +ExpFindEntryForThread(IN PERESOURCE_XP Resource, IN ERESOURCE_THREAD Thread, IN PKIRQL OldIrql) { @@ -598,7 +598,7 @@ ExpBoostOwnerThread(IN PKTHREAD Thread, *--*/ VOID FASTCALL -ExpWaitForResource(IN PERESOURCE Resource, +ExpWaitForResource(IN PERESOURCE_XP Resource, IN PVOID Object) { #if DBG @@ -767,12 +767,13 @@ ExpWaitForResource(IN PERESOURCE Resource, *--*/ BOOLEAN NTAPI -ExAcquireResourceExclusiveLite(PERESOURCE Resource, +ExAcquireResourceExclusiveLite(PERESOURCE resource, BOOLEAN Wait) { KIRQL OldIrql = PASSIVE_LEVEL; ERESOURCE_THREAD Thread; BOOLEAN Success; + PERESOURCE_XP Resource = (PERESOURCE_XP)resource; /* Sanity check */ ASSERT((Resource->Flag & ResourceNeverExclusive) == 0); @@ -883,12 +884,13 @@ TryAcquire: *--*/ BOOLEAN NTAPI -ExAcquireResourceSharedLite(PERESOURCE Resource, +ExAcquireResourceSharedLite(PERESOURCE resource, BOOLEAN Wait) { KIRQL OldIrql; ERESOURCE_THREAD Thread; POWNER_ENTRY Owner; + PERESOURCE_XP Resource = (PERESOURCE_XP)resource; /* Get the thread */ Thread = ExGetCurrentResourceThread(); @@ -1044,12 +1046,13 @@ TryAcquire: *--*/ BOOLEAN NTAPI -ExAcquireSharedStarveExclusive(PERESOURCE Resource, +ExAcquireSharedStarveExclusive(PERESOURCE resource, BOOLEAN Wait) { KIRQL OldIrql; ERESOURCE_THREAD Thread; POWNER_ENTRY Owner; + PERESOURCE_XP Resource = (PERESOURCE_XP)resource; /* Get the thread */ Thread = ExGetCurrentResourceThread(); @@ -1191,12 +1194,13 @@ TryAcquire: *--*/ BOOLEAN NTAPI -ExAcquireSharedWaitForExclusive(PERESOURCE Resource, +ExAcquireSharedWaitForExclusive(PERESOURCE resource, BOOLEAN Wait) { KIRQL OldIrql; ERESOURCE_THREAD Thread; POWNER_ENTRY Owner; + PERESOURCE_XP Resource = (PERESOURCE_XP)resource; /* Get the thread */ Thread = ExGetCurrentResourceThread(); @@ -1363,10 +1367,11 @@ TryAcquire: *--*/ VOID NTAPI -ExConvertExclusiveToSharedLite(PERESOURCE Resource) +ExConvertExclusiveToSharedLite(PERESOURCE resource) { ULONG OldWaiters; KIRQL OldIrql; + PERESOURCE_XP Resource = (PERESOURCE_XP)resource; DPRINT("ExConvertExclusiveToSharedLite(Resource 0x%p)\n", Resource); /* Lock the resource */ @@ -1418,9 +1423,10 @@ ExConvertExclusiveToSharedLite(PERESOURCE Resource) *--*/ NTSTATUS NTAPI -ExDeleteResourceLite(PERESOURCE Resource) +ExDeleteResourceLite(PERESOURCE resource) { KIRQL OldIrql; + PERESOURCE_XP Resource = (PERESOURCE_XP)resource; DPRINT("ExDeleteResourceLite(Resource 0x%p)\n", Resource); /* Sanity checks */ @@ -1464,9 +1470,10 @@ ExDeleteResourceLite(PERESOURCE Resource) *--*/ VOID NTAPI -ExDisableResourceBoostLite(PERESOURCE Resource) +ExDisableResourceBoostLite(PERESOURCE resource) { KIRQL OldIrql; + PERESOURCE_XP Resource = (PERESOURCE_XP)resource; /* Sanity check */ ExpVerifyResource(Resource); @@ -1498,8 +1505,10 @@ ExDisableResourceBoostLite(PERESOURCE Resource) *--*/ ULONG NTAPI -ExGetExclusiveWaiterCount(PERESOURCE Resource) +ExGetExclusiveWaiterCount(PERESOURCE resource) { + PERESOURCE_XP Resource = (PERESOURCE_XP)resource; + /* Return the count */ return Resource->NumberOfExclusiveWaiters; } @@ -1521,8 +1530,10 @@ ExGetExclusiveWaiterCount(PERESOURCE Resource) *--*/ ULONG NTAPI -ExGetSharedWaiterCount(PERESOURCE Resource) +ExGetSharedWaiterCount(PERESOURCE resource) { + PERESOURCE_XP Resource = (PERESOURCE_XP)resource; + /* Return the count */ return Resource->NumberOfSharedWaiters; } @@ -1545,12 +1556,13 @@ ExGetSharedWaiterCount(PERESOURCE Resource) *--*/ NTSTATUS NTAPI -ExInitializeResourceLite(PERESOURCE Resource) +ExInitializeResourceLite(PERESOURCE resource) { + PERESOURCE_XP Resource = (PERESOURCE_XP)resource; DPRINT("ExInitializeResourceLite(Resource 0x%p)\n", Resource); /* Clear the structure */ - RtlZeroMemory(Resource, sizeof(ERESOURCE)); + RtlZeroMemory(Resource, sizeof(ERESOURCE_XP)); /* Initialize the lock */ KeInitializeSpinLock(&Resource->SpinLock); @@ -1582,10 +1594,11 @@ ExInitializeResourceLite(PERESOURCE Resource) *--*/ BOOLEAN NTAPI -ExIsResourceAcquiredExclusiveLite(PERESOURCE Resource) +ExIsResourceAcquiredExclusiveLite(PERESOURCE resource) { ERESOURCE_THREAD Thread = ExGetCurrentResourceThread(); BOOLEAN IsAcquired = FALSE; + PERESOURCE_XP Resource = (PERESOURCE_XP)resource; /* Sanity check */ ExpVerifyResource(Resource); @@ -1622,13 +1635,14 @@ ExIsResourceAcquiredExclusiveLite(PERESOURCE Resource) *--*/ ULONG NTAPI -ExIsResourceAcquiredSharedLite(IN PERESOURCE Resource) +ExIsResourceAcquiredSharedLite(IN PERESOURCE resource) { ERESOURCE_THREAD Thread; ULONG i, Size; ULONG Count = 0; KIRQL OldIrql; POWNER_ENTRY Owner; + PERESOURCE_XP Resource = (PERESOURCE_XP)resource; /* Sanity check */ ExpVerifyResource(Resource); @@ -1719,12 +1733,13 @@ ExIsResourceAcquiredSharedLite(IN PERESOURCE Resource) *--*/ NTSTATUS NTAPI -ExReinitializeResourceLite(PERESOURCE Resource) +ExReinitializeResourceLite(PERESOURCE resource) { PKEVENT Event; PKSEMAPHORE Semaphore; ULONG i, Size; POWNER_ENTRY Owner; + PERESOURCE_XP Resource = (PERESOURCE_XP)resource; /* Get the owner table */ Owner = Resource->OwnerTable; @@ -1784,12 +1799,13 @@ ExReinitializeResourceLite(PERESOURCE Resource) *--*/ VOID FASTCALL -ExReleaseResourceLite(PERESOURCE Resource) +ExReleaseResourceLite(PERESOURCE resource) { ERESOURCE_THREAD Thread; ULONG Count, i; KIRQL OldIrql; POWNER_ENTRY Owner, Limit; + PERESOURCE_XP Resource = (PERESOURCE_XP)resource; DPRINT("ExReleaseResourceLite: %p\n", Resource); /* Sanity check */ @@ -1973,13 +1989,14 @@ ExReleaseResourceLite(PERESOURCE Resource) *--*/ VOID NTAPI -ExReleaseResourceForThreadLite(PERESOURCE Resource, +ExReleaseResourceForThreadLite(PERESOURCE resource, ERESOURCE_THREAD Thread) { ULONG i; ULONG Count; KIRQL OldIrql; POWNER_ENTRY Owner; + PERESOURCE_XP Resource = (PERESOURCE_XP)resource; ASSERT(Thread != 0); DPRINT("ExReleaseResourceForThreadLite: %p\n", Resource); @@ -2164,12 +2181,13 @@ ExReleaseResourceForThreadLite(PERESOURCE Resource, *--*/ VOID NTAPI -ExSetResourceOwnerPointer(IN PERESOURCE Resource, +ExSetResourceOwnerPointer(IN PERESOURCE resource, IN PVOID OwnerPointer) { ERESOURCE_THREAD Thread; KIRQL OldIrql; POWNER_ENTRY Owner, ThisOwner; + PERESOURCE_XP Resource = (PERESOURCE_XP)resource; /* Sanity check */ ASSERT((OwnerPointer != 0) && (((ULONG_PTR)OwnerPointer & 3) == 3)); @@ -2242,11 +2260,12 @@ ExSetResourceOwnerPointer(IN PERESOURCE Resource, *--*/ BOOLEAN NTAPI -ExTryToAcquireResourceExclusiveLite(PERESOURCE Resource) +ExTryToAcquireResourceExclusiveLite(PERESOURCE resource) { ERESOURCE_THREAD Thread; KIRQL OldIrql; BOOLEAN Acquired = FALSE; + PERESOURCE_XP Resource = (PERESOURCE_XP)resource; DPRINT("ExTryToAcquireResourceExclusiveLite: %p\n", Resource); /* Sanity check */ diff --git a/reactos/ntoskrnl/fs/filelock.c b/reactos/ntoskrnl/fs/filelock.c index 048e8d7b651..61c94cf04cd 100644 --- a/reactos/ntoskrnl/fs/filelock.c +++ b/reactos/ntoskrnl/fs/filelock.c @@ -190,7 +190,7 @@ FsRtlpCheckLockForReadOrWriteAccess( //No write conflict if exclusive lock AND our lock if ((Read && !Granted->Lock.ExclusiveLock) || (Granted->Lock.ExclusiveLock && - Granted->Lock.Process == Process && + Granted->Lock.ProcessId == Process && Granted->Lock.FileObject == FileObject && Granted->Lock.Key == Key ) ) { @@ -382,7 +382,7 @@ FsRtlpFastUnlockAllByKey( LIST_FOR_EACH_SAFE(Granted, tmp, &LockToc->GrantedListHead, FILE_LOCK_GRANTED, ListEntry) { - if (Granted->Lock.Process == Process && + if (Granted->Lock.ProcessId == Process && Granted->Lock.FileObject == FileObject && (!UseKey || (UseKey && Granted->Lock.Key == Key)) ) { @@ -548,7 +548,7 @@ FsRtlpAddLock( Granted->Lock.ExclusiveLock = ExclusiveLock; Granted->Lock.Key = Key; Granted->Lock.FileObject = FileObject; - Granted->Lock.Process = Process; + Granted->Lock.ProcessId = Process; //ending offset Granted->Lock.EndingByte = EndOffset; Granted->UnlockContext = Context; @@ -693,7 +693,7 @@ FsRtlpUnlockSingle( //must be exact match if (FileOffset->QuadPart == Granted->Lock.StartingByte.QuadPart && Length->QuadPart == Granted->Lock.Length.QuadPart && - Granted->Lock.Process == Process && + Granted->Lock.ProcessId == Process && Granted->Lock.FileObject == FileObject && Granted->Lock.Key == Key) { @@ -799,7 +799,7 @@ FsRtlpDumpFileLocks( Granted->Lock.Length.QuadPart, Granted->Lock.EndingByte.QuadPart, Granted->Lock.Key, - Granted->Lock.Process, + Granted->Lock.ProcessId, Granted->Lock.FileObject ); diff --git a/reactos/ntoskrnl/fs/mcb.c b/reactos/ntoskrnl/fs/mcb.c index c5506e4e5ca..5f60d7cabbe 100644 --- a/reactos/ntoskrnl/fs/mcb.c +++ b/reactos/ntoskrnl/fs/mcb.c @@ -117,7 +117,7 @@ FsRtlInitializeLargeMcb(IN PLARGE_MCB Mcb, IN POOL_TYPE PoolType) { UNIMPLEMENTED; - Mcb->PoolType = PoolType; + Mcb->BaseMcb.PoolType = PoolType; } /* @@ -179,11 +179,11 @@ FsRtlLookupPerStreamContextInternal(IN PFSRTL_ADVANCED_FCB_HEADER StreamContext, /* * @unimplemented */ -PVOID /* PFSRTL_PER_FILE_OBJECT_CONTEXT*/ +PFSRTL_PER_FILEOBJECT_CONTEXT NTAPI -FsRtlLookupPerFileObjectContext(IN PFSRTL_ADVANCED_FCB_HEADER StreamContext, - IN PVOID OwnerId OPTIONAL, - IN PVOID InstanceId OPTIONAL) +FsRtlLookupPerFileObjectContext(IN PFILE_OBJECT FileObject, + IN PVOID OwnerId OPTIONAL, + IN PVOID InstanceId OPTIONAL) { UNIMPLEMENTED; return FALSE; @@ -269,9 +269,9 @@ FsRtlNumberOfRunsInLargeMcb(IN PLARGE_MCB Mcb) { ULONG NumberOfRuns; - ExAcquireFastMutex(Mcb->FastMutex); - NumberOfRuns = Mcb->PairCount; - ExReleaseFastMutex(Mcb->FastMutex); + KeAcquireGuardedMutex(Mcb->GuardedMutex); + NumberOfRuns = Mcb->BaseMcb.PairCount; + KeReleaseGuardedMutex(Mcb->GuardedMutex); return NumberOfRuns; } diff --git a/reactos/ntoskrnl/include/internal/i386/ke.h b/reactos/ntoskrnl/include/internal/i386/ke.h index 430819fabe3..c1c7a6727e6 100644 --- a/reactos/ntoskrnl/include/internal/i386/ke.h +++ b/reactos/ntoskrnl/include/internal/i386/ke.h @@ -224,8 +224,8 @@ static inline void Ki386Cpuid(ULONG Op, PULONG Eax, PULONG Ebx, PULONG Ecx, PULO #elif defined(_MSC_VER) -#define Ke386DisableInterrupts() __asm cli -#define Ke386EnableInterrupts() __asm sti +#define Ke386DisableInterrupts() _cli() +#define Ke386EnableInterrupts() _sti() #define Ke386HaltProcessor() __asm hlt #define Ke386GetPageTableDirectory(X) \ __asm mov eax, cr3; \ diff --git a/reactos/ntoskrnl/io/iomgr/driver.c b/reactos/ntoskrnl/io/iomgr/driver.c index 243291567a6..690c57458ee 100644 --- a/reactos/ntoskrnl/io/iomgr/driver.c +++ b/reactos/ntoskrnl/io/iomgr/driver.c @@ -43,9 +43,6 @@ LdrProcessModule( #if defined (ALLOC_PRAGMA) #pragma alloc_text(INIT, IopInitDriverImplementation) -#pragma alloc_text(INIT, IopDisplayLoadingMessage) -#pragma alloc_text(INIT, MiFreeBootDriverMemory) -#pragma alloc_text(INIT, IopInitializeBuiltinDriver) #endif diff --git a/reactos/ntoskrnl/ke/clock.c b/reactos/ntoskrnl/ke/clock.c index 1e4e5393afa..20b691c2a5a 100644 --- a/reactos/ntoskrnl/ke/clock.c +++ b/reactos/ntoskrnl/ke/clock.c @@ -208,18 +208,6 @@ KeSetTimeIncrement( KeMinimumIncrement = MinIncrement; } -/* - * @unimplemented - */ -VOID -FASTCALL -KeSetTimeUpdateNotifyRoutine( - IN PTIME_UPDATE_NOTIFY_ROUTINE NotifyRoutine - ) -{ - UNIMPLEMENTED; -} - /* * @implemented */ diff --git a/reactos/ntoskrnl/ke/i386/cpu.c b/reactos/ntoskrnl/ke/i386/cpu.c index e4462832c9e..83a2630cd79 100644 --- a/reactos/ntoskrnl/ke/i386/cpu.c +++ b/reactos/ntoskrnl/ke/i386/cpu.c @@ -654,7 +654,14 @@ KeSaveFloatingPointState(OUT PKFLOATING_SAVE Save) if (!FpState) return STATUS_INSUFFICIENT_RESOURCES; *((PVOID *) Save) = FpState; +#ifdef __GNUC__ asm volatile("fnsave %0\n\t" : "=m" (*FpState)); +#else + __asm + { + fnsave [FpState] + }; +#endif KeGetCurrentThread()->DispatcherHeader.NpxIrql = KeGetCurrentIrql(); return STATUS_SUCCESS; @@ -668,8 +675,16 @@ KeRestoreFloatingPointState(IN PKFLOATING_SAVE Save) ASSERT(KeGetCurrentThread()->DispatcherHeader.NpxIrql == KeGetCurrentIrql()); +#ifdef __GNUC__ asm volatile("fnclex\n\t"); asm volatile("frstor %0\n\t" : "=m" (*FpState)); +#else + __asm + { + fnclex + frstor [FpState] + }; +#endif ExFreePool(FpState); return STATUS_SUCCESS; @@ -688,8 +703,7 @@ Ki386SetProcessorFeatures(VOID) struct { KEY_VALUE_PARTIAL_INFORMATION Info; - UCHAR Buffer[FIELD_OFFSET(KEY_VALUE_PARTIAL_INFORMATION, - Data[0]) + sizeof(ULONG)]; + UCHAR Buffer[20]; } ValueData; NTSTATUS Status; ULONG FastSystemCallDisable = 0; diff --git a/reactos/ntoskrnl/ldr/loader.c b/reactos/ntoskrnl/ldr/loader.c index b4b943c7af0..4e2cc3a9b8b 100644 --- a/reactos/ntoskrnl/ldr/loader.c +++ b/reactos/ntoskrnl/ldr/loader.c @@ -639,7 +639,10 @@ LdrLookupPageProtection ( for (Idx = 0; Idx < PEFileHeader->NumberOfSections && (!Write || !Execute); Idx++) { Characteristics = PESectionHeaders[Idx].Characteristics; - if (!(Characteristics & IMAGE_SCN_TYPE_NOLOAD)) + // + // This field is RESERVED and not respected by Windows + // + //if (!(Characteristics & IMAGE_SCN_TYPE_NOLOAD)) { Length = max(PESectionHeaders[Idx].Misc.VirtualSize, PESectionHeaders[Idx].SizeOfRawData); BaseAddress = PESectionHeaders[Idx].VirtualAddress + (char*)DriverBase; @@ -736,7 +739,10 @@ LdrPEProcessModule( DriverSize = 0; for (Idx = 0; Idx < PENtHeaders->FileHeader.NumberOfSections; Idx++) { - if (!(PESectionHeaders[Idx].Characteristics & IMAGE_SCN_TYPE_NOLOAD)) + // + // This field is RESERVED and not respected by Windows + // + //if (!(PESectionHeaders[Idx].Characteristics & IMAGE_SCN_TYPE_NOLOAD)) { CurrentSize = PESectionHeaders[Idx].VirtualAddress + PESectionHeaders[Idx].Misc.VirtualSize; DriverSize = max(DriverSize, CurrentSize); diff --git a/reactos/ntoskrnl/mm/marea.c b/reactos/ntoskrnl/mm/marea.c index 97921c83ea0..cad4fe89283 100644 --- a/reactos/ntoskrnl/mm/marea.c +++ b/reactos/ntoskrnl/mm/marea.c @@ -947,9 +947,9 @@ MmCreateMemoryArea(PMADDRESS_SPACE AddressSpace, PMEMORY_AREA MemoryArea; DPRINT("MmCreateMemoryArea(Type %d, BaseAddress %p, " - "*BaseAddress %p, Length %p, Attributes %x, TopDown: %x, " + "*BaseAddress %p, Length %p, AllocationFlags %x, " "FixedAddress %x, Result %p)\n", - Type, BaseAddress, *BaseAddress, Length, Attributes, TopDown, + Type, BaseAddress, *BaseAddress, Length, AllocationFlags, FixedAddress, Result); MmVerifyMemoryAreas(AddressSpace); diff --git a/reactos/ntoskrnl/mm/mminit.c b/reactos/ntoskrnl/mm/mminit.c index 69a4a56b0e4..0e64b2bc83a 100644 --- a/reactos/ntoskrnl/mm/mminit.c +++ b/reactos/ntoskrnl/mm/mminit.c @@ -29,7 +29,7 @@ extern unsigned int _bss_end__; static BOOLEAN IsThisAnNtAsSystem = FALSE; -MM_SYSTEM_SIZE MmSystemSize = MmSmallSystem; +MM_SYSTEMSIZE MmSystemSize = MmSmallSystem; PHYSICAL_ADDRESS MmSharedDataPagePhysicalAddress; @@ -58,7 +58,7 @@ BOOLEAN STDCALL MmIsThisAnNtAsSystem(VOID) /* * @implemented */ -MM_SYSTEM_SIZE STDCALL MmQuerySystemSize(VOID) +MM_SYSTEMSIZE STDCALL MmQuerySystemSize(VOID) { return(MmSystemSize); } diff --git a/reactos/ntoskrnl/mm/pool.c b/reactos/ntoskrnl/mm/pool.c index 28afe5b4c7f..7e25ca30920 100644 --- a/reactos/ntoskrnl/mm/pool.c +++ b/reactos/ntoskrnl/mm/pool.c @@ -213,6 +213,7 @@ ExAllocatePoolWithQuotaTag (IN POOL_TYPE PoolType, /* * @implemented */ +#undef ExFreePool VOID STDCALL ExFreePool(IN PVOID Block) { diff --git a/reactos/ntoskrnl/mm/process.c b/reactos/ntoskrnl/mm/process.c index 200d98487ad..5be30d7e250 100644 --- a/reactos/ntoskrnl/mm/process.c +++ b/reactos/ntoskrnl/mm/process.c @@ -17,7 +17,7 @@ extern ULONG NtMajorVersion; extern ULONG NtMinorVersion; extern ULONG NtOSCSDVersion; extern ULONG NtGlobalFlag; -extern MM_SYSTEM_SIZE MmSystemSize; +extern MM_SYSTEMSIZE MmSystemSize; #define MM_HIGHEST_VAD_ADDRESS \ (PVOID)((ULONG_PTR)MM_HIGHEST_USER_ADDRESS - (16 * PAGE_SIZE)) diff --git a/reactos/ntoskrnl/mm/section.c b/reactos/ntoskrnl/mm/section.c index d6e5dbdd4b2..67cf0bb0a6e 100644 --- a/reactos/ntoskrnl/mm/section.c +++ b/reactos/ntoskrnl/mm/section.c @@ -3994,7 +3994,10 @@ MmUnmapViewOfSection(PEPROCESS Process, * and calculate the image base address */ for (i = 0; i < NrSegments; i++) { - if (!(SectionSegments[i].Characteristics & IMAGE_SCN_TYPE_NOLOAD)) + // + // This field is RESERVED and not respected by Windows + // + //if (!(SectionSegments[i].Characteristics & IMAGE_SCN_TYPE_NOLOAD)) { if (Segment == &SectionSegments[i]) { @@ -4010,7 +4013,10 @@ MmUnmapViewOfSection(PEPROCESS Process, for (i = 0; i < NrSegments; i++) { - if (!(SectionSegments[i].Characteristics & IMAGE_SCN_TYPE_NOLOAD)) + // + // This field is RESERVED and not respected by Windows + // + //if (!(SectionSegments[i].Characteristics & IMAGE_SCN_TYPE_NOLOAD)) { PVOID SBaseAddress = (PVOID) ((char*)ImageBaseAddress + (ULONG_PTR)SectionSegments[i].VirtualAddress); @@ -4476,7 +4482,10 @@ MmMapViewOfSection(IN PVOID SectionObject, ImageSize = 0; for (i = 0; i < NrSegments; i++) { - if (!(SectionSegments[i].Characteristics & IMAGE_SCN_TYPE_NOLOAD)) + // + // This field is RESERVED and not respected by Windows + // + //if (!(SectionSegments[i].Characteristics & IMAGE_SCN_TYPE_NOLOAD)) { ULONG_PTR MaxExtent; MaxExtent = (ULONG_PTR)SectionSegments[i].VirtualAddress + @@ -4506,7 +4515,10 @@ MmMapViewOfSection(IN PVOID SectionObject, for (i = 0; i < NrSegments; i++) { - if (!(SectionSegments[i].Characteristics & IMAGE_SCN_TYPE_NOLOAD)) + // + // This field is RESERVED and not respected by Windows + // + //if (!(SectionSegments[i].Characteristics & IMAGE_SCN_TYPE_NOLOAD)) { PVOID SBaseAddress = (PVOID) ((char*)ImageBase + (ULONG_PTR)SectionSegments[i].VirtualAddress); diff --git a/reactos/ntoskrnl/ntoskrnl.def b/reactos/ntoskrnl/ntoskrnl.def index 952686596cb..849637f97cb 100644 --- a/reactos/ntoskrnl/ntoskrnl.def +++ b/reactos/ntoskrnl/ntoskrnl.def @@ -638,7 +638,6 @@ KeSetTargetProcessorDpc@8 KeSetTimeIncrement@8 KeSetTimer@16 KeSetTimerEx@20 -@KeSetTimeUpdateNotifyRoutine@4 KeStackAttachProcess@8 KeSynchronizeExecution@12 KeTerminateThread@4