// Copyright (c) 1997-2003 Microsoft Corporation, All Rights Reserved

#pragma autorecover
#pragma classflags(64)
#pragma namespace("\\\\.\\Root\\Policy")
instance of __namespace{ name="ms_804";};
#pragma namespace("\\\\.\\Root\\Policy\\ms_804")

[Description("Defines a single rule in a SOM, expressed as a query") : Amended ToSubclass,AMENDMENT, LOCALE(0x0804)] 
class MSFT_Rule
{
  [Description("Language in which query is expressed") : Amended ToSubclass] string QueryLanguage;
  [Description("Namespace in which to evaluate query") : Amended ToSubclass] string TargetNameSpace;
  [Description("Query of interest") : Amended ToSubclass] string Query;
};

[Description("Provides a list of rules, expressed as queries which are evaluated on target machine") : Amended ToSubclass,AMENDMENT, LOCALE(0x0804)] 
class MSFT_SomFilter
{
  [key,Description("Unique identifier for this instance, expected to be a GUID in registry format") : Amended ToSubclass] string ID;
  [key,Description("Domain of this object, in DNS format: \"redmond.corp.microsoft.com\"") : Amended ToSubclass] String Domain;
  [Description("A user-friendly name for this SOM Filter") : Amended ToSubclass] string Name;
  [Description("Descriptive text describing this SOM Filter") : Amended ToSubclass] String Description;
  [Description("Rules to be evaluated") : Amended ToSubclass] MSFT_Rule Rules[];
  [Description("Determines whether the queries expressed in Rules apply to this machine. Returns S_OK (0) if all queries expressed in rules return results; S_FALSE (1) if they do not; and an applicable WMI error code if an error occurs.") : Amended ToSubclass] Uint32 Evaluate();
  [Description("Evaluates a list of SOMs, returns array result codes matching result of evaluating each") : Amended ToSubclass] Uint32 BatchEvaluate([IN] MSFT_SomFilter Ref filters[],[OUT] Uint32 results[]);
  [Description("Originator of this SOMFilter") : Amended ToSubclass] String Author;
  [Description("Author's organization") : Amended ToSubclass] String SourceOrganization;
  [Description("Last time this object was updated") : Amended ToSubclass] DateTime ChangeDate;
  [Description("Time that this object was created") : Amended ToSubclass] DateTime CreationDate;
};

#pragma DeleteClass("MSFT_RangeParam", NOFAIL)
#pragma DeleteClass("MSFT_PolicyTemplate", NOFAIL)
#pragma DeleteClass("MSFT_PolicyType", NOFAIL)
#pragma DeleteClass("MSFT_WMIGPO", NOFAIL)