| 636 | } |
| 637 | |
| 638 | bool intel_driver::FreePool(uint64_t address) { |
| 639 | if (!address) |
| 640 | return 0; |
| 641 | |
| 642 | static uint64_t kernel_ExFreePool = GetKernelModuleExport(intel_driver::ntoskrnlAddr, "ExFreePool"); |
| 643 | |
| 644 | if (!kernel_ExFreePool) { |
| 645 | Log::Warning("Failed to find ExAllocatePool", false); |
| 646 | return 0; |
| 647 | } |
| 648 | |
| 649 | return CallKernelFunction<void>(nullptr, kernel_ExFreePool, address); |
| 650 | } |
| 651 | |
| 652 | uint64_t intel_driver::GetKernelModuleExport(uint64_t kernel_module_base, const std::string& function_name) { |
| 653 | if (!kernel_module_base) |