SdbpFindNextNamedTag
__int64 __fastcall SdbpFindNextNamedTag(void *a1, unsigned int a2, unsigned int a3, __int16 a4, wchar_t *Str1){
unsigned int v7;
unsigned int v9;
__int16 TagFromTagID;
unsigned int FirstTag;
int v13;
const wchar_t *StringTagPtr;
unsigned int NextChild;
v7 = a3;
v9 = 0;
TagFromTagID = SdbGetTagFromTagID((__int64)a1, a3);
if( TagFromTagID )
{
while( 1 )
{
NextChild = SdbGetNextChild((__int64)a1, a2, v7);
v7 = NextChild;
if( !NextChild )
break;
if( (unsigned __int16)SdbGetTagFromTagID((__int64)a1, NextChild) == TagFromTagID )
{
FirstTag = SdbFindFirstTag((INT64)a1, v7, a4);
v13 = FirstTag;
if( FirstTag )
{
StringTagPtr = (const wchar_t *)SdbGetStringTagPtr((RTL_RUN_ONCE *)a1, FirstTag);
if( !StringTagPtr )
{
AslLogCallPrintf(1ui64, "SdbpFindNextNamedTag", 0xD7ui64, "Can't get the name string tagid 0x%lx", v13);
return v9;
}
if( !wcsicmp(Str1, StringTagPtr) )
return v7;
}
}
}
return v9;
}
else
{
AslLogCallPrintf(1ui64, "SdbpFindNextNamedTag", 0xC6ui64, "Invalid tagid 0x%lx", v7);
return 0i64;
}
}Referenced by:
SdbpSearchDB