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