DrvDbSuspendDatabase

INT64 __stdcall DrvDbSuspendDatabase(WCHAR *DriverDatabaseId, UINT8 Suspend){
  char v2; 
  __int64 v3; 
  int DatabaseNode; 
  char v5; 
  const WCHAR *v6; 
  __int64 *i; 
  int v9; 
  unsigned int v10; 
  const UNICODE_STRING *v11; 
  v3 = PiDrvDbCtx;
  DatabaseNode = 0;
  v11 = 0i64;
  v5 = v2;
  v6 = (const WCHAR *)Suspend;
  if( Suspend && wcsicmp((const wchar_t *)Suspend, L"*") )
  {
    DatabaseNode = DrvDbFindDatabaseNode(v3, v6, &v11);
    if( DatabaseNode >= 0 )
    {
      if( v5 )
        LODWORD(v11[3].Buffer) |= 4u;
      else
        LODWORD(v11[3].Buffer) &= ~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(unsigned int)DatabaseNode;
}

Referenced by:

PiDrvDbSuspendNodes