mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-08-30 04:13:33 +00:00
[WIN32K]: And all along I thought I had committed this... I guess it must work pretty well if I never noticed the difference :). This patch makes Win32k use session space instead of system space, now that we've had session space for a while. tkreuzer: review?
svn path=/trunk/; revision=57330
This commit is contained in:
@@ -11,10 +11,6 @@
|
||||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
||||
// HACK!!!
|
||||
#define MmMapViewInSessionSpace MmMapViewInSystemSpace
|
||||
#define MmUnmapViewInSessionSpace MmUnmapViewInSystemSpace
|
||||
|
||||
HANDLE ghSystem32Directory;
|
||||
HANDLE ghRootDirectory;
|
||||
|
||||
@@ -128,6 +124,48 @@ EngCreateSection(
|
||||
return pSection;
|
||||
}
|
||||
|
||||
PVOID
|
||||
NTAPI
|
||||
EngCreateSectionHack(
|
||||
IN ULONG fl,
|
||||
IN SIZE_T cjSize,
|
||||
IN ULONG ulTag)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
PENGSECTION pSection;
|
||||
PVOID pvSectionObject;
|
||||
LARGE_INTEGER liSize;
|
||||
|
||||
/* Allocate a section object */
|
||||
pSection = EngAllocMem(0, sizeof(ENGSECTION), 'stsU');
|
||||
if (!pSection) return NULL;
|
||||
|
||||
liSize.QuadPart = cjSize;
|
||||
Status = MmCreateSection(&pvSectionObject,
|
||||
SECTION_ALL_ACCESS,
|
||||
NULL,
|
||||
&liSize,
|
||||
PAGE_READWRITE,
|
||||
SEC_COMMIT | 1,
|
||||
NULL,
|
||||
NULL);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("Failed to create a section Status=0x%x\n", Status);
|
||||
EngFreeMem(pSection);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Set the fields of the section */
|
||||
pSection->ulTag = ulTag;
|
||||
pSection->pvSectionObject = pvSectionObject;
|
||||
pSection->pvMappedBase = NULL;
|
||||
pSection->cjViewSize = cjSize;
|
||||
|
||||
return pSection;
|
||||
}
|
||||
|
||||
|
||||
|
||||
BOOL
|
||||
APIENTRY
|
||||
@@ -250,7 +288,7 @@ EngAllocSectionMem(
|
||||
if (cjSize == 0) return NULL;
|
||||
|
||||
/* Allocate a section object */
|
||||
pSection = EngCreateSection(fl, cjSize, ulTag);
|
||||
pSection = EngCreateSectionHack(fl, cjSize, ulTag);
|
||||
if (!pSection)
|
||||
{
|
||||
*ppvSection = NULL;
|
||||
@@ -408,10 +446,10 @@ EngMapModule(
|
||||
|
||||
pFileView->cjView = 0;
|
||||
|
||||
/* Map the section in session space */
|
||||
Status = MmMapViewInSessionSpace(pFileView->pSection,
|
||||
&pFileView->pvKView,
|
||||
&pFileView->cjView);
|
||||
/* FIXME: Use system space because ARM3 doesn't support executable sections yet */
|
||||
Status = MmMapViewInSystemSpace(pFileView->pSection,
|
||||
&pFileView->pvKView,
|
||||
&pFileView->cjView);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("Failed to map a section Status=0x%x\n", Status);
|
||||
@@ -430,8 +468,8 @@ EngFreeModule(IN HANDLE h)
|
||||
PFILEVIEW pFileView = (PFILEVIEW)h;
|
||||
NTSTATUS Status;
|
||||
|
||||
/* Unmap the section */
|
||||
Status = MmUnmapViewInSessionSpace(pFileView->pvKView);
|
||||
/* FIXME: Use system space because ARM3 doesn't support executable sections yet */
|
||||
Status = MmUnmapViewInSystemSpace(pFileView->pvKView);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("MmUnmapViewInSessionSpace failed: 0x%lx\n", Status);
|
||||
|
||||
@@ -60,8 +60,6 @@
|
||||
#define ASSERT_EXCLUSIVE_OBJECT_TYPE(objt)
|
||||
#endif
|
||||
|
||||
#define MmMapViewInSessionSpace MmMapViewInSystemSpace
|
||||
|
||||
#if defined(_M_IX86) || defined(_M_AMD64)
|
||||
#define InterlockedOr16 _InterlockedOr16
|
||||
#endif
|
||||
@@ -166,7 +164,7 @@ InitGdiHandleTable(void)
|
||||
NULL,
|
||||
&liSize,
|
||||
PAGE_READWRITE,
|
||||
SEC_COMMIT,
|
||||
SEC_COMMIT | 0x1,
|
||||
NULL,
|
||||
NULL);
|
||||
if (!NT_SUCCESS(status))
|
||||
|
||||
@@ -188,7 +188,7 @@ UserCreateHeap(OUT PSECTION_OBJECT *SectionObject,
|
||||
NULL,
|
||||
&SizeHeap,
|
||||
PAGE_EXECUTE_READWRITE, /* Would prefer PAGE_READWRITE, but thanks to RTL heaps... */
|
||||
SEC_RESERVE,
|
||||
SEC_RESERVE | 1,
|
||||
NULL,
|
||||
NULL);
|
||||
|
||||
@@ -198,9 +198,9 @@ UserCreateHeap(OUT PSECTION_OBJECT *SectionObject,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
Status = MmMapViewInSystemSpace(*SectionObject,
|
||||
SystemBase,
|
||||
&HeapSize);
|
||||
Status = MmMapViewInSessionSpace(*SectionObject,
|
||||
SystemBase,
|
||||
&HeapSize);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
ObDereferenceObject(*SectionObject);
|
||||
|
||||
Reference in New Issue
Block a user