SdbpFindMatchingName
UINT64 __stdcall SdbpFindMatchingName(_DB *pdb, UINT64 tiStart, _FIND_INFO *pFindInfo){
unsigned int NextIndexedRecord;
unsigned int FirstTag;
WCHAR *StringTagPtr;
bool v8;
int v10;
NextIndexedRecord = tiStart;
if( !(_DWORD)tiStart )
return NextIndexedRecord;
while( 1 )
{
FirstTag = SdbFindFirstTag(pdb, NextIndexedRecord, *((_WORD *)pFindInfo + 6));
if( !FirstTag )
break;
StringTagPtr = SdbGetStringTagPtr(pdb, FirstTag);
if( !StringTagPtr )
{
AslLogCallPrintf(
1ui64,
(INT8 *)"SdbpFindMatchingName",
0x10Aui64,
(INT8 *)"Can't get the name string for tagid 0x%x");
return 0i64;
}
if( (pFindInfo[5] & 1) != 0 )
{
v10 = wcsicmp(*((const wchar_t **)pFindInfo + 4), StringTagPtr);
v8 = v10 == 0;
if( v10 < 0 )
return 0i64;
}
else
{
v8 = wcsicmp(StringTagPtr, *((const wchar_t **)pFindInfo + 4)) == 0;
}
if( !v8 )
{
NextIndexedRecord = SdbpGetNextIndexedRecord(pdb, (unsigned int)*pFindInfo, pFindInfo);
if( NextIndexedRecord )
continue;
}
return NextIndexedRecord;
}
AslLogCallPrintf(
1ui64,
(INT8 *)"SdbpFindMatchingName",
0x100ui64,
(INT8 *)"The tag 0x%x was not found under tag 0x%x");
return 0i64;
}Referenced by:
SdbFindFirstStringIndexedTag
SdbFindNextStringIndexedTag