MCPcopy Create free account
hub / github.com/NoMercy-ac/NoMercy / MapMemory

Function MapMemory

Source/Client/NM_Sys/API/MemoryUtils.cpp:505–528  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

503
504 _IRQL_requires_max_(APC_LEVEL)
505 NTSTATUS MapMemory(OUT PMAPPING_INFO MappingInfo, OPTIONAL PEPROCESS SrcProcess, OPTIONAL PEPROCESS DestProcess, IN PVOID VirtualAddress, ULONG Size,
506 KPROCESSOR_MODE AccessMode, ULONG Protect, MEMORY_CACHING_TYPE CacheType, OPTIONAL PVOID UserRequestedAddress )
507 {
508 if (!Size || !MappingInfo)
509 return STATUS_INVALID_PARAMETER;
510
511 *MappingInfo = {};
512
513 MappingInfo->Mdl = IoAllocateMdl(VirtualAddress, Size, FALSE, FALSE, NULL);
514 if (!MappingInfo->Mdl)
515 return STATUS_MEMORY_NOT_ALLOCATED;
516
517 NTSTATUS Status = MapMdl(MappingInfo->Mdl, &MappingInfo->BaseAddress, SrcProcess, DestProcess, TRUE, AccessMode, Protect, CacheType, UserRequestedAddress);
518 if (!NT_SUCCESS(Status))
519 {
520 if (Status == STATUS_INVALID_PARAMETER_6)
521 Status = STATUS_INVALID_PARAMETER_7; // Do it corresponding to current prototype
522
523 IoFreeMdl(MappingInfo->Mdl);
524 *MappingInfo = {};
525 }
526
527 return Status;
528 }
529
530 _IRQL_requires_max_(APC_LEVEL)
531 VOID UnmapMemory(IN PMAPPING_INFO MappingInfo)

Callers 2

OperateProcessMemoryFunction · 0.85
KbMapMemoryFunction · 0.85

Calls 1

MapMdlFunction · 0.85

Tested by

no test coverage detected