KsepStringTransform
NTSTATUS __stdcall KsepStringTransform(_UNICODE_STRING *TargetString, PWCHAR SourceString){
unsigned __int16 v2;
NTSTATUS result;
unsigned __int16 i;
wchar_t *Buffer;
__int64 v8;
__int64 v9;
v2 = 0;
if( !TargetString )
{
v8 = ((unsigned __int8)_InterlockedExchangeAdd(&KsepHistoryErrorsIndex, 1u) + 1) & 0x3F;
KsepHistoryErrors[2 * v8 + 1] = -1073740768;
KsepHistoryErrors[2 * v8] = 197405;
if( (KsepDebugFlag & 4) != 0 )
RtlAssert("TargetString != NULL", "minkernel\\ntos\\kshim\\ksemisc.c", 797i64, 0i64);
}
if( !SourceString )
{
v9 = ((unsigned __int8)_InterlockedExchangeAdd(&KsepHistoryErrorsIndex, 1u) + 1) & 0x3F;
KsepHistoryErrors[2 * v9 + 1] = -1073740768;
KsepHistoryErrors[2 * v9] = 197406;
if( (KsepDebugFlag & 4) != 0 )
RtlAssert("SourceString != NULL", "minkernel\\ntos\\kshim\\ksemisc.c", 798i64, 0i64);
}
result = KsepStringDuplicate(TargetString, SourceString);
if( result >= 0 )
{
for( i = TargetString->Length & 0xFFFE; v2 < i; i = TargetString->Length >> 1 )
{
Buffer = TargetString->Buffer;
if( Buffer[v2] == 92 )
Buffer[v2] = 33;
++v2;
}
return 0;
}
return result;
}Referenced by:
KseSetDeviceFlags
KsepDbQueryRegistryDeviceData
KsepDbQueryRegistryDeviceDataList