ULONG NumberOfBytes,
PHYSICAL_ADDRESS LowestAcceptableAddress,
PHYSICAL_ADDRESS HighestAcceptableAddress,
- PHYSICAL_ADDRESS BoundaryAddressMultiple
+ PHYSICAL_ADDRESS BoundaryAddressMultiple,
+ BOOLEAN ZeroPages
);
NTSTATUS
PBase = MmGetContinuousPages(NumberOfBytes,
LowestAcceptableAddress,
HighestAcceptableAddress,
- BoundaryAddressMultiple);
+ BoundaryAddressMultiple,
+ TRUE);
if (PBase == 0)
{
MmLockAddressSpace(MmGetKernelAddressSpace());
MmGetContinuousPages(ULONG NumberOfBytes,
PHYSICAL_ADDRESS LowestAcceptableAddress,
PHYSICAL_ADDRESS HighestAcceptableAddress,
- PHYSICAL_ADDRESS BoundaryAddressMultiple)
+ PHYSICAL_ADDRESS BoundaryAddressMultiple,
+ BOOLEAN ZeroPages)
{
ULONG NrPages;
ULONG i, j;
{
if (MiGetPfnEntry(i)->Flags.Zero == 0)
{
- MiZeroPage(i);
+ if (ZeroPages) MiZeroPage(i);
}
else
{
/* Allocate an early page -- we'll account for it later */
KeReleaseQueuedSpinLock(LockQueuePfnLock, oldIrql);
PfnOffset = MmAllocEarlyPage();
- MiZeroPage(PfnOffset);
+ if (Consumer != MC_SYSTEM) MiZeroPage(PfnOffset);
return PfnOffset;
}