KdpCopyMemoryChunks
NTSTATUS __stdcall KdpCopyMemoryChunks(
UINT64 Address,
PVOID Buffer,
UINT64 TotalSize,
UINT64 ChunkSize,
UINT64 Flags,
UINT64 *ActualSize){
unsigned int v6;
int v7;
unsigned int v10;
unsigned int i;
unsigned int v12;
UINT64 v14;
v6 = 8;
v7 = TotalSize;
if( (unsigned int)ChunkSize <= 8 )
{
v6 = ChunkSize;
if( !(_DWORD)ChunkSize )
v6 = 4;
}
v10 = TotalSize;
for( i = 1; v10; v10 -= i )
{
if( i < v6 )
{
do
{
v12 = 2 * i;
if( 2 * i > v10 )
break;
if( ((2 * i - 1) & (unsigned int)Address) != 0 )
break;
i *= 2;
}
while( v12 < v6 );
}
while( i > v10 )
i >>= 1;
LODWORD(v14) = Flags;
if( (int)MmDbgCopyMemory(Address, Buffer, i, i, v14) < 0 )
break;
Address += i;
Buffer = (char *)Buffer + i;
}
if( ActualSize )
*(_DWORD *)ActualSize = v7 - v10;
return v10 != 0 ? 0xC0000001 : 0;
}Referenced by:
KdLogDbgPrint
KdSystemDebugControl
KdpCopyCodeStream
KdpCreateRemoteFile
KdpFillMemory
KdpPrintString
KdpPromptString
KdpReadPhysicalMemory
KdpReadVirtualMemory
KdpReportCommandStringStateChange
KdpReportLoadSymbolsStateChange
KdpRestoreBreakPointEx
KdpSendWaitContinue
KdpSetCommonState
KdpSysReadControlSpace
KdpSysWriteControlSpace
KdpWriteBreakPointEx
KdpWritePhysicalMemory