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

#pragma autorecover
#pragma classflags(64)
#pragma namespace("\\\\.\\Root\\CIMV2")

Instance of __Win32Provider as $DFSprov
{
  Name = "DFSProvider";
  ClsId = "{7F72CC7A-74A0-45b4-909C-14FB8186DD7E}";
  HostingModel = "NetworkServiceHost";
};

Instance of __InstanceProviderRegistration
{
  Provider = $DFSprov;
  SupportsGet = TRUE;
  SupportsPut = TRUE;
  SupportsDelete = TRUE;
  SupportsEnumeration = TRUE;
  QuerySupportLevels = {"WQL:UnarySelect"};
};

Instance of __MethodProviderRegistration
{
  Provider = $DFSprov;
};

#pragma deleteclass("Win32_DfsReplica",NOFAIL)

#pragma deleteclass("Win32_DfsLink",NOFAIL)

#pragma deleteclass("Win32_DfsLinkReplica",NOFAIL)

[dynamic,provider("DFSProvider") : ToInstance,SupportsCreate,CreateBy("Create"),SupportsDelete,DeleteBy("DeleteInstance"),SupportsUpdate,Locale(1033) : ToInstance] 
class Win32_DfsNode : CIM_LogicalElement
{
  [Override("Name"),key : ToInstance ToSubclass DisableOverride] string Name;
  boolean Root;
  [ValueMap{"0", "1", "2", "3"} : ToSubclass] uint32 State;
  [Override("The Description indicates a comment describing the node."),Write : ToSubclass] string Description;
  [Write : ToSubclass] uint32 Timeout;
  [Static,Constructor,Implemented,ValueMap{"0", ".."} : ToSubclass] uint32 Create([In] string DfsEntryPath,[In] string ServerName,[In] string ShareName,[In,Optional] string Description);
};

[dynamic,SupportsCreate,CreateBy("PutInstance"),SupportsDelete,DeleteBy("DeleteInstance"),SupportsUpdate,provider("DFSProvider") : ToInstance,Locale(1033) : ToInstance] 
class Win32_DfsTarget : CIM_LogicalElement
{
  [Key : ToInstance ToSubclass DisableOverride] string LinkName;
  [Key : ToInstance ToSubclass DisableOverride] string ServerName;
  [Key : ToInstance ToSubclass DisableOverride] string ShareName;
  [BitMap{"0", "1", "2"} : ToSubclass] uint32 State;
};

[dynamic,Provider("DFSProvider") : ToInstance,Locale(1033) : ToInstance] 
class Win32_DfsNodeTarget : CIM_Dependency
{
  [Override("Dependent"),Key : ToInstance ToSubclass DisableOverride] Win32_DfsNode Ref Dependent;
  [Key : ToInstance ToSubclass DisableOverride,Override("Antecedent"),Min(1) : ToSubclass] Win32_DfsTarget Ref Antecedent;
};
#pragma autorecover
#pragma classflags(64)
#pragma namespace("\\\\.\\Root\\CIMV2")
instance of __namespace{ name="ms_409";};
#pragma namespace("\\\\.\\Root\\CIMV2\\ms_409")

#pragma deleteclass("Win32_DfsReplica",NOFAIL)

#pragma deleteclass("Win32_DfsLink",NOFAIL)

#pragma deleteclass("Win32_DfsLinkReplica",NOFAIL)

[Description("The Win32_DfsNode class represents a root or a link of a domain based or a standalone distributed file system (DFS). ") : Amended ToSubclass,AMENDMENT, LOCALE("ms_409") : ToInstance] 
class Win32_DfsNode : CIM_LogicalElement
{
  [Description("The Name property is an identifier for the DFS node. It is same as the entry path of a node, based on the Universal Naming Convention. \nIt can take one of the following two forms: \\\\DfsServerName\\ShareName\\PathToLink where - DfsServerName is the name of a server that hosts the DFS root volume, ShareName is the name of the share published on the host server, PathToLink is the path to the physical share. The PathToLink is applicable only to nodes that are DFS links.\\\\DomainName\\FtDfsName\\PathToLink where - DomainName is the name of the domain that hosts the DFS root volume, FtDfsName is the name of the fault tolerant DFS root published in the domain directory service, PathToLink is the path to the physical share. The PathToLink is applicable only to nodes that are DFS links.") : Amended ToSubclass,key : ToInstance ToSubclass DisableOverride] string Name;
  [Description("The Root property indicates whether the node is a DFS root or a link. A value of True indicates that the node is a root.") : Amended ToSubclass] boolean Root;
  [Description("The State property indicates the status of the node.") : Amended ToSubclass,Values{"Ok", "Inconsistent", "Online", "Offline"} : Amended ToSubclass] uint32 State;
  [Description("The Timeout property indicates the time in seconds for which the client caches the referral of this node.") : Amended ToSubclass,Units("seconds") : Amended ToSubclass] uint32 Timeout;
  [Description("The Create method is used to create a new instance of the Win32_DfsNode class.\nThe method can return the following values:  \n0 - Success. \nOther - For integer values other than those listed above, refer to Win32 error code documentation.") : Amended ToSubclass,Values{"Success", "Other"} : Amended ToSubclass] uint32 Create([In,Description("The DfsEntryPath parameter specifies the path of the DFS root.") : Amended ToSubclass] string DfsEntryPath,[In,Description("The ServerName parameter specifies the name of the server that hosts the share to which the link is associated. For example, in order to create a link associated to a share \"\\\\myserver\\myshare\", the ServerName parameter should be set to \"\\\\myserver\".") : Amended ToSubclass] string ServerName,[In,Description("The ShareName parameter specifies the name of the share to which the link is associated with. For example, in order to create a link associated to a share \"\\\\myserver\\myshare\", the ShareName parameter should be set to \"myshare\". ") : Amended ToSubclass] string ShareName,[In,Description("The Description parameter specifies a comment describing the node.") : Amended ToSubclass] string Description);
};

[Description("The DfsTarget class represents a target of a DFS link.") : Amended ToSubclass,AMENDMENT, LOCALE("ms_409") : ToInstance] 
class Win32_DfsTarget : CIM_LogicalElement
{
  [Description("The LinkName indicates the entry path of the link to which this target belongs.") : Amended ToSubclass,Key : ToInstance ToSubclass DisableOverride] string LinkName;
  [Description("The ServerName indicates the name of the server that the link references.") : Amended ToSubclass,Key : ToInstance ToSubclass DisableOverride] string ServerName;
  [Description("The ShareName indicates the name of the share that the link references.") : Amended ToSubclass,Key : ToInstance ToSubclass DisableOverride] string ShareName;
  [Description("The State property indicates the state of the target. The state is reported as a bit map, where each bit is interpretted as follows. Note that Offline and Online are mutually exclusive.\nOffline - The specified computer is offline or unavailable.  \nOnline - The specified computer is available.  \nActive - The specified computer is to be made the active machine.") : Amended ToSubclass,BitValues{"Offline", "Online", "Active"} : Amended ToSubclass] uint32 State;
};

[Description("The Win32_DfsNodeTarget class associates a DFS node to one of its targets.") : Amended ToSubclass,AMENDMENT, LOCALE("ms_409") : ToInstance] 
class Win32_DfsNodeTarget : CIM_Dependency
{
  [Description("The Dependent property references a DFS node.") : Amended ToSubclass,Key : ToInstance ToSubclass DisableOverride] Win32_DfsNode Ref Dependent;
  [Description("The Antecedent property references a target for a DFS node. A node that is a link has one or more targets. A node that is a root has one target.") : Amended ToSubclass,Key : ToInstance ToSubclass DisableOverride] Win32_DfsTarget Ref Antecedent;
};
