SdbGetDatabaseID
NTSTATUS __stdcall SdbGetDatabaseID(_DB *pdb, VOID *pguidDB){
_DB v2;
NTSTATUS v3;
unsigned int FirstTag;
unsigned int v7;
_DB *v8;
INT8 *v10;
UINT64 v11;
v2 = pdb[6];
v3 = 0;
if( (v2 & 2) == 0 )
{
FirstTag = SdbFindFirstTag(pdb, 0i64, 0x7001u);
if( FirstTag )
{
v7 = SdbFindFirstTag(pdb, FirstTag, 0x9007u);
if( v7 )
{
v8 = pdb + 7;
if( !SdbReadBinaryTag(pdb, v7, pdb + 7, 0x10ui64) )
{
AslLogCallPrintf(1ui64, (INT8 *)"SdbGetDatabaseID", 0x1C3ui64, (INT8 *)"Failed to read database id 0x%lx");
return v3;
}
pdb[6] |= 2u;
v2 = pdb[6];
goto LABEL_6;
}
v10 = (INT8 *)"Failed to get the database id";
v11 = 446i64;
}
else
{
v10 = "Failed to get root tag";
v11 = 440i64;
}
AslLogCallPrintf(1ui64, (INT8 *)"SdbGetDatabaseID", v11, v10);
return v3;
}
v8 = pdb + 7;
LABEL_6:
if( (v2 & 2) != 0 )
{
memmove(pguidDB, v8, 0x10u);
return 1;
}
return v3;
}Referenced by:
SdbReadEntryInformation
SdbpValidateAndApplyCompatFlags