MmDbgCopyMemory
NTSTATUS __stdcall MmDbgCopyMemory(
UINT64 UntrustedAddress,
VOID *Buffer,
UINT64 NumberOfBytes,
UINT64 ChunkSize,
UINT64 Flags){
unsigned int v5;
unsigned int v6;
NTSTATUS result;
unsigned int v10;
UINT64 v11;
v5 = ChunkSize;
v6 = NumberOfBytes;
if( (unsigned int)ChunkSize > 2 && (_DWORD)ChunkSize != 4 && (_DWORD)ChunkSize != 8 )
return -2147483646;
result = 0;
if( (_DWORD)NumberOfBytes )
{
do
{
LODWORD(v11) = Flags;
v10 = v6;
if( 4096 - (UntrustedAddress & 0xFFF) <= v6 )
v10 = 4096 - (UntrustedAddress & 0xFFF);
result = MiDbgCopyMemory(UntrustedAddress, Buffer, v10, v5, v11);
if( result < 0 )
break;
UntrustedAddress += v10;
Buffer = (char *)Buffer + v10;
v6 -= v10;
}
while( v6 );
}
return result;
}Referenced by:
KdpCopyMemoryChunks
KdpReadPhysicalMemory
KdpSearchMemory
KdpSearchPhysicalPage
KiTpWriteMemory