ASSERT(PointerPte->u.Hard.Valid == 1);
ASSERT(TempPte.u.Hard.Valid == 1);
ASSERT(PointerPte->u.Hard.PageFrameNumber == TempPte.u.Hard.PageFrameNumber);
- *PointerPte = TempPte;
+ MI_WRITE_VALID_PTE(PointerPte, TempPte);
//
// Flush the TLB
PCONTROL_AREA ControlArea;
PAGED_CODE();
- /* Only global mappings supported for now */
- ASSERT(Session == &MmSession);
-
/* Remove this mapping */
KeAcquireGuardedMutex(Session->SystemSpaceViewLockPointer);
Size = MiRemoveFromSystemSpace(Session, MappedBase, &ControlArea);
{
PAGED_CODE();
+ // HACK
+ if (MiIsRosSectionObject(Section))
+ {
+ return MmMapViewInSystemSpace(Section, MappedBase, ViewSize);
+ }
+
/* Process must be in a session */
if (PsGetCurrentProcess()->ProcessInSession == FALSE)
{
{
PAGED_CODE();
+ // HACK
+ if (!MI_IS_SESSION_ADDRESS(MappedBase))
+ {
+ return MmUnmapViewInSystemSpace(MappedBase);
+ }
+
/* Process must be in a session */
if (PsGetCurrentProcess()->ProcessInSession == FALSE)
{
ASSERT(TempPte.u.Long != 0);
/* Loop all prototype PTEs to be committed */
+ PointerPte = ProtoPte;
while (PointerPte < LastProtoPte)
{
/* Make sure the PTE is already invalid */