KdpPromptString
UINT8 __stdcall KdpPromptString(STRING *Output, STRING *Input){
UINT64 Length;
char *Buffer;
int v5;
UINT64 v6;
char *v7;
UINT64 Flags;
UINT64 Flagsa;
UINT64 ActualSize;
__int128 v12;
__int128 v13;
int v14;
__int16 v15;
__int16 v16;
int v17;
int MaximumLength;
Length = Output->Length;
Buffer = Output->Buffer;
LODWORD(ActualSize) = 0;
LODWORD(Flags) = 4;
v12 = 0i64;
v13 = 0i64;
KdpCopyMemoryChunks((UINT64)Buffer, KdpMessageBuffer, Length, 0i64, Flags, &ActualSize);
if( (unsigned __int64)(unsigned int)ActualSize + 16 > (unsigned int)KdTransportMaxPacketSize )
LODWORD(ActualSize) = KdTransportMaxPacketSize - 16;
v15 = KeProcessorLevel;
v14 = 12849;
v16 = *((_DWORD *)KeGetPcr() + 105);
MaximumLength = Input->MaximumLength;
v17 = ActualSize;
LOWORD(v12) = ActualSize;
*((_QWORD *)&v13 + 1) = &v14;
LOWORD(v13) = 16;
*((_QWORD *)&v12 + 1) = KdpMessageBuffer;
KdSendPacket(3i64, &v13, &v12, &KdpContext);
WORD1(v13) = 16;
WORD1(v12) = 4096;
do
{
v5 = KdReceivePacket(3i64, &v13, &v12, &ActualSize, &KdpContext);
if( v5 == 2 )
return 1;
}
while( v5 );
v6 = (unsigned int)ActualSize;
v7 = Input->Buffer;
if( (unsigned int)ActualSize > Input->MaximumLength )
v6 = Input->MaximumLength;
LODWORD(Flagsa) = 5;
LODWORD(ActualSize) = v6;
KdpCopyMemoryChunks((UINT64)v7, KdpMessageBuffer, v6, 0i64, Flagsa, &ActualSize);
Input->Length = ActualSize;
return 0;
}Referenced by:
KdpPrompt