SdbCloseDatabaseRead
VOID __stdcall SdbCloseDatabaseRead(_DB *pdb){
__int64 v2;
_DB v3;
_ASL_STRING_HASH *v4;
void *v5;
v2 = *((_QWORD *)pdb + 170);
if( v2 && *(_DWORD *)(v2 + 16) == 1 )
{
if( *(_QWORD *)(v2 + 8) )
{
ExFreePoolWithTag(*(PVOID *)(v2 + 8), 0x74705041u);
v2 = *((_QWORD *)pdb + 170);
}
if( v2 )
ExFreePoolWithTag((PVOID)v2, 0x74705041u);
*((_QWORD *)pdb + 170) = 0i64;
v4 = (_ASL_STRING_HASH *)*((_QWORD *)pdb + 171);
if( v4 )
{
AslHashFree(v4);
*((_QWORD *)pdb + 171) = 0i64;
}
}
v3 = pdb[6];
if( (v3 & 8) != 0 && (v3 & 1) != 0 )
{
v5 = (void *)*((_QWORD *)pdb + 1);
if( v5 )
{
ExFreePoolWithTag(v5, 0x74705041u);
*((_QWORD *)pdb + 1) = 0i64;
pdb[5] = 0;
}
}
AslFileMappingDelete(*(_QWORD *)pdb);
ExFreePoolWithTag(pdb, 0x74705041u);
}Referenced by:
SdbInitDatabaseInMemory
SdbReleaseDatabase
SdbpCloseLocalDatabaseEx
SdbpOpenCompressedDatabase