Home | Info | Community | Development | myReactOS | Contact Us
Definition at line 2215 of file sysldr.c.
Referenced by MmLoadSystemImage().
{ PLIST_ENTRY NextEntry; BOOLEAN DriverFound = FALSE; PMI_LARGE_PAGE_DRIVER_ENTRY LargePageDriverEntry; ASSERT(KeGetCurrentIrql () <= APC_LEVEL); ASSERT(*ImageBaseAddress >= MmSystemRangeStart); #ifdef _X86_ if (!(KeFeatureBits & KF_LARGE_PAGE)) return FALSE; if (!(__readcr4() & CR4_PSE)) return FALSE; #endif /* Make sure there's enough system PTEs for a large page driver */ if (MmTotalFreeSystemPtes[SystemPteSpace] < (16 * (PDE_MAPPED_VA >> PAGE_SHIFT))) { return FALSE; } /* This happens if the registry key had a "*" (wildcard) in it */ if (MiLargePageAllDrivers == 0) { /* It didn't, so scan the list */ NextEntry = MiLargePageDriverList.Flink; while (NextEntry != &MiLargePageDriverList) { /* Check if the driver name matches */ LargePageDriverEntry = CONTAINING_RECORD(NextEntry, MI_LARGE_PAGE_DRIVER_ENTRY, Links); if (RtlEqualUnicodeString(BaseImageName, &LargePageDriverEntry->BaseName, TRUE)) { /* Enable large pages for this driver */ DriverFound = TRUE; break; } /* Keep trying */ NextEntry = NextEntry->Flink; } /* If we didn't find the driver, it doesn't need large pages */ if (DriverFound == FALSE) return FALSE; } /* Nothing to do yet */ DPRINT1("Large pages not supported!\n"); return FALSE; }