CmpCompareUnicodeString
NTSTATUS __stdcall CmpCompareUnicodeString(_UNICODE_STRING *SourceName, _UNICODE_STRING *DestName, UINT64 CompareFlags){
char v3;
wchar_t *Buffer;
wchar_t *v5;
unsigned __int16 v6;
unsigned __int16 v7;
UINT16 v8;
UINT16 v9;
v3 = CompareFlags;
Buffer = SourceName->Buffer;
v5 = DestName->Buffer;
v6 = DestName->Length >> 1;
v7 = SourceName->Length >> 1;
if( v7 )
{
while( v6 )
{
v8 = *Buffer++;
v9 = *v5++;
if( v8 != v9 )
{
if( (v3 & 1) == 0 && v8 >= 0x61u )
{
if( v8 > 0x7Au )
v8 = NLS_UPCASE(v8);
else
v8 -= 32;
}
if( (v3 & 2) == 0 && v9 >= 0x61u )
{
if( v9 <= 0x7Au )
v9 -= 32;
else
v9 = NLS_UPCASE(v9);
}
if( v8 != v9 )
return v8 - v9;
}
--v6;
if( !--v7 )
return v7 - v6;
}
}
return v7 - v6;
}Referenced by:
CmpCompareKeysByName
CmpFindKcbInHashEntryByName
CmpGetMappingHiveForString
CmpGetSymbolicLinkTarget
CmpPerformSingleKcbCacheLookup