SdbpFindNextNamedTag
UINT64 __stdcall SdbpFindNextNamedTag(_DB *pdb, UINT64 tiParent, UINT64 tiPrev, UINT16 tName, const WCHAR *pszName){
unsigned int v5;
unsigned int v7;
unsigned int v9;
UINT16 TagFromTagID;
unsigned int FirstTag;
WCHAR *StringTagPtr;
unsigned int NextChild;
v5 = tiParent;
v7 = tiPrev;
v9 = 0;
TagFromTagID = SdbGetTagFromTagID(pdb, (unsigned int)tiPrev);
if( TagFromTagID )
{
while( 1 )
{
NextChild = SdbGetNextChild(pdb, v5, v7);
v7 = NextChild;
if( !NextChild )
break;
if( SdbGetTagFromTagID(pdb, NextChild) == TagFromTagID )
{
FirstTag = SdbFindFirstTag(pdb, v7, tName);
if( FirstTag )
{
StringTagPtr = SdbGetStringTagPtr(pdb, FirstTag);
if( !StringTagPtr )
{
AslLogCallPrintf(
1ui64,
(INT8 *)"SdbpFindNextNamedTag",
0xD7ui64,
(INT8 *)"Can't get the name string tagid 0x%lx");
return v9;
}
if( !wcsicmp(pszName, StringTagPtr) )
return v7;
}
}
}
return v9;
}
else
{
AslLogCallPrintf(1ui64, (INT8 *)"SdbpFindNextNamedTag", 0xC6ui64, (INT8 *)"Invalid tagid 0x%lx");
return 0i64;
}
}Referenced by:
SdbpSearchDB