SdbGetIndex
UINT64 __stdcall SdbGetIndex(_DB *pdb, UINT16 tWhich, UINT16 tKey, UINT64 *lpdwFlags){
unsigned int v7;
int v8;
__int64 v9;
_WORD *i;
__int64 v11;
VOID *v13;
VOID **v14;
VOID *v15;
VOID **v16;
PVOID Context;
Context = 0i64;
v7 = 0;
if( lpdwFlags )
*(_DWORD *)lpdwFlags = 0;
if( RtlRunOnceExecuteOnce(
(_RTL_RUN_ONCE *)pdb + 167,
(UINT64)InitOnceScanIndexes,
(INT64 *)pdb,
(_RTL_RUN_ONCE *)&Context,
v13,
v14,
v15,
v16) < 0 )
{
AslLogCallPrintf(
1ui64,
(INT8 *)"SdbGetIndex",
0x427ui64,
(INT8 *)"RtlRunOnceExecuteOnce failed for InitOnceScanIndexes [%x]");
}
else
{
v8 = 0;
v9 = 0i64;
for( i = (char *)Context + 4; *i; i += 20 )
{
if( *i == tWhich && i[1] == tKey )
{
v11 = 5i64 * v8;
v7 = *((_DWORD *)Context + 2 * v11);
if( lpdwFlags )
*(_DWORD *)lpdwFlags = *((_DWORD *)Context + 2 * v11 + 8);
return v7;
}
++v8;
if( ++v9 >= 32 )
return v7;
}
}
return v7;
}Referenced by:
SdbFindFirstStringIndexedTag
SdbpFindFirstIndexedWildCardTag
SdbpSearchDB