MI_MDL_MAPPING_REGION_SIZE,
0,
&Result,
+ FALSE,
FALSE);
if (!NT_SUCCESS(Status))
{
MmUnlockAddressSpace(MmGetKernelAddressSpace());
- KeBugCheck(0);
+ KEBUGCHECK(0);
}
MmUnlockAddressSpace(MmGetKernelAddressSpace());
return((PVOID)MdlPages[((ULONG)Offset) / PAGE_SIZE]);
}
+/*
+ * @unimplemented
+ */
VOID STDCALL
MmUnlockPages(PMDL Mdl)
/*
Mdl->MdlFlags = Mdl->MdlFlags & (~MDL_PAGES_LOCKED);
}
+/*
+ * @implemented
+ */
PVOID STDCALL
MmMapLockedPages(PMDL Mdl, KPROCESSOR_MODE AccessMode)
/*
if (AccessMode == UserMode)
{
DPRINT1("MDL mapping to user-mode not yet handled.\n");
- KeBugCheck(0);
+ KEBUGCHECK(0);
}
/* Calculate the number of pages required. */
if (StartingOffset == 0xffffffff)
{
DPRINT1("Out of MDL mapping space\n");
- KeBugCheck(0);
+ KEBUGCHECK(0);
}
Base = MiMdlMappingRegionBase + StartingOffset * PAGE_SIZE;
if (!NT_SUCCESS(Status))
{
DbgPrint("Unable to create virtual mapping\n");
- KeBugCheck(0);
+ KEBUGCHECK(0);
}
}
return(Base + Mdl->ByteOffset);
}
+/*
+ * @implemented
+ */
VOID STDCALL
MmUnmapLockedPages(PVOID BaseAddress, PMDL Mdl)
/*
}
}
+/*
+ * @unimplemented
+ */
VOID STDCALL MmProbeAndLockPages (PMDL Mdl,
KPROCESSOR_MODE AccessMode,
LOCK_OPERATION Operation)
ULONG NrPages;
NTSTATUS Status;
KPROCESSOR_MODE Mode;
- PEPROCESS CurrentProcess;
+ PEPROCESS CurrentProcess = NULL;
DPRINT("MmProbeAndLockPages(Mdl %x)\n", Mdl);
return;
}
- CurrentProcess = PsGetCurrentProcess();
- if (Mdl->Process != CurrentProcess)
- {
- KeAttachProcess(Mdl->Process);
- }
if (Mdl->StartVa >= (PVOID)KERNEL_BASE)
{
else
{
Mode = UserMode;
+ CurrentProcess = PsGetCurrentProcess();
+ if (Mdl->Process != CurrentProcess)
+ {
+ KeAttachProcess(Mdl->Process);
+ }
}
/*
MmReferencePage((LARGE_INTEGER)(LONGLONG)MdlPages[i]);
}
MmUnlockAddressSpace(&Mdl->Process->AddressSpace);
- if (Mdl->Process != CurrentProcess)
+ if (Mode == UserMode && Mdl->Process != CurrentProcess)
{
KeDetachProcess();
}
}
+/*
+ * @implemented
+ */
ULONG STDCALL MmSizeOfMdl (PVOID Base,
ULONG Length)
/*
}
+/*
+ * @implemented
+ */
VOID STDCALL
MmBuildMdlForNonPagedPool (PMDL Mdl)
/*
}
+/*
+ * @implemented
+ */
PMDL STDCALL
MmCreateMdl (PMDL MemoryDescriptorList,
PVOID Base,
return(MemoryDescriptorList);
}
+/*
+ * @unimplemented
+ */
VOID STDCALL
MmMapMemoryDumpMdl (PVOID Unknown0)
/*