RtlpWriteExtendedContext
NTSTATUS __stdcall RtlpWriteExtendedContext(
_CONTEXT_EX *Destination,
_CONTEXT_EX *DestinationLayout,
UINT64 ContextFlags,
_CONTEXT_EX *Source){
unsigned int v4;
NTSTATUS result;
__int64 ContextAlign[3];
UINT64 v9;
_CONTEXT_EX *Sourcea;
v4 = (unsigned int)Source;
LODWORD(v9) = 0;
LODWORD(ContextAlign[0]) = 0;
result = RtlpValidateContextFlags((unsigned int)Source, &v9);
if( result >= 0 )
{
RtlpGetLegacyContextLength(v4, 0i64, (UINT64 *)ContextAlign);
if( (v9 & 1) != 0 )
ProbeForWrite(
(UINT64)DestinationLayout + *(int *)(ContextFlags + 8),
*(unsigned int *)(ContextFlags + 12),
LODWORD(ContextAlign[0]));
if( (v9 & 2) != 0 )
ProbeForWrite(
(UINT64)DestinationLayout + *(int *)(ContextFlags + 16),
*(unsigned int *)(ContextFlags + 20),
64i64);
return RtlpCopyExtendedContext(1, DestinationLayout, (_CONTEXT_EX *)ContextFlags, v4, Sourcea, 0i64);
}
return result;
}Referenced by:
PspGetContextThreadInternal
PspWow64GetContextThread