KsepStringDuplicateUnicode
VOID __fastcall KsepStringDuplicateUnicode(_UNICODE_STRING *TargetString, _UNICODE_STRING *SourceString){
unsigned __int64 v4;
wchar_t *Paged;
wchar_t *v6;
__int64 v7;
if( !SourceString )
{
v7 = ((unsigned __int8)_InterlockedExchangeAdd(&KsepHistoryErrorsIndex, 1u) + 1) & 0x3F;
KsepHistoryErrors[2 * v7 + 1] = -1073740768;
KsepHistoryErrors[2 * v7] = 197261;
if( (KsepDebugFlag & 4) != 0 )
RtlAssert("SourceString != NULL", "minkernel\\ntos\\kshim\\ksemisc.c", 653i64, 0i64);
}
*TargetString = 0i64;
v4 = SourceString->Length + 2i64;
Paged = (wchar_t *)KsepPoolAllocatePaged(v4);
v6 = Paged;
if( Paged )
{
memmove(Paged, SourceString->Buffer, v4 - 2);
v6[(v4 >> 1) - 1] = 0;
TargetString->Buffer = v6;
TargetString->Length = v4 - 2;
TargetString->MaximumLength = v4;
}
}Referenced by:
KseDriverLoadImage
KseShimDriverIoCallbacks