DrvDbSuspendDatabase
NTSTATUS __stdcall DrvDbSuspendDatabase(WCHAR *DriverDatabaseId, UINT8 Suspend){
char v2;
__int64 v3;
int v4;
char v5;
WCHAR *v6;
__int64 *i;
int v9;
unsigned int v10;
_DRVDB_NODE *DatabaseNode;
v3 = *(&stru_140CF2E80 + 608);
v4 = 0;
DatabaseNode = 0i64;
v5 = v2;
v6 = (WCHAR *)Suspend;
if( Suspend && wcsicmp((const wchar_t *)Suspend, L"*") )
{
v4 = DrvDbFindDatabaseNode((_DRVDB_CONTEXT *)v3, v6, &DatabaseNode);
if( v4 >= 0 )
{
if( v5 )
DatabaseNode[14] |= 4u;
else
DatabaseNode[14] &= ~4u;
}
}
else
{
for( i = *(__int64 **)(v3 + 16); i != (__int64 *)(v3 + 16); i = (__int64 *)*i )
{
v9 = *((_DWORD *)i + 14);
if( v5 )
v10 = v9 | 4;
else
v10 = v9 & 0xFFFFFFFB;
*((_DWORD *)i + 14) = v10;
}
}
return v4;
}Referenced by:
PiDrvDbSuspendNodes