// ===================================================================
// Title:  NAS File Services
// $State: Exp $
// $Date: 2004/08/15 05:55:42 $
// $Source: /cvsroot/wbemservices/open/mof/dmtf/2.9/System_FileServices.mof,v $
// $Revision: 1.1 $
// ===================================================================
//#pragma inLine ("Includes/copyright.inc")
// Copyright 1998-2004 Distributed Management Task Force, Inc. (DMTF).
// All rights reserved.
// DMTF is a not-for-profit association of industry members dedicated
// to promoting enterprise and systems management and interoperability.
// DMTF specifications and documents may be reproduced for uses
// consistent with this purpose by members and non-members,
// provided that correct attribution is given.
// As DMTF specifications may be revised from time to time,
// the particular version and release date should always be noted.
// 
// Implementation of certain elements of this standard or proposed
// standard may be subject to third party patent rights, including
// provisional patent rights (herein "patent rights"). DMTF makes
// no representations to users of the standard as to the existence
// of such rights, and is not responsible to recognize, disclose, or
// identify any or all such third party patent right, owners or
// claimants, nor for any incomplete or inaccurate identification or
// disclosure of such rights, owners or claimants. DMTF shall have no
// liability to any party, in any manner or circumstance, under any
// legal theory whatsoever, for failure to recognize, disclose, or
// identify any such third party patent rights, or for such party's
// reliance on the standard or incorporation thereof in its product,
// protocols or testing procedures. DMTF shall have no liability to
// any party implementing such standard, whether such implementation
// is foreseeable or not, nor to any patent owner or claimant, and shall
// have no liability or responsibility for costs or losses incurred if
// a standard is withdrawn or modified after publication, and shall be
// indemnified and held harmless by any party implementing the
// standard from any and all claims of infringement by a patent owner
// for such implementations.
// 
// For information about patents held by third-parties which have
// notified the DMTF that, in their opinion, such patent may relate to
// or impact implementations of DMTF standards, visit
// http://www.dmtf.org/about/policies/disclosures.php.
//#pragma inLine
// ===================================================================
// Description: The NAS Services Model defines the services that
//              support sharing/exporting files and directories that
//              are contained in networked file systems.
//              This file defines the FileExportService and
//              FileImportService classes that create, modify, and
//              delete FileShares and support the mapping to local
//              named files.
// 
//              The object classes below are listed in an order that
//              avoids forward references. Required objects, defined
//              by other working groups, are omitted.
// ==================================================================
// Change Log for v2.9 Preliminary Company Review
// CR1446 - Update descriptions for InUseOptions and WaitTime.
// CR1465 - Corrected compile errors and warnings.
// 
// Change Log for v2.9 Preliminary
// CR1326 - Definitions needed to support methods to create or modify
//          an ExportedFileShare using a FileExportService.
// CR1327 - Definitions needed to support methods to create or modify
//          an ImportedFileShare using a FileImportService.
// 
// ==================================================================

#pragma locale ("en_US")
// ===================================================================
// FileExportService
// ===================================================================
   [Experimental, Version ( "2.8.1000" ), Description (
       "Provides configuration support for exporting elements "
       "('files') of a FileSystem. FileExportService(s) are hosted by "
       "a ComputerSystem that exports the files (these would be the "
       "Filers in a NAS Head). These shared elements (FileShares) are "
       "accessed through ProtocolEndpoint(s) hosted by the Filer that "
       "support the specified file-sharing protocol. FileShares are "
       "associated with the Service via ServiceAffectsElement and with "
       "the ProtocolEndpoint(s) via SAPAvailableForElement.")]
class CIM_FileExportService : CIM_Service {
      [Description (
          "Start a Job to create a FileShare from an element of a "
          "FileSystem or an imported FileShare. Makes the element "
          "available as a FileShare and returns it as the parameter "
          "TheShare of type CIM_FileShare. \n"
          "If 0 is returned, the method completed successfully and no "
          "ConcreteJob instance was required. If 0x1000 is returned, a "
          "ConcreteJob has been started to create the FileShare. The "
          "Job's reference will be returned in the output parameter "
          "Job. If the Job succeeds, the FileShare will be created and "
          "configured and ready to be exported. If the FileShare has "
          "been configured to be exported at a later time, its "
          "'EnabledState' attribute will not be set to \"Enabled\", "
          "until exported. The FileShare will have a HostedShare "
          "association to the host ComputerSystem. \n"
          "This method MUST return a CIM_Error representing that a "
          "single named property of a setting (or other) parameter "
          "(either reference or embedded object) has an invalid value "
          "or that an invalid combination of named properties of a "
          "setting (or other) parameter (either reference or embedded "
          "object) has been requested. \n"
          "The reference parameter Root indicates the FileSystem or "
          "FileShare whose element is being exported, either directly, "
          "or indirectly by specifying a Directory element that is "
          "associated via MountedElement to the FileSystem or "
          "FileShare. \n"
          "The string parameter SharedElementPath indicates the shared "
          "element within the file hierarchy by a path relative to the "
          "Root. If the Root is a FileSystem, this path begins at the "
          "root directory of the FileSystem; if the Root is a "
          "FileShare, this path begins at the directory associated to "
          "the FileShare via MountedElement; if the Root is a "
          "Directory, this path begins at that Directory. This is a "
          "string because multiple paths could lead to the same "
          "element but the access rights or other privileges could be "
          "specific to the path. \n"
          "Goal is a CIM_ExportedFileShareSetting element encoded as a "
          "string-valued EmbeddedInstance parameter; this allows the "
          "client to specify the properties desired for the share. \n"
          "If the method is successful, it will return a CIM_FileShare "
          "in the OUT parameter TheShare. The settings on the "
          "FileShare will be specified by the ExportedFileShareSetting "
          "element associated with the TheShare element via "
          "CIM_ElementSettingData. This ExportedFileShareSetting will "
          "also be associated via SettingGeneratedByCapabilities to "
          "the ExportedFileShareCapabilities element that was used for "
          "creating the FileShare. The FileShare will also be "
          "associated to the ComputerSystem via HostedShare, to the "
          "FileExportService via ServiceAffectsElement, and to one or "
          "more ServiceAccessPoints via SAPAvailableForElement."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "10..", "0x1000", "0x1001..0x7FFF", "0x8000.." }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "FileExportService Not Accessible", "Root is not accessible",
          "Base Directory element of Root is Not Accessible",
          "Path does not specify a shareable element", "DMTF Reserved",
          "Method Parameters Checked - Job Started", "Method Reserved",
          "Vendor Specific" }]
   uint32 CreateExportedShare ( 
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job, 
         [IN, OUT, Description (
             "A reference indicating an element whose sub-element is "
             "being exported. The class that Root references must be a "
             "FileSystem, a FileShare that has a MountedElement "
             "association (or a derived class of MountedElement) to a "
             "LogicalFile (or Directory), or a LogicalFile (or a "
             "derived class such as Directory) that has a "
             "MountedElement association to a FileShare or FileSystem. "
             "\nIf Root is NULL, it indicates the root of the "
             "FileExportService host's default local FileSystem, that "
             "is used as the default local name space.")]
      CIM_LogicalElement REF Root, 
         [IN, Description (
             "A string representing a path to the shared element from "
             "the Directory indicated by Root. \n"
             "Multiple paths could lead to the same element but the "
             "access rights or other privileges could be specific to "
             "the path. The client must specify the path. \n"
             "If SharedElementPath is NULL or the empty string, it "
             "indicates the \"root\" LogicalElement contained by Root.")]
      string SharedElementPath, 
         [IN, Description (
             "The client-specified requirements for how the specified "
             "FileShare element is to be shared or exported by the "
             "FileExportService. This is an element of the "
             "CIM_ExportedFileShareSetting class, or a derived class, "
             "encoded as a string-valued embedded object parameter. If "
             "NULL or the empty string, the default configuration will "
             "be specified by the FileExportService."), 
          EmbeddedInstance ( "CIM_ExportedFileShareSetting" )]
      string Goal, 
         [OUT, Description (
             "This specifies the FileShare element (or its derived "
             "class) that is created by the method, if successful.")]
      CIM_FileShare REF TheShare, 
         [IN, Description (
             "A reference to a concrete derived class of CIM_Identity "
             "that indicates the user id to use for default access to "
             "this share. A NULL value indicates that no user id is "
             "specified. The provider is expected to surface this "
             "access using the privilege model.")]
      CIM_Identity REF DefaultUserId, 
         [IN, Description (
             "An array of strings that specify the hosts that have "
             "root access to this Share, if the "
             "CIM_ExportedFileShareSetting.RootAccess property is set "
             "to 'Allow Root Access'. Each entry specifies a host by a "
             "vendor-specific host-id, prefixed with '+' or '-' to "
             "indicate that access is either Granted or Denied. The "
             "name of the host is its Durable Name, which is expected "
             "to be a fully-qualified-domain-name or its IP Address. "
             "If one of the entries is '+*', root access will be "
             "allowed from all hosts. If one of the entries is '-*', "
             "root access will be denied to all hosts, effectively "
             "overriding the value of the property "
             "CIM_ExportedFileShareSetting.RootAccess. The provider is "
             "expected to surface this access using the privilege "
             "model. \n"
             "This property needs to be a string because the remote "
             "host may not be known to the provider and therefore a "
             "reference to the host may not exist."), 
          ArrayType ( "Indexed" ), 
          ModelCorrespondence { 
             "CIM_ExportedFileShareSetting.RootAccess" }]
      string RootAccessHosts[], 
         [IN, Description (
             "An array of strings that specify the ServiceAccessPoints "
             "that can connect to this Share, if the "
             "CIM_ExportedFileShareSettings.AccessPoints property is "
             "set to 'Named Ports'. Each entry specifies one or more "
             "access points by its Name, unique within the System "
             "hosting the FileShare. The ids may be prefixed with '+' "
             "or '-'to indicate that access is to be granted or "
             "denied. \n"
             "If one of the entries is '+*', all access points "
             "supported by the service will be supported. If one of "
             "the entries is '-*', all access points will be denied "
             "access, effectively overriding the value of the property "
             "CIM_ExportedFileShareSetting.AccessPoints. The provider "
             "is expected to surface these access rights (whether "
             "granted or denied) using the privilege model. Any "
             "AccessPoints granted access via this parameter will also "
             "be associated to this share with "
             "CIM_SAPAvailableForElement. If the AccessPoint is not "
             "already enabled it will appear in a disabled state. \n"
             "This property needs to be a string because the access "
             "point may not be known to the provider and therefore a "
             "reference to the ServiceAccessPoint may not exist."), 
          ArrayType ( "Indexed" ), 
          ModelCorrespondence { 
             "CIM_ExportedFileShareSetting.AccessPoints" }]
      string AccessPointPorts[]); 

      [Description (
          "Start a Job to modify an Exported FileShare. \n"
          "If 0 is returned, the method completed successfully and no "
          "ConcreteJob instance was required. If 0x1000 is returned, a "
          "ConcreteJob has been started to modify the FileShare. The "
          "Job's reference will be returned in the output parameter "
          "Job. \n"
          "If the Job succeeds, the FileShare will be modified and "
          "re-configured and ready to be exported. If the FileShare "
          "has been configured to be exported at a later time, its "
          "'EnabledState' attribute will not be set to \"Enabled\", "
          "until exported. A reference to the FileShare will be "
          "returned in TheShare. The FileShare will have a HostedShare "
          "association to the host ComputerSystem, as before. If the "
          "parameters are, invalid, this method MUST return a "
          "CIM_Error representing that a single named property of a "
          "setting (or other) parameter (either reference or embedded "
          "object) has an invalid value or that an invalid combination "
          "of named properties of a setting (or other) parameter "
          "(either reference or embedded object) has been requested. \n"
          "This method cannot be used to change the element that has "
          "been exported, but a provider may support changing the "
          "pathname used to access it by re-specifying Root and/or "
          "SubElementPath. The reference parameter Root indicates the "
          "FileSystem or FileShare whose element is being exported, "
          "either directly, or indirectly by specifying a Directory "
          "element that is associated via MountedElement to the "
          "FileSystem or FileShare. The FileSystem or FileShare so "
          "indicated cannot be changed by this method. \n"
          "The parameter SharedElementPath indicates the shared "
          "element within the file hierarchy by a path relative to the "
          "Root. If the Root is a FileSystem, this path begins at the "
          "root directory of the FileSystem; if the Root is a "
          "FileShare, this path begins at the directory associated to "
          "the FileShare via MountedElement; if the Root is a "
          "Directory, this path begins at that Directory. If this path "
          "is modified, it must still indicate the same terminal "
          "element. \n"
          "Goal is a CIM_ExportedFileShareSetting element encoded as a "
          "string-valued embedded object parameter; this allows the "
          "client to specify the properties desired for the share. \n"
          "If the method is successful, it will return a reference to "
          "the same CIM_FileShare in the INOUT parameter TheShare. The "
          "settings for the FileShare and the ServiceAccessPoint "
          "associations may change, but the HostedShare and "
          "ServiceAffectsElement associations to the share must not be "
          "changed by this method. \n"
          "The input TheShare must not be NULL."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "10", "11..", "0x1000", "0x1001..0x7FFF", "0x8000.." }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "FileExportService Not Accessible", "Root is not accessible",
          "Base Directory element of Root is Not Accessible",
          "Path does not specify a shareable element",
          "Share in use and cannot be Modified, Failed",
          "DMTF Reserved", "Method Parameters Checked - Job Started",
          "Method Reserved", "Vendor Specific" }]
   uint32 ModifyExportedShare ( 
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job, 
         [IN, Description (
             "A reference indicating an element whose sub-element is "
             "being exported. The class that Root references must be a "
             "FileSystem, a FileShare that has a MountedElement "
             "association (or a derived class of MountedElement) to a "
             "Directory, or a Directory that has a MountedElement "
             "association to a FileShare or FileSystem. If the "
             "FileShare being modified is currently exported or "
             "imported, this parameter should indicate the same Root "
             "FileSystem or FileShare element. \n"
             "If Root is NULL, it indicates no change to the current "
             "root.")]
      CIM_LogicalElement REF Root, 
         [IN, Description (
             "A string representing a path to the shared element from "
             "the Directory element indicated by Root. If the "
             "FileShare being modified is currently exported or "
             "imported, this parameter should specify the same shared "
             "element, even if via a different path. \n"
             "Multiple paths could lead to the same element but the "
             "access rights or other privileges could be specific to "
             "the path. The client must specify the path during "
             "creation. \n"
             "If SharedElementPath is NULL, it indicates no change to "
             "the current path. If SharedElementPath is the empty "
             "string, it indicates the element indicated by Root.")]
      string SharedElementPath, 
         [IN, Description (
             "The client-specified requirements for how the export "
             "settings for the specified FileShare element are to be "
             "modifed by the FileExportService. If the FileShare is "
             "currently imported and not exported this will set up the "
             "necessary SharedElement, SharedElementRoot, HostedShare, "
             "and other associations. Goal is an element of the "
             "CIM_ExportedFileShareSetting class, or a derived class, "
             "encoded as a string-valued embedded object parameter. If "
             "NULL or the empty string, the existing configuration "
             "must include an ExportedFileShareSetting which will not "
             "be changed. Any differences in property values will be "
             "merged by the FileExportService."), 
          EmbeddedInstance ( "CIM_ExportedFileShareSetting" )]
      string Goal, 
         [IN, Description (
             "TheShare indicates the FileShare that is to be modified. "
             "This can be an existing exported FileShare or an "
             "existing imported FileShare.")]
      CIM_FileShare REF TheShare, 
         [IN, Description (
             "An enumerated integer that specifies the action that the "
             "provider should take if the FileShare is still in use "
             "when this request is made. The WaitTime parameter "
             "indicates the 'specified time' used for this function. \n"
             "This option is only relevant if the FileShare must be "
             "made unavailable while the request is being executed."), 
          ValueMap { "2", "3", "4", "..", "0x1000..0xFFFF" }, 
          Values { "Do Not Execute Request",
             "Wait for specified time, then Execute Request "
              "Immediately",
             "Attempt Quiescence for specified time, "
             "then Execute Request Immediately", "DMTF Reserved",
             "Vendor Defined" }]
      uint16 InUseOptions, 
         [IN, Description (
             "An integer that indicates the time (in seconds) that the "
             "provider must wait before executing this request if it "
             "cannot be done while the FileShare is in use. If "
             "WaitTime is not zero, the method will create a job, if "
             "supported by the provider, and return immediately. If "
             "the provider does not support asynchronous jobs, there "
             "is a possibility that the client could time-out before "
             "the job is completed. \n"
             "The combination of InUseOptions = '4' and WaitTime ='0' "
             "(the default) is interpreted as 'Wait (forever) until "
             "Quiescence, then Execute Request' and will be performed "
             "asynchronously if possible."), 
          Units ( "seconds" )]
      uint32 WaitTime, 
         [IN, Description (
             "A reference to a concrete derived class of CIM_Identity "
             "that indicates the user id to use for default access to "
             "this share. A NULL value indicates that any existing "
             "user id is not changed. The provider is expected to "
             "surface this access using the privilege model. This "
             "method does not support disabling the currently "
             "specified default user id, which must be done using the "
             "privilege model.")]
      CIM_Identity REF DefaultUserId, 
         [IN, Description (
             "An array of strings that specify additional hosts that "
             "have root access to this Share, if the "
             "CIM_ExportedFileShareSetting.RootAccess property is set "
             "to 'Allow Root Access'. Each entry specifies a host by a "
             "vendor-specific host-id, prefixed with '+' or '-' to "
             "indicate that access is either Granted or Denied. The "
             "name of the host is its Durable Name, which is expected "
             "to be a fully-qualified-domain-name or its IP Address. "
             "If one of the entries is '+*', root access will be "
             "allowed from all hosts. If one of the entries is '-*', "
             "root access will be denied to all hosts, effectively "
             "overriding the value of the property "
             "CIM_ExportedFileShareSetting.RootAccess. If this is a "
             "null entry, the currently configured set of hosts will "
             "not be changed. If this is an empty array, the currently "
             "configured set of hosts will be cleared. The provider is "
             "expected to surface this access using the privilege "
             "model. \n"
             "This property needs to be a string because the remote "
             "host may not be known to the provider and therefore a "
             "REF to the host may not exist."), 
          ArrayType ( "Indexed" ), 
          ModelCorrespondence { 
             "CIM_ExportedFileShareSetting.RootAccess" }]
      string RootAccessHosts[], 
         [IN, Description (
             "An array of strings that specify additional "
             "ServiceAccessPoints that can connect to this Share, if "
             "the CIM_ExportedFileShareSettings.AccessPoints property "
             "is set to 'Named Ports'. Each entry specifies one or "
             "more access points by its Name, unique within the System "
             "hosting the FileShare. The ids may be prefixed with '+' "
             "or '-'to indicate that access is to be granted or "
             "denied. \n"
             "If one of the entries is '+*', all access points "
             "supported by the service will be supported. If one of "
             "the entries is '-*', all access points will be denied "
             "access, effectively overriding the value of the property "
             "CIM_ExportedFileShareSetting.AccessPoints. If this is a "
             "null entry, the currently configured set of access "
             "points will not be changed. If this is an empty array, "
             "the currently configured set of access points will be "
             "cleared. The provider is expected to surface these "
             "access rights (whether granted or denied) using the "
             "privilege model. Any AccessPoints granted access via "
             "this parameter will also be associated to this share "
             "with CIM_SAPAvailableForElement. If the AccessPoint is "
             "not already enabled it will appear in a disabled state. "
             "\nThis property needs to be a string because the access "
             "point may not be known to the provider and therefore a "
             "REF to the ServiceAccessPoint may not exist."), 
          ArrayType ( "Indexed" ), 
          ModelCorrespondence { 
             "CIM_ExportedFileShareSetting.AccessPoints" }]
      string AccessPointPorts[]); 

      [Description (
          "Start a Job to release an exported Share. \n"
          "If 0 is returned, the method completed successfully and no "
          "ConcreteJob instance was required. If 0x1000 is returned, a "
          "ConcreteJob will be started to release the Share. The Job's "
          "reference will be returned in the OUT parameter Job. \n"
          "If the method is successful, the Share element will not be "
          "surfaced for export and the shared element will not be "
          "exported anymore through this Share. \n"
          "If InUseOptions are specified, this method will succeed "
          "only if no more clients are accessing the share."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "10", "..", "0x1000",
          "0x1001..0x7FFF", "0x8000.." }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "Share in use, Failed", "DMTF Reserved",
          "Method Parameters Checked - Job Started", "Method Reserved",
          "Vendor Specific" }]
   uint32 ReleaseExportedShare ( 
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job, 
         [IN, Description (
             "The imported Share to be released.")]
      CIM_Share REF TheShare, 
         [IN, Description (
             "An enumerated integer that specifies the action that the "
             "provider should take if the FileShare is still in use "
             "when this request is made. The WaitTime parameter "
             "indicates the 'specified time' used for this function. \n"
             "This option is only relevant if the FileShare must be "
             "made unavailable while the request is being executed."), 
          ValueMap { "2", "3", "4", "..", "0x1000..0xFFFF" }, 
          Values { "Do Not Execute Request",
             "Wait for specified time, then Release Immediately",
             "Attempt Quiescence for specified time, then Release "
              "Immediately", "DMTF Reserved", "Vendor Defined" }]
      uint16 InUseOptions, 
         [IN, Description (
             "An integer that indicates the time (in seconds) that the "
             "provider must wait before releasing this FileShare. If "
             "WaitTime is not zero, the method will create a job, if "
             "supported by the provider, and return immediately. If "
             "the provider does not support asynchronous jobs, there "
             "is a possibility that the client could time-out before "
             "the job is completed. \n"
             "The combination of InUseOptions = '4' and WaitTime ='0' "
             "(the default) is interpreted as 'Wait (forever) until "
             "Quiescence, then Release' and will be performed "
             "asynchronously if possible."), 
          Units ( "seconds" )]
      uint32 WaitTime); 
};

// ===================================================================
// FileExportCapabilities
// ===================================================================
   [Experimental, Version ( "2.8.1000" ), Description (
       "FileExportCapabilities specifies the capability of a "
       "FileExportService to support the specified methods.")]
class CIM_FileExportCapabilities : CIM_Capabilities {

      [Description (
          "An array of enumerated integers indicating the filesharing "
          "protocols that this service can support. Duplicate entries "
          "are permitted because they may be associated with different "
          "versions in the corresponding ProtocolVersions property. "
          "For each file sharing protocol supported nby the Service, "
          "there will be at least one FileExportCapabilities element."), 
       ValueMap { "0", "2", "3", "4", "5", "6", "7", "..", "0x8000.." }, 
       Values { "Unknown", "NFS", "CIFS", "DAFS", "WebDAV", "HTTP",
          "FTP", "DMTF Reserved", "Vendor Defined" }, Read,
          ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_ExportedFileShareSetting.FileSharingProtocol",
          "CIM_FileImportCapabilities.FileSharingProtocol",
          "CIM_FileExportCapabilities.ProtocolVersions" }]
   uint16 FileSharingProtocol[];

      [Description (
          "An array of strings listing the versions of the file "
          "sharing protocol in the corresponding FileSharingProtocol "
          "property that can be supported by this FileExportService."), 
       Read, ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_ExportedFileShareSetting.ProtocolVersions",
          "CIM_FileImportCapabilities.ProtocolVersions",
          "CIM_FileExportCapabilities.FileSharingProtocol" }]
   string ProtocolVersions[];

      [Description (
          "An array of methods of this Service that are supported as "
          "synchronous methods."), 
       ValueMap { "2", "3", "4", "5", "..", "0x8000.." }, 
       Values { "CreateExportedShare", "ModifyExportedShare",
          "ReleaseExportedShare", "CreateGoal", "DMTF Reserved",
          "Vendor Defined" }, Read]
   uint16 SupportedSynchronousMethods[];

      [Description (
          "An array of methods of this Service that are supported as "
          "asynchronous methods."), 
       ValueMap { "2", "3", "4", "5", "..", "0x8000.." }, 
       Values { "CreateExportedShare", "ModifyExportedShare",
          "ReleaseExportedShare", "CreateGoal", "DMTF Reserved",
          "Vendor Defined" }, Read]
   uint16 SupportedAsynchronousMethods[];

      [Description (
          "An enumerated value that indicates the enabled/disabled "
          "states to which the Service can initialize the created file "
          "share. Unlike FileShare.EnabledState it cannot indicate "
          "transitions between requested states because those states "
          "cannot be requested. The following text briefly summarizes "
          "the various enabled/disabled initial states: \n"
          "Enabled (2) indicates that the element will execute "
          "commands, will process any queued commands, and will queue "
          "new requests. \n"
          "Disabled (3) indicates that the element will not execute "
          "commands and will drop any new requests. \n"
          "In Test (7) indicates that the element will be in a test "
          "state. \n"
          "Deferred (8) indicates that the element will not process "
          "any commands but will queue new requests. \n"
          "Quiesce (9) indicates that the element is enabled but in a "
          "restricted mode. The element's behavior is similar to the "
          "Enabled state, but it only processes a restricted set of "
          "commands. All other requests are queued."), 
       ValueMap { "0", "2", "3", "7", "8", "9", "..", "0x8000.." }, 
       Values { "Unknown", "Enabled", "Disabled", "In Test",
          "Deferred", "Quiesce", "DMTF Reserved", "Vendor Defined" },
       Read]
   uint16 InitialEnabledState = 8;
};

// =====================================================================
// ExportedFileShareSetting
// =====================================================================

   [Experimental, Version ( "2.8.1000" ), Description (
       "The ExportedFileShareSetting describes the attribute values "
       "that were set when a FileShare was created for a LogicalFile "
       "by a FileExportService. These settings may be associated with "
       "the created Share via the ElementSettingData association; or, "
       "associated with an ExportedFileShareCapabilities element via "
       "SettingAssociatedToCapabilities; or, used as an "
       "EmbeddedInstanceparameter in a method (for instance, as a "
       "Goal). If the setting is associated with a FileShare, it "
       "cannot have undefined or NULL properties. If it is associated "
       "with an ExportedFileShareCapabilities, a NULL property "
       "indicates that the property is not supported or that the value "
       "is a vendor-specific context-dependent default that may not be "
       "changed. The FileSharingProtocol and "
       "ProtocolVersions properties cannot have a default value. If "
       "this Setting is associated with a "
       "ExportedFileShareCapabilities element via "
       "SettingAssociatedToCapabilities, the corresponding "
       "FileSharingProtocol and ProtocolVersions properties must match.")]
class CIM_ExportedFileShareSetting : CIM_SettingData {

      [Description (
          "An enumerated integer indicating the filesharing protocol "
          "that this share can support. This property must exist and "
          "have a value. The version of the protocol must be specified "
          "in the corresponding ProtocolVersions property."), 
       ValueMap { "0", "2", "3", "4", "5", "6", "7", "..", "0x8000.." }, 
       Values { "Unknown", "NFS", "CIFS", "DAFS", "WebDAV", "HTTP",
          "FTP", "DMTF Reserved", "Vendor Defined" }, Read, 
       ModelCorrespondence { 
          "CIM_ExportedFileShareCapabilities.FileSharingProtocol",
          "CIM_ImportedFileShareSetting.FileSharingProtocol",
          "CIM_ExportedFileShareSetting.ProtocolVersions" }]
   uint16 FileSharingProtocol;

      [Description (
          "An array of strings listing the versions of the file "
          "sharing protocol that this share can support. This property "
          "must exist and have at least one entry."), 
       Read, ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_ExportedFileShareCapabilities.ProtocolVersions",
          "CIM_ImportedFileShareSetting.ProtocolVersions",
          "CIM_ExportedFileShareSetting.FileSharingProtocol" }]
   string ProtocolVersions[];

      [Description (
          "InitialEnabledState is an integer enumeration that "
          "indicates the enabled/disabled states initially set for a "
          "file share element. Unlike FileShare.EnabledState it cannot "
          "indicate transitions between requested states because those "
          "states cannot be requested. The following text briefly "
          "summarizes the various enabled/disabled initial states: \n"
          "Enabled (2) indicates that the element will execute "
          "commands, will process any queued commands, and will queue "
          "new requests. \n"
          "Disabled (3) indicates that the element will not execute "
          "commands and will drop any new requests. \n"
          "In Test (7) indicates that the element will be in a test "
          "state. \n"
          "Deferred (8) indicates that the element will not process "
          "any commands but will queue new requests. \n"
          "Quiesce (9) indicates that the element is enabled but in a "
          "restricted mode. The element's behavior is similar to the "
          "Enabled state, but it only processes a restricted set of "
          "commands. All other requests are queued."), 
       ValueMap { "0", "1", "2", "3", "7", "8", "9", "11..32767",
          "32768..65535" }, 
       Values { "Unknown", "Other", "Enabled", "Disabled", "In Test",
          "Deferred", "Quiesce", "DMTF Reserved", "Vendor Reserved" }, 
       ModelCorrespondence { 
          "CIM_ExportedFileShareSetting.OtherEnabledState",
          "CIM_EnabledLogicalElement.EnabledState" }]
   uint16 InitialEnabledState = 8;

      [Description (
          "A string describing the element's initial enabled/disabled "
          "state when the InitialEnabledState property is set to 1 "
          "(\"Other\"). This property MUST be set to NULL when "
          "InitialEnabledState is any value other than 1."), 
       ModelCorrespondence { 
          "CIM_ExportedFileShareSetting.InitialEnabledState" }]
   string OtherEnabledState;

      [Description (
          "An enumerated value that specifies the default privileges "
          "that can be supported for read-write authorization. These "
          "default privileges can be overridden by privileges "
          "explicitly defined by a supported authorization "
          "mechanism(s). \n"
          "'No Access' indicates that access is not allowed. 'Read "
          "Only' indicates that read-only access is implicitly granted "
          "to all clients and write access is implicitly denied to all "
          "clients. 'Read/Write' indicates that both read and write "
          "access is implicitly granted to all clients. Any other "
          "reading or writing privileges must be granted or denied "
          "explicitly using the vendor's authorization mechanism or by "
          "using the CIM_Privilege model. The resulting access "
          "privileges will be surfaced using the CIM_Privilege model."), 
       ValueMap { "0", "2", "3", "4", "..", "0x8000.." }, 
       Values { "Unknown", "No Access", "Read Only", "Read/Write",
          "DMTF Reserved", "Vendor Defined" }, Read]
   uint16 DefaultReadWrite = 0;

      [Description (
          "An enumerated value that specifies the default privileges "
          "that can be supported for 'execute' authorization in an "
          "appropriate operating environment. These default privileges "
          "can be overridden by privileges explicitly defined by a "
          "supported authorization mechanism(s). \n"
          "'No Access' indicates that execute access is not allowed. "
          "'Execute' indicates that execute access is implicitly "
          "granted to all clients. Any other execution privileges must "
          "be granted or denied explicitly using the vendor's "
          "authorization mechanism or by using the CIM_Privilege "
          "model. The resulting access privileges will be surfaced "
          "using the CIM_Privilege model."), 
       ValueMap { "0", "2", "3", "..", "0x8000.." }, 
       Values { "Unknown", "No Access", "Execute", "DMTF Reserved",
          "Vendor Defined" }, Read]
   uint16 DefaultExecute = 0;

      [Description (
          "An enumerated value that specifies whether this share can "
          "support executable objects in any way. For instance, can "
          "this share be used as a paging file by a client. \n"
          "'Not Supported' indicates that no special support for "
          "executable objects is provided. 'Execution Supported' "
          "indicates that execution is supported, though this does not "
          "specify the kind of support. A vendor can extend this to "
          "indicate specific support mechanisms that may be provided."), 
       ValueMap { "0", "2", "3", "..", "0x8000.." }, 
       Values { "Unknown", "Not Supported", "Execution Supported",
          "DMTF Reserved", "Vendor Defined" }, Read]
   uint16 ExecuteSupport = 0;

      [Description (
          "An enumerated integer that indicates whether the FileShare "
          "will use a default user id to control access to the share "
          "if the id of the importing client is not provided. 'No "
          "Default User Id' indicates that a default user should not "
          "be used. 'System-Specified Default User Id' indicates that "
          "only system-specified id should be used. 'Share-Specified "
          "Default Used Id' indicates that the default user id will be "
          "specified by the method that created or modified the share. "
          "If a default user id is supported, all the default access "
          "privileges will provided through that user as proxy. The "
          "resulting access privileges will be surfaced using the "
          "CIM_Privilege model."), 
       ValueMap { "0", "2", "3", "4", "..", "0x8000.." }, 
       Values { "Unknown", "No Default User Id",
          "System-Specified Default User Id",
          "Share-Specified Default User Id", "DMTF Reserved",
          "Vendor Defined" }, Read]
   uint16 DefaultUserIdSupported = 0;

      [Description (
          "An enumerated value that specifies whether the Share "
          "supports default access by privileged, system "
          "administrator- level ('root') users from specific hosts. "
          "These default privileges can always be overridden by "
          "privileges explicitly defined by a supported authorization "
          "mechanism(s). \n"
          "'No Root Access' indicates that the Share will deny root "
          "access to all clients. 'Allow Root Access' indicates that "
          "the Share will allow root access as specified by the "
          "RootAccessHosts parameter when the FileShare was created. "
          "The actual access allowed will be mediated by the "
          "authorization mechanism supported by the device and "
          "provider. \n"
          "Any other root-access privileges must be granted or denied "
          "explicitly using the vendor's authorization mechanism or by "
          "using the CIM-specified privilege model. The resulting "
          "access privileges will be surfaced using the CIM_Privilege "
          "model."), 
       ValueMap { "0", "2", "3", "..", "0x8000.." }, 
       Values { "Unknown", "No Root Access", "Allow Root Access",
          "DMTF Reserved", "Vendor Defined" }, Read, 
       ModelCorrespondence { 
          "CIM_FileExportService.CreateExportedShare.RootAccessHosts",
          "CIM_FileExportService.ModifyExportedShare.RootAccessHosts" }]
   uint16 RootAccess = 0;

      [Description (
          "An enumerated value that specifies the default policy "
          "followed by the Share for how to handle writes to the "
          "Share. \n"
          "'Synchronous' indicates that the Share will perform "
          "synchronous writes. 'Asynchronous' indicates that the Share "
          "may perform asynchronous writes. (The WritePolicy settings "
          "may be overridden in the future with use of the Policy "
          "model.)"), 
       ValueMap { "0", "2", "3", "..", "0x8000.." }, 
       Values { "Unknown", "Synchronous", "Asynchronous",
          "DMTF Reserved", "Vendor Defined" }, Read]
   uint16 WritePolicy = 0;

      [Description (
          "An enumerated value that specifies the service access "
          "points that are available to this FileShare by default for "
          "use by clients to connect. These default access points can "
          "always be overridden by the privileges explicitly defined "
          "by a supported authorization mechanism(s). \n"
          "Any ServiceAccessPoints that actually connect to this share "
          "will be associated to it by CIM_SAPAvailableForElement. The "
          "resulting access privileges will be surfaced using the "
          "CIM_Privilege model. \n"
          "'None' implies that no SAPs will have access by default. \n"
          "'Service Default' indicates that any SAPs specified as the "
          "default port by the Service will have default access - this "
          "could be vendor-specific. \n"
          "'All' indicates that all SAPs supported by the service will "
          "have access by default. \n"
          "'Named Points' indicates that the Service Access Points "
          "that have default access may be specified as a parameter "
          "when this share was created or modified. These ports or "
          "endpoints will be given the necessary privileges to access "
          "this share."), 
       ValueMap { "0", "2", "3", "4", "5", "..", "0x8000.." }, 
       Values { "Unknown", "None", "Service Default", "All",
          "Named Points", "DMTF Reserved", "Vendor Defined" }, Read]
   uint16 AccessPoints = 2;

};

// =====================================================================
// ExportedFileShareCapabilities
// =====================================================================
   [Experimental, Version ( "2.8.1000" ), Description (
       "ExportedFileShareCapabilities specifies the combination of "
       "properties that a FileExportService can support when creating "
       "or maintaining FileShares. Each supported combination of "
       "properties is specified by a ExportedFileShareSetting that is "
       "associated with the ExportedFileShareCapabilities element via "
       "SettingAssociatedToCapabilities. \n"
       "An ExportedFileShareCapabilities element specifies the "
       "properties supported when using it. A CreateGoal method is "
       "provided that creates an ExportedFileShareSetting element to "
       "be used as a goal when creating or modifying a file share.")]
class CIM_ExportedFileShareCapabilities : CIM_Capabilities {

      [Description (
          "An enumerated integer indicating the filesharing protocol "
          "that this share can support. All settings associated with "
          "this Capabilities must have the same value for the "
          "FileSharingProtocol property. This property must exist and "
          "have a value."), 
       ValueMap { "0", "2", "3", "4", "5", "6", "7", "..", "0x8000.." }, 
       Values { "Unknown", "NFS", "CIFS", "DAFS", "WebDAV", "HTTP",
          "FTP", "DMTF Reserved", "Vendor Defined" }, Read, 
       ModelCorrespondence { 
          "CIM_ImportedFileShareSetting.FileSharingProtocol",
          "CIM_ExportedFileShareSetting.FileSharingProtocol",
          "CIM_ExportedFileShareCapabilities.ProtocolVersions" }]
   uint16 FileSharingProtocol;

      [Description (
          "An array of strings listing the versions of the file "
          "sharing protocol that can be supported via these "
          "capabilities. All settings associated with this "
          "Capabilities must have a non-empty subset of these values "
          "in the corresponding ProtocolVersions property."), 
       Read, 
       ModelCorrespondence { 
          "CIM_ExportedFileShareSetting.ProtocolVersions",
          "CIM_ImportedFileShareSetting.ProtocolVersions",
          "CIM_ExportedFileShareCapabilities.FileSharingProtocol" }]
   string ProtocolVersions[];

      [Description (
          "An array of property names of the Setting that this "
          "Capabilities element supports."), 
       ValueMap { "2", "3", "4", "5", "6", "7", "8", "..", "0x8000.." }, 
       Values { "DefaultReadWrite", "DefaultExecute", "DefaultUserId",
          "RootAccess", "WritePolicy", "AccessPoints",
          "InitialEnabledState", "DMTF Reserved", "Vendor Defined" },
       Read]
   uint16 SupportedProperties[];

      [Description (
          "Start a job to create an ExportedFileShareSetting from an "
          "ExportedFileShareSetting provided by the caller. If the "
          "operation completes successfully and did not require a "
          "long-running ConcreteJob, it will return 0. If 4096/0x1000 "
          "is returned, a ConcreteJob will be started to create the "
          "element. A Reference to the ConcreteJob will be returned in "
          "the output parameter Job. \n"
          "This method MAY return a CIM_Error representing that a "
          "single named property of a setting (or other) parameter "
          "(either reference or embedded object) has an invalid value "
          "or that an invalid combination of named properties of a "
          "setting (or other) parameter (either reference or embedded "
          "object) has been requested. \n"
          "If the input TemplateGoal is NULL or the empty string, this "
          "method returns a default ExportedFileShareSetting that is "
          "supported by this ExportedFileShareCapabilities. \n"
          "The output is returned as the SupportedGoal parameter. Both "
          "TemplateGoal and SupportedGoal are embedded objects and do "
          "not exist in the provider but are maintained by the client. "
          "\nIf the TemplateGoal specifies values that cannot be "
          "supported, this method must return an appropriate error and "
          "should return a best match for a SupportedGoal."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097..32767", "32768..65535" }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "Template Goal cannot be matched.", "DMTF Reserved",
          "Method Parameters Checked - Job Started", "Method Reserved",
          "Vendor Specific" }]
   uint16 CreateGoal( 
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job, 
         [IN, Description (
             "This is an element of the CIM_ExportedFileShareSetting "
             "class, or a derived class, encoded as a string-valued "
             "embedded object parameter. It specifies the goal element "
             "to be used for matching."), 
          EmbeddedInstance ( "CIM_ExportedFileShareSetting" )]
      string TemplateGoal, 
         [IN ( false ), OUT, Description (
             "This is an element of the CIM_ExportedFileShareSetting "
             "class, or a derived class, encoded as a string-valued "
             "embedded object parameter. It specifies the element that "
             "is returned as the best supported match to the "
             "TemplateGoal."), 
          EmbeddedInstance ( "CIM_ExportedFileShareSetting" )]
      string SupportedGoal); 
};

// ===================================================================
// FileImportService
// ===================================================================
   [Experimental, Version ( "2.8.1000" ), Description (
       "Provides configuration support for importing and hosting "
       "FileShares exported from other ComputerSystems. "
       "FileImportService is the base class managing the client-side "
       "application in a client-server-based shared file system. A "
       "FileImportService is hosted by a ComputerSystem and supports "
       "'mounting' (binding to a name in a local namespace) a "
       "FileSystem element or a FileShare element exported by a remote "
       "ComputerSystem host. Specifically this local name will be a "
       "LogicalFile sub-element of a FileSystem hosted by the local "
       "ComputerSystem. The relationship between the mount-point and "
       "the Share is represented by a CIM_ImportedShare association. \n"
       "The FileSystem required here only needs to support a namespace "
       "for a LogicalFile (it need not support the full complexity of "
       "a LocalFileSystem, for instance, real storage). The namespace "
       "could be constructed using any provider-specific algorithm - "
       "if it is based on LocalFileSystem, it would be configured by a "
       "FileSystemConfigurationService, hosted by the same "
       "ComputerSystem, on a StorageExtent, also hosted by that "
       "ComputerSystem. \n"
       "The remote Share is identified by a durable Id - this is a "
       "string that represents a path that uniquely identifies the "
       "remote Share.")]
class CIM_FileImportService : CIM_Service {
      [Description (
          "Start a Job to import a share exported by a remote host. \n"
          "If 0 is returned, the method completed successfully and no "
          "ConcreteJob instance was required. If 0x1000 is returned, a "
          "ConcreteJob will be started to import the Share. The Job's "
          "Reference will be returned in the OUT parameter Job. \n"
          "If the method is successful, a CIM_FileShare will be "
          "created, hosted (via CIM_HostedShare) by the ComputerSystem "
          "host of this service. A reference to the FileShare will be "
          "returned in TheShare. The created FileShare will be mounted "
          "on a local mount-point (possibly a file/directory of a "
          "local file system) with the CIM_ImportedShare association. "
          "\nThis method MUST return a CIM_Error representing that a "
          "single named property of a setting (or other) parameter "
          "(either reference or embedded object) has an invalid value "
          "or that an invalid combination of named properties of a "
          "setting (or other) parameter (either reference or embedded "
          "object) has been requested. \n"
          "The remote Share is specified by the IN parameter "
          "TheRemote, which can be either a CIM_FileShare or a "
          "CIM_FileSystem and therefore is typed as a "
          "CIM_EnabledLogicalElement. \n"
          "Goal is a CIM_ImportedFileShareSetting element encoded as a "
          "string-valued EmbeddedInstance; this allows the client to "
          "specify the properties desired for the share. \n"
          "The associated CIM_HostedShare.RemoteWWN property will hold "
          "the name of TheRemote file share."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "...", "0x1000",
          "0x1001..0x7FFF", "0x8000.." }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "Mount-point already in use, Failed", "DMTF Reserved",
          "Method Parameters Checked - Job Started", "Method Reserved",
          "Vendor Specific" }]
   uint16 CreateImportedShare ( 
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job, 
         [IN, Description (
             "A reference to the remote FileShare or FileSystem that "
             "is to be imported.")]
      CIM_EnabledLogicalElement REF TheRemote, 
         [IN, Description (
             "A reference indicating an element whose sub-element is "
             "the mount-point. The class that Root references must be "
             "a FileSystem, or a FileShare that has an ImportedShare "
             "association (or a derived class of ImportedShare) to a "
             "LogicalFile (or Directory), or a LogicalFile (or "
             "Directory) that has a AttachedElement association to a "
             "FileShare or FileSystem. \n"
             "If Root is NULL, it indicates the root of the "
             "FileImportService host's default local FileSystem, that "
             "is used as the default local name space. It is a "
             "requirement that the host of the FileImportService must "
             "be the host for the newly created FileShare, as well as "
             "the host for the FileSystem or FileShare indicated by "
             "Root.")]
      CIM_LogicalElement REF Root, 
         [IN, Description (
             "A string representing a path to the mount-point attached "
             "to the share from the element indicated by Root. \n"
             "If MountPointPath is NULL or the empty string, it "
             "indicates the FileSystem element indicated by Root. It "
             "is an error if the element indicated by MountPointPath "
             "is already in use as a mount-point (has a "
             "CIM_ImportedShare association). If both Root and "
             "MountPointPath are NULL, it would be considered an "
             "attempt to reuse a mount-point and would also return an "
             "error.")]
      string MountPointPath, 
         [IN, Description (
             "The client-specified requirements for how the specified "
             "FileShare element is to be shared or imported by the "
             "FileImportService. This is an element of the "
             "CIM_ImportedFileShareSetting class, or a derived class, "
             "encoded as a string-valued embedded object parameter. If "
             "NULL or the empty string, the default configuration will "
             "be specified by the FileImportService."), 
          EmbeddedInstance ( "CIM_ImportedFileShareSetting" )]
      string Goal, 
         [OUT, Description (
             "This specifies the FileShare element (or its derived "
             "class) that is created by the method, if successful.")]
      CIM_FileShare REF TheShare, 
         [IN, Description (
             "An array of references to RemotePorts that this Share "
             "may use to connect to the remote Share, if the "
             "CIM_ImportedFileShareSettings.AccessPoints property is "
             "set to 'Named Ports'. \n"
             "The array will be processed in index order. If the array "
             "is NULL, or an entry in the array is NULL, all access "
             "points supported by the remote share will be surfaced as "
             "RemotePorts and made available. If the array is empty, "
             "no access points will be made available. All the "
             "RemotePorts will be associated with the created "
             "FileShare via the SAPAvailableForElement association."), 
          ArrayType ( "Indexed" ), 
          ModelCorrespondence { 
             "CIM_ImportedFileShareSetting.AccessPoints" }]
      CIM_RemotePort REF AccessPointPorts[]); 

      [Description (
          "Start a Job to modify an imported share. \n"
          "If 0 is returned, the method completed successfully and no "
          "ConcreteJob instance was required. If 0x1000 is returned, a "
          "ConcreteJob will be started to modify the Share. The Job's "
          "Reference will be returned in the OUT parameter Job. \n"
          "If the Job succeeds, the FileShare will be modified and "
          "re-configured and ready to be enabled. A reference to the "
          "FileShare will be returned in TheShare. The FileShare will "
          "have a HostedShare association to the host ComputerSystem, "
          "as before. \n"
          "This method MUST return a CIM_Error representing that a "
          "single named property of a setting (or other) parameter "
          "(either reference or embedded object) has an invalid value "
          "or that an invalid combination of named properties of a "
          "setting (or other) parameter (either reference or embedded "
          "object) has been requested. \n"
          "This method cannot be used to change the remotely shared "
          "entity or the mount point in the local namespace, but a "
          "provider may support changing the pathname to the "
          "mount-point by specifying Root and/or MountPointPath. The "
          "reference parameter Root indicates the FileSystem or "
          "FileShare whose element provides the mount-point, either "
          "directly, or indirectly by specifying a Directory element "
          "that is associated via MountedElement to the FileSystem or "
          "FileShare. The FileSystem or FileShare so indicated cannot "
          "be changed by this method. \n"
          "The parameter MountPointPath indicates the mount-point "
          "element within the file hierarchy by a path relative to the "
          "Root. If the Root is a FileSystem, this path begins at the "
          "root directory of the FileSystem; if the Root is a "
          "FileShare, this path begins at the directory associated to "
          "the FileShare via MountedElement; if the Root is a "
          "Directory, this path begins at that Directory. If this path "
          "is modified, it must still indicate the same terminal "
          "element. \n"
          "Goal is a CIM_ImportedFileShareSetting element encoded as a "
          "string-valued embedded object parameter; this allows the "
          "client to specify the properties desired for the share. \n"
          "If the method is successful, it will return a reference to "
          "the same CIM_FileShare in the INOUT parameter TheShare. The "
          "settings for the FileShare and the ServiceAccessPoint "
          "associations may change, but the HostedShare and "
          "ServiceAffectsElement associations to the share must not be "
          "changed by this method. \n"
          "The input TheShare must not be NULL."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "10", "..", "0x1000", "0x1001..0x7FFF", "0x8000.." }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "FileImportService Not Accessible", "Root is not accessible",
          "Base Directory element of Root is Not Accessible",
          "Path does not specify a mount point element",
          "Share in use, cannot be Modify, Failed", "DMTF Reserved",
          "Method Parameters Checked - Job Started", "Method Reserved",
          "Vendor Specific" }]
   uint16 ModifyImportedShare ( 
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job, 
         [IN, Description (
             "A reference indicating an element whose sub-element is "
             "the mount point. The class that Root references must be "
             "a FileSystem, a FileShare that has an ImportedShare "
             "association (or a derived class of ImportedShare) to a "
             "LogicalFile (or Directory), or a LogicalFile (or "
             "Directory) that has a MountedElement association to a "
             "FileShare or FileSystem. If the FileShare being modified "
             "is currently exported or imported, this parameter should "
             "indicate the same Root FileSystem or FileShare element. "
             "\nIf Root is NULL, it indicates no change to the current "
             "root.")]
      CIM_LogicalElement REF Root, 
         [IN, Description (
             "A string representing a path to the mount point from the "
             "element indicated by Root. If the FileShare being "
             "modified is currently exported or imported, this "
             "parameter should specify the same mount point element, "
             "even if via a different path. \n"
             "If MountPointPath is NULL, it indicates no change to the "
             "current path. If MountPointPath is the empty string, it "
             "indicates the FileSystem element indicated by Root.")]
      string MountPointPath, 
         [IN, Description (
             "The client-specified requirements for how the import "
             "settings for the specified FileShare element are to be "
             "modifed by the FileImportService. This operation cannot "
             "be performed on a FileShare that not already imported "
             "(implying that it is currently only exported). Goal is "
             "an element of the CIM_ImportedFileShareSetting class, or "
             "a derived class, encoded as a string-valued embedded "
             "object parameter. If NULL or the empty string, the "
             "existing configuration must include an "
             "ImportedFileShareSetting which may be unchanged. Any "
             "differences in property values will be resolved by the "
             "FileImportService and CIM_Errors generated if "
             "appropriate."), 
          EmbeddedInstance ( "CIM_ImportedFileShareSetting" )]
      string Goal, 
         [IN, OUT, Description (
             "TheShare indicates the FileShare element that is to be "
             "modified and must be an existing imported FileShare.")]
      CIM_FileShare REF TheShare, 
         [IN, Description (
             "An enumerated integer that specifies the action that the "
             "provider should take if the FileShare is still in use "
             "when this request is made. The WaitTime parameter "
             "indicates the 'specified time' used for this function. \n"
             "This option is only relevant if the FileShare must be "
             "made unavailable while the request is being executed."), 
          ValueMap { "2", "3", "4", "..", "0x1000..0xFFFF" }, 
          Values { "Do Not Execute Request",
             "Wait for specified time, then Execute Request "
              "Immediately",
             "Attempt Quiescence for specified time, "
             "then Execute Request Immediately", "DMTF Reserved",
             "Vendor Defined" }]
      uint16 InUseOptions, 
         [IN, Description (
             "An integer that indicates the time (in seconds) that the "
             "provider must wait before executing this request if it "
             "cannot be made while the share is in use. If WaitTime is "
             "not zero, the method will create a job, if supported by "
             "the provider, and return immediately. If the provider "
             "does not support asynchronous jobs, there is a "
             "possibility that the client could time-out before the "
             "job is completed. \n"
             "The combination of InUseOptions = '4' and WaitTime ='0' "
             "(the default) is interpreted as 'Wait (forever) until "
             "Quiescence, then Execute Request' and will be performed "
             "asynchronously if possible."), 
          Units ( "seconds" )]
      uint32 WaitTime, 
         [IN, Description (
             "An array of references to RemotePorts that this Share "
             "may use to connect to the remote Share, if the "
             "CIM_ImportedFileShareSettings.AccessPoints property is "
             "set to 'Named Ports'. \n"
             "The array will be processed in index order and added to "
             "the existing set of RemotePorts. If the array is NULL, "
             "the existing set will not be changed. If an entry in the "
             "array is NULL, all access points supported by the remote "
             "share will be surfaced as RemotePorts and made "
             "available. If the array is empty, no access points will "
             "be made available, and existing access points will be "
             "disabled. All the RemotePorts will be associated with "
             "the created FileShare via the SAPAvailableForElement "
             "association."), 
          ArrayType ( "Indexed" ), 
          ModelCorrespondence { 
             "CIM_ImportedFileShareSetting.AccessPoints" }]
      CIM_RemotePort REF AccessPointPorts[]); 

      [Description (
          "Start a Job to release an imported FileShare. \n"
          "If 0 is returned, the method completed successfully and no "
          "ConcreteJob instance was required. If 0x1000 is returned, a "
          "ConcreteJob will be started to release the Share. The Job's "
          "reference will be returned in the OUT parameter Job. \n"
          "If the method is successful, the FileShare element will not "
          "be imported anymore. This method cannot be called if the "
          "FileShare element is also being exported - the "
          "FileExportService.ReleaseExportedShare method must be "
          "called first. \n"
          "If InUseOptions are specified, this method will succeed "
          "only if no more clients are accessing the share."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "10", "..", "0x1000",
          "0x1001..0x7FFF", "0x8000.." }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "Share in use, Failed", "DMTF Reserved",
          "Method Parameters Checked - Job Started", "Method Reserved",
          "Vendor Specific" }]
   uint32 ReleaseImportedShare( 
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job, 
         [IN, Description (
             "The imported FileShare to be released.")]
      CIM_FileShare REF TheShare, 
         [IN, Description (
             "An enumerated integer that specifies the action that the "
             "provider should take if the FileShare is still in use "
             "when this request is made. The WaitTime parameter "
             "indicates the 'specified time' used for this function."), 
          ValueMap { "2", "3", "4", "..", "0x1000..0xFFFF" }, 
          Values { "Do Not Release",
             "Wait for specified time, then Release Immediately",
             "Attempt Quiescence for specified time, "
             "then Release Immediately", "DMTF Reserved",
             "Vendor Defined" }]
      uint16 InUseOptions, 
         [IN, Description (
             "An integer that indicates the time (in seconds) that the "
             "provider must wait before releasing this FileShare. If "
             "WaitTime is not zero, the method will create a job, if "
             "supported by the provider, and return immediately. If "
             "the provider does not support asynchronous jobs, there "
             "is a possibility that the client could time-out before "
             "the job is completed. \n"
             "The combination of InUseOptions = '4' and WaitTime ='0' "
             "(the default) is interpreted as 'Wait (forever) until "
             "Quiescence, then Release' and will be performed "
             "asynchronously if possible."), 
          Units ( "seconds" )]
      uint32 WaitTime); 
};

// ===================================================================
// FileImportCapabilities
// ===================================================================
   [Experimental, Version ( "2.8.1000" ), Description (
       "FileImportCapabilities specifies the capability of a "
       "FileImportService to support the specified methods.")]
class CIM_FileImportCapabilities : CIM_Capabilities {

      [Description (
          "An array of enumerated integers indicating the filesharing "
          "protocols that this service can support. Duplicate entries "
          "are permitted because they may be associated with different "
          "versions in the corresponding ProtocolVersions property. "
          "For each file sharing protocol supported, there will be at "
          "least one FileImportCapabilities element."), 
       ValueMap { "0", "2", "3", "4", "5", "6", "7", "..", "0x8000.." }, 
       Values { "Unknown", "NFS", "CIFS", "DAFS", "WebDAV", "HTTP",
          "FTP", "DMTF Reserved", "Vendor Defined" }, Read,
          ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_ImportedFileShareSetting.FileSharingProtocol",
          "CIM_FileExportCapabilities.FileSharingProtocol",
          "CIM_FileImportCapabilities.ProtocolVersions" }]
   uint16 FileSharingProtocol[];

      [Description (
          "An array of strings listing the versions of the file "
          "sharing protocol in the corresponding FileSharingProtocol "
          "property that can be supported by this FileImportService."), 
       Read, ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_ImportedFileShareSetting.ProtocolVersions",
          "CIM_FileExportCapabilities.ProtocolVersions",
          "CIM_FileImportCapabilities.FileSharingProtocol" }]
   string ProtocolVersions[];

      [Description (
          "An array of methods of this Service that are supported as "
          "synchronous methods."), 
       ValueMap { "2", "3", "4", "5", "..", "0x8000.." }, 
       Values { "CreateImportedShare", "ModifyImportedShare",
          "ReleaseImportedShare", "CreateGoal", "DMTF Reserved",
          "Vendor Defined" }, Read]
   uint16 SupportedSynchronousMethods[];

      [Description (
          "An array of methods of this Service that are supported as "
          "asynchronous methods."), 
       ValueMap { "2", "3", "4", "5", "..", "0x8000.." }, 
       Values { "CreateImportedShare", "ModifyImportedShare",
          "ReleaseImportedShare", "CreateGoal", "DMTF Reserved",
          "Vendor Defined" }, Read]
   uint16 SupportedAsynchronousMethods[];

      [Description (
          "An enumerated value that indicates the enabled/disabled "
          "states to which the Service can initialize the created file "
          "share. Unlike FileShare.EnabledState it cannot indicate "
          "transitions between requested states because those states "
          "cannot be requested. The following text briefly summarizes "
          "the various enabled/disabled initial states: \n"
          "Enabled (2) indicates that the element will execute "
          "commands, will process any queued commands, and will queue "
          "new requests. \n"
          "Disabled (3) indicates that the element will not execute "
          "commands and will drop any new requests. \n"
          "In Test (7) indicates that the element will be in a test "
          "state. \n"
          "Deferred (8) indicates that the element will not process "
          "any commands but will queue new requests. \n"
          "Quiesce (9) indicates that the element is enabled but in a "
          "restricted mode. The element's behavior is similar to the "
          "Enabled state, but it only processes a restricted set of "
          "commands. All other requests are queued."), 
       ValueMap { "0", "2", "3", "7", "8", "9", "..", "0x8000.." }, 
       Values { "Unknown", "Enabled", "Disabled", "In Test",
          "Deferred", "Quiesce", "DMTF Reserved", "Vendor Defined" },
       Read]
   uint16 InitialEnabledState = 2;
};

// ===================================================================
// ImportedFileShareSetting
// ===================================================================
   [Experimental, Version ( "2.8.1000" ), Description (
       "The ImportedFileShareSetting describes the attribute values "
       "that were set when a FileShare was created for a LogicalFile "
       "by a FileImportService. These settings are associated with the "
       "created Share via the ElementSettingData association. These "
       "settings can also be associated with an "
       "ImportedFileShareCapabilities element via "
       "SettingAssociatedToCapabilities. If the setting is associated "
       "with a FileShare, it cannot have undefined or NULL properties. "
       "If it is associated with an ImportedFileShareCapabilities, a "
       "null property indicates that the property is not supported or "
       "that the value is a vendor-specific context-dependent default "
       "that may not be set.")]
class CIM_ImportedFileShareSetting : CIM_SettingData {

      [Description (
          "An enumerated integer indicating the share protocol that "
          "this share can support. This property must exist and have a "
          "value. The version of the protocol must be specified in the "
          "corresponding ProtocolVersions property."), 
       ValueMap { "0", "2", "3", "4", "5", "6", "7", "..", "0x8000.." }, 
       Values { "Unknown", "NFS", "CIFS", "DAFS", "WebDAV", "HTTP",
          "FTP", "DMTF Reserved", "Vendor Defined" }, Read, 
       ModelCorrespondence { 
          "CIM_ImportedFileShareCapabilities.FileSharingProtocol",
          "CIM_ExportedFileShareSetting.FileSharingProtocol",
          "CIM_ImportedFileShareSetting.ProtocolVersions" }]
   uint16 FileSharingProtocol;

      [Description (
          "An array of strings listing the versions of the file "
          "sharing protocol that this share can support. This property "
          "must exist and have at least one entry."), 
       Read, 
       ModelCorrespondence { 
          "CIM_ImportedFileShareCapabilities.ProtocolVersions",
          "CIM_ExportedFileShareSetting.ProtocolVersions",
          "CIM_ImportedFileShareSetting.FileSharingProtocol" }]
   string ProtocolVersions[];

      [Description (
          "InitialEnabledState is an integer enumeration that "
          "indicates the enabled/disabled states initially set for a "
          "file share element. Unlike FileShare.EnabledState it cannot "
          "indicate transitions between requested states because those "
          "states cannot be requested. The following text briefly "
          "summarizes the various enabled/disabled initial states: \n"
          "Enabled (2) indicates that the element will execute "
          "commands, will process any queued commands, and will queue "
          "new requests. \n"
          "Disabled (3) indicates that the element will not execute "
          "commands and will drop any new requests. \n"
          "In Test (7) indicates that the element will be in a test "
          "state. \n"
          "Deferred (8) indicates that the element will not process "
          "any commands but will queue new requests. \n"
          "Quiesce (9) indicates that the element is enabled but in a "
          "restricted mode. The element's behavior is similar to the "
          "Enabled state, but it only processes a restricted set of "
          "commands. All other requests are queued."), 
       ValueMap { "0", "1", "2", "3", "7", "8", "9", "11..32767",
          "32768..65535" }, 
       Values { "Unknown", "Other", "Enabled", "Disabled", "In Test",
          "Deferred", "Quiesce", "DMTF Reserved", "Vendor Reserved" }, 
       ModelCorrespondence { 
          "CIM_ImportedFileShareSetting.OtherEnabledState",
          "CIM_EnabledLogicalElement.EnabledState" }]
   uint16 InitialEnabledState = 8;

      [Description (
          "A string describing the element's initial enabled/disabled "
          "state when the InitialEnabledState property is set to 1 "
          "(\"Other\"). This property MUST be set to NULL when "
          "InitialEnabledState is any value other than 1."), 
       ModelCorrespondence { 
          "CIM_ImportedFileShareSetting.InitialEnabledState",
          "CIM_FileShare.OtherEnabledState" }]
   string OtherEnabledState;

      [Description (
          "An enumerated value representing the policy that is "
          "supported by the FileImportService on the FileShare. The "
          "value specifies whether/how the FileImportService should "
          "retry a request that either failed or left the system "
          "hanging. If the request is being performed in the "
          "foreground, the options are to try once and fail if a "
          "timeout happens, or, to try repeatedly. If the request can "
          "be performed in the background, the returned Job will try "
          "repeatedly until stopped."), 
       ValueMap { "0", "2", "3", "4", "..", "0x8000.." }, 
       Values { "Unknown", "Try Once", "Try Again",
          "Try in Background", "DMTF Reserved", "Vendor Defined" },
       Read, 
       ModelCorrespondence { 
          "CIM_ImportedFileShareSetting.TransmissionRetriesMax",
          "CIM_ImportedFileShareSetting.RetransmissionTimeoutMin" }]
   uint16 RequestRetryPolicy = 0;

      [Description (
          "An integer specifying the maximum number of retransmission "
          "attempts to be made when the transmission of a request "
          "fails or makes the system hang. A value of '0' specifies an "
          "implementation-specific default."), 
       Read, 
       ModelCorrespondence { 
          "CIM_ImportedFileShareSetting.RequestRetryPolicy",
          "CIM_ImportedFileShareSetting.RetransmissionTimeoutMin" }]
   uint32 TransmissionRetriesMax = 0;

      [Description (
          "An integer specifying the minimum number of milliseconds "
          "that the provider must wait before assuming that a "
          "transmission has failed. '0' indicates an "
          "implementation-specific default."), 
       Read, 
       ModelCorrespondence { 
          "CIM_ImportedFileShareSetting.TransmissionRetriesMax",
          "CIM_ImportedFileShareSetting.RequestRetryPolicy" }]
   uint32 RetransmissionTimeoutMin = 0;

      [Description (
          "An enumerated value that specifies if the import operation "
          "should be attempted one or more times in the foreground or "
          "tried repeatedly in the background until it succeeds. The "
          "number of attempts would be limited by the corresponding "
          "ImportRetriesMax property of the setting."), 
       ValueMap { "0", "2", "3", "..", "0x8000.." }, 
       Values { "Unknown", "Foreground", "Background", "DMTF Reserved",
          "Vendor Defined" }, Read, 
       ModelCorrespondence { 
          "CIM_ImportedFileShareSetting.ImportRetriesMax" }]
   uint16 ImportFailurePolicy = 0;

      [Description (
          "An integer specifying the maximum number of attempts that "
          "should be made to import an FileShare using this element as "
          "the proxy. A value of '0' specifies an "
          "implementation-specific default."), 
       Read, 
       ModelCorrespondence { 
          "CIM_ImportedFileShareSetting.ImportFailurePolicy" }]
   uint32 ImportRetriesMax = 0;

      [Description (
          "An integer specifying the minimum number of bytes that must "
          "be allocated to each buffer used for reading. A value of "
          "'0' specifies an implementation-specific default."), 
       Read, 
       ModelCorrespondence { 
          "CIM_ImportedFileShareSetting.ReadBufferSizeMax" }]
   uint32 ReadBufferSizeMin = 0;

      [Description (
          "An integer specifying the maximum number of bytes that may "
          "be allocated to each buffer used for reading. A value of "
          "'0' specifies an implementation-specific default."), 
       Read, 
       ModelCorrespondence { 
          "CIM_ImportedFileShareSetting.ReadBufferSizeMin" }]
   uint32 ReadBufferSizeMax = 0;

      [Description (
          "An integer specifying the minimum number of bytes that must "
          "be allocated to each buffer used for writing. A value of "
          "'0' specifies an implementation-specific default."), 
       Read, 
       ModelCorrespondence { 
          "CIM_ImportedFileShareSetting.WriteBufferSizeMax" }]
   uint32 WriteBufferSizeMin = 0;

      [Description (
          "An integer specifying the maximum number of bytes that may "
          "be allocated to each buffer used for writing. A value of "
          "'0' specifies an implementation-specific default."), 
       Read, 
       ModelCorrespondence { 
          "CIM_ImportedFileShareSetting.WriteBufferSizeMin" }]
   uint32 WriteBufferSizeMax = 0;

      [Description (
          "An array of enumerated values that specify whether "
          "attribute caching is (or is not) supported for some object. "
          "The object class and the support parameters are specified "
          "in the corresponding AttributeCachingObjects, "
          "AttributeCachingTimeMin, and AttributeCachingTimeMax "
          "properties. \n"
          "FileShare object types that can be imported by this "
          "FileImportService are represented by an entry in these "
          "arrays. The entry in the AttributeCaching array can be "
          "'On', 'Off', or 'Unknown'. Implementation of this feature "
          "requires support from other system components, so it is "
          "quite possible that specifying 'On' may still not result in "
          "caching behavior. 'Unknown' indicates that the "
          "FileImportService will try to work with whatever options "
          "the host system can support. In all cases, "
          "AttributeCachingTimeMin and AttributeCachingTimeMax provide "
          "the minimum and maximum time for which the attributes can "
          "be cached. When this Setting is used as a Goal, the client "
          "may specify 'Unknown', but the Setting in the created "
          "object should contain the supported setting, whether 'On' "
          "or 'Off'."), 
       ValueMap { "0", "2", "3", "..", "0x8000.." }, 
       Values { "Unknown", "On", "Off", "DMTF Reserved",
          "Vendor Defined" }, Read, ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_ImportedFileShareSetting.AttributeCachingObjects",
          "CIM_ImportedFileShareSetting.AttributeCachingTimeMin",
          "CIM_ImportedFileShareSetting.AttributeCachingTimeMax" }]
   uint16 AttributeCaching[] = { 0 };

      [Description (
          "An array of enumerated values that specify the attribute "
          "caching support provided to various object classes. These "
          "classes represent types of shareable objects stored in a "
          "LocalFileSystem -- files and directories as well as others "
          "that may be defined in the future. The corresponding "
          "properties, AttributeCaching, AttributeCachingTimeMin, and "
          "provide AttributeCachingTimeMax the supported features for "
          "the type of object. 'None' and 'All' cannot both be "
          "specified; if either one is specified, it must be the first "
          "entry in the array and the entry is interpreted as the "
          "default setting for all objects. If neither 'None' or 'All' "
          "are specified, the caching settings for other objects are "
          "defaulted by the implementation. If 'Rest' is specified, "
          "the entry applies to all known object types other than the "
          "named ones. If 'Unknown' is specified it applies to object "
          "types not known to this application (this can happen when "
          "foreign file systems are mounted."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "..", "0x8000.." }, 
       Values { "Unknown", "None", "All", "Rest", "File", "Directory",
          "DMTF Reserved", "Vendor Defined" }, Read,
          ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_ImportedFileShareSetting.AttributeCaching",
          "CIM_ImportedFileShareSetting.AttributeCachingTimeMin",
          "CIM_ImportedFileShareSetting.AttributeCachingTimeMax" }]
   uint16 AttributeCachingObjects[] = { 2 };

      [Description (
          "An array of integers specifying, in milliseconds, the "
          "minimum time for which an object of the type specified by "
          "the corresponding AttributeCaching property must be "
          "retained in the attribute cache. When used as a Goal, a "
          "value of '0' indicates an implementation-specific default."), 
       Read, ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_ImportedFileShareSetting.AttributeCaching" }]
   uint32 AttributeCachingTimeMin[]= { 0 };

      [Description (
          "An array of integers specifying, in milliseconds, the "
          "maximum time for which an object of the type specified by "
          "the corresponding AttributeCaching property must be "
          "retained in the attribute cache. When used as a Goal, a "
          "value of '0' indicates an implementation-specific default."), 
       Read, ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_ImportedFileShareSetting.AttributeCaching" }]
   uint32 AttributeCachingTimeMax[] = { 0 };

      [Description (
          "An enumerated value that specifies the Service Access "
          "Points on the exporting system that may be used to access "
          "the remote Share. This does not specify either the actual "
          "availability of these ServiceAccessPoints or the right to "
          "use them.; rather, these are the points that the "
          "FileImportService will attempt to use.to access the share. "
          "\nIf this property is NULL or empty, it indicates that "
          "there will be no change to the current set of access "
          "points. 'Service-Default' indicates that it should include "
          "the default Service Access points of the remote "
          "FileExportService. 'All' indicates that it should include "
          "all the supported Service Access points of the remote "
          "FileExportService. 'None' indicates that the set of access "
          "points is to be reset to the empty set. 'Named Points' "
          "indicates that the Service Access Points that will be used "
          "may be specified as the AccessPoints parameter of the "
          "CreateImportedShare or ModifyImportedShare methods. As a "
          "Setting for a FileShare, this property cannot be undefined "
          "or NULL."), 
       ValueMap { "0", "2", "3", "4", "5", "..", "0x8000.." }, 
       Values { "Unknown", "None", "Service Default", "All",
          "Named Points", "DMTF Reserved", "Vendor Defined" }, Read]
   uint16 AccessPoints;

      [Description (
          "An enumerated value that specifies the Read-Write policy "
          "set on the ImportedShare association and supported by the "
          "FileImportService servicing this FileShare. 'Read Only' "
          "specifies that the FileShare is set up solely for reading. "
          "'Read/Write' specifies that the FileShare is set up for "
          "'read' and 'write' operations. 'Force Read/Write' specifies "
          "that 'Read-Only' has been over-ridden by a client with "
          "write access to the FileShare. This option is intended for "
          "use when the associated FileShare has been made 'Read Only' "
          "by default, as might happen if it were created to be the "
          "target of a Synchronization or Mirror operation."), 
       ValueMap { "0", "2", "3", "4", "..", "0x8000.." }, 
       Values { "Unknown", "Read Only", "Read/Write",
          "Force Read/Write", "DMTF Reserved", "Vendor Defined" }, Read]
   uint16 ReadWritePolicy;

      [Description (
          "An array of enumerated values that specify the policies "
          "that are supported via a newly created imported FileShare "
          "for CIFS-style opportunistic locks. 'No' specifies that "
          "CIFS-style oplocks are not supported, and is exclusive of "
          "the other options. 'Type 1 oplocks supported' specifies "
          "that CIFS-style Type 1 oplocks are supported. 'Type 2 "
          "oplocks supported' specifies that CIFS-style Type 2 oplocks "
          "are supported. If defaulted, this is 'No' if the "
          "FileSharingProtocol is NFS; this is 'Type 1 oplocks "
          "supported' if the FileSharingProtocol is CIFS. The defaults "
          "for other FileSharingProtocols are not currently specified. "
          "\nNo matter what is requested as a Goal: If the "
          "FileSharingProtocol is NFS, only 'No' will be supported "
          "(i.e., the same as the default). If the FileSharingProtocol "
          "is CIFS, 'No' cannot be selected; the supported default "
          "will be vendor-specified. \n"
          "The reference to CIFS-style locking here is not intended to "
          "indicate required support for CIFS, but as an abbreviation "
          "for the functionality specified by CIFS."), 
       ValueMap { "0", "2", "3", "4", "..", "0x8000.." }, 
       Values { "Unknown", "No", "Type 1 oplocks supported",
          "Type 2 oplocks supported", "DMTF Reserved",
       "Vendor Defined" }, Read, ArrayType ( "Indexed" )]
   uint16 CIFSLocksSupportPolicy[] = { 0 };

      [Description (
          "An array of enumerated values that specify the CIFS-style "
          "notifications that will generated by the FileImportService "
          "for the newly created imported FileShare. 'No' specifies "
          "that no notifications will be made. 'Yes' specifies that a "
          "notification will be generated. This property is specified "
          "as an array, so that a vendor can specify supported "
          "notifications at a finer grain. No matter what is requested "
          "as a Goal: If the FileSharingProtocol is NFS, only 'No' "
          "will be supported. Other FileSharingProtocol values may "
          "impose different constraints."), 
       ValueMap { "0", "2", "3", "..", "0x8000.." }, 
       Values { "Unknown", "No", "Yes", "DMTF Reserved",
          "Vendor Defined" }, Read, ArrayType ( "Indexed" )]
   uint16 CifsNotificationPolicy[] = { 0 };

      [Description (
          "An array of enumerated values that specify the policies "
          "that are supported by the FileImportService via the created "
          "FileShare for accessing elements of the target FileShare. "
          "'Unknown' is the default and specifies that the policy will "
          "come from the FileShare target (for a LogicalFile or other "
          "File element, this would be the FileSystem containing the "
          "element). 'CIFS' specifies that CIFS-style access policies "
          "are supported. 'NFS' specifies that NFS-style access "
          "policies are supported. 'Other' specifies "
          "vendor-implemented or proprietary mechanisms. Parameters "
          "for these mechanisms are specified in the corresponding "
          "OtherAccessPoliciesParameter. More than one policy can be "
          "specified, in which case all are supported. More than one "
          "'Other' policy entry can exist. As a Goal, more than one "
          "policy can be requested. The privileges established by this "
          "property would be surfaced by the provider using the "
          "CIM_Privilege model."), 
       ValueMap { "0", "1", "2", "3", "..", "0x8000.." }, 
       Values { "Unknown", "Other", "CIFS", "NFS", "DMTF Reserved",
          "Vendor Defined" }, Read, ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_ImportedFileShareSetting.OtherAccessPoliciesParameters" 
          }]
   uint16 AccessPolicies[] = { 0 };

      [Description (
          "An array of strings that specify parameters to use with the "
          "corresponding AccessPolicies entry -- if that entry is set "
          "to 'Other', the entry here MUST not be null, but it could "
          "be null otherwise."), 
       Read, ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_ImportedFileShareSetting.AccessPolicies" }]
   string OtherAccessPoliciesParameters[] = { "" };

      [Description (
          "An enumerated value that specifies the CIFS Locking that "
          "will be enforced on the target of the ImportedShare by the "
          "supporting FileImportService if the 'AccessPolicies' "
          "property array includes 'CIFS'. \n"
          "'Enforce None' does not enforce CIFS locks. 'Enforce Write' "
          "does not allow writes to CIFS-locked files. 'Enforce "
          "Read/Write' does not allow reads or writes to CIFS-locked "
          "files."), 
       ValueMap { "0", "2", "3", "4", "..", "0x8000.." }, 
       Values { "Unknown", "Enforce None", "Enforce Write",
          "Enforce Read/Write", "DMTF Reserved", "Vendor Defined" },
       Read]
   uint16 CifsLockPolicy = 0;

      [Description (
          "An enumerated value that specifies the client's preferences "
          "for local caching support. This property might be an "
          "appropriate setting on the FileShare element."), 
       ValueMap { "0", "2", "3", "4", "..", "0x8000.." }, 
       Values { "Unknown", "Asynchronized", "Synchronized",
          "Write-Through", "DMTF Reserved", "Vendor Defined" }, Read]
   uint16 CachingOptions = 0;

      [Description (
          "An enumerated value that specifies if this FileShare should "
          "be enabled when the operational FileImportService is "
          "started. This property might be an appropriate setting for "
          "the FileShare element."), 
       ValueMap { "0", "1", "2", "..", "0x8000.." }, 
       Values { "Vendor-specific Default", "Automatic", "Manual",
          "DMTF Reserved", "Vendor Defined" }, Read]
   uint16 ImportOnServiceStart = 0;

      [Description (
          "An instance of a CIM_Privilege, encoded as a string, that "
          "expresses the client's expectations about access to "
          "elements of the exported FileShare. The provider is "
          "expected to surface this access using the privilege model."), 
       EmbeddedInstance ( "CIM_Privilege" ), Read]
   string ReadWritePref;

      [Description (
          "An enumerated value that specifies if support should be "
          "provided on the local host for executing elements accessed "
          "through this FileShare. This may require setting up "
          "specialized paging or execution buffers either on the "
          "client or on the server side (as appropriate for the "
          "implementation). Note that this does not provide any rights "
          "to actually execute any element but only specifies support "
          "for such execution, if permitted."), 
       ValueMap { "0", "2", "3", "..", "0x8000.." }, 
       Values { "Unknown", "Execution Supported",
          "Execution Not Supported", "DMTF Reserved",
       "Vendor Defined" }, Read]
   uint16 ExecutePref = 0;

      [Description (
          "An instance of a CIM_Privilege, encoded as a string, that "
          "expresses the client's expectations about privileged access "
          "by appropriately privileged System Administrative users on "
          "the local host ('root' or 'superuser') to the exported "
          "FileShare and its elements. The provider is expected to "
          "surface this access using the privilege model. \n"
          "Support for the privileged access might require setup at "
          "both the exported FileShare and imported FileShare hosts, "
          "so there is no guarantee that the request can be satisfied."), 
       EmbeddedInstance ( "CIM_Privilege" ), Read]
   string RootAccessPref;
};

// =====================================================================
// ImportedFileShareCapabilities
// =====================================================================

   [Experimental, Version ( "2.8.1000" ), Description (
       "ImportedFileShareCapabilities specifies the combination of "
       "properties that a FileImportService can support when creating "
       "or maintaining FileShares. Each supported combination of "
       "properties is specified by an ImportedFileShareSetting that is "
       "associated with the ImportedFileShareCapabilities element via "
       "SettingAssociatedToCapabilities. \n"
       "A ImportedFileShareCapabilities element specifies the "
       "properties supported when using it. \n"
       "This class also provides a CreateGoal method that can be used "
       "to create a ImportedFileShareSetting element that can be used "
       "as a goal for creating or modifying a file share.")]
class CIM_ImportedFileShareCapabilities : CIM_Capabilities {

      [Description (
          "An enumerated integer indicating the filesharing protocol "
          "that this share can support. All settings associated with "
          "this Capabilities must have the same value for the "
          "FileSharingProtocol property. This property must exist and "
          "have a value."), 
       ValueMap { "0", "2", "3", "4", "5", "6", "7", "..", "0x8000.." }, 
       Values { "Unknown", "NFS", "CIFS", "DAFS", "WebDAV", "HTTP",
          "FTP", "DMTF Reserved", "Vendor Defined" }, Read, 
       ModelCorrespondence { 
          "CIM_ImportedFileShareSetting.FileSharingProtocol",
          "CIM_ExportedFileShareSetting.FileSharingProtocol",
          "CIM_ImportedFileShareCapabilities.ProtocolVersions" }]
   uint16 FileSharingProtocol;

      [Description (
          "An array of strings listing the versions of the file "
          "sharing protocol that can be supported via these "
          "capabilities. All settings associated with this "
          "Capabilities must have a non-empty subset of these values "
          "in the corresponding ProtocolVersions property."), 
       Read, 
       ModelCorrespondence { 
          "CIM_ExportedFileShareSetting.ProtocolVersions",
          "CIM_ImportedFileShareSetting.ProtocolVersions",
          "CIM_ImportedFileShareCapabilities.FileSharingProtocol" }]
   string ProtocolVersions[];

      [Description (
          "An array of property names of the Setting that this "
          "Capabilities element supports."), 
       ValueMap { "2", "3", "4", "5", "6", "7", "8", "9", "10", "11",
          "12", "13", "14", "15", "16", "17", "18", "19", "20", "21",
          "..", "0x8000.." }, 
       Values { "RequestRetryPolicy", "TransmissionRetriesMax",
          "RetransmissionTimeout", "ImportFailurePolicy",
          "ImportRetriesMax", "ReadBufferSize", "WriteBufferSize",
          "AttributeCaching", "AccessPoints", "ReadWritePolicy",
          "CifsLocksSupportPolicy", "CifsNotificationPolicy",
          "AccessPolicies", "CifsLockPolicy", "ReadWritePref",
          "CachingOptions", "ImportOnServiceStart", "ExecutePref",
          "RootAccessPref", "InitialEnabledState", "DMTF Reserved",
          "Vendor Defined" }, Read]
   uint16 SupportedProperties[];

      [Description (
          "Start a job to create a ImportedFileShareSetting from an "
          "ImportedFileShareSetting provided by the caller. If the "
          "operation completes successfully and did not require a "
          "long-running ConcreteJob, it will return 0. If 4096/0x1000 "
          "is returned, a ConcreteJob will be started to create the "
          "element. A Reference to the ConcreteJob will be returned in "
          "the output parameter Job. \n"
          "This method MAY return a CIM_Error representing that a "
          "single named property of a setting (or other) parameter "
          "(either reference or embedded object) has an invalid value "
          "or that an invalid combination of named properties of a "
          "setting (or other) parameter (either reference or embedded "
          "object) has been requested. \n"
          "If the input TemplateGoal is NULL or the empty string, this "
          "method returns a default ImportedFileShareSetting that is "
          "supported by this ImportedFileShareCapabilities. \n"
          "The output is returned as the SupportedGoal parameter. Both "
          "TemplateGoal and SupportedGoal are embedded objects and do "
          "not exist in the provider but are maintained by the client. "
          "\nIf the TemplateGoal specifies values that cannot be "
          "supported, this method must return an appropriate error and "
          "should return a best match for a SupportedGoal."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097..32767", "32768..65535" }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "Template Goal cannot be matched.", "DMTF Reserved",
          "Method Parameters Checked - Job Started", "Method Reserved",
          "Vendor Specific" }]
   uint16 CreateGoal( 
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job, 
         [IN, Description (
             "This is an element of the CIM_ImportedFileShareSetting "
             "class, or a derived class, encoded as a string-valued "
             "embedded object parameter. It specifies the goal element "
             "to be used for matching."), 
          EmbeddedInstance ( "CIM_ImportedFileShareSetting" )]
      string TemplateGoal, 
         [IN ( false ), OUT, Description (
             "This is an element of the CIM_ImportedFileShareSetting "
             "class, or a derived class, encoded as a string-valued "
             "embedded object parameter. It specifies the element that "
             "is returned as the best supported match to the "
             "TemplateGoal."), 
          EmbeddedInstance ( "CIM_ImportedFileShareSetting" )]
      string SupportedGoal); 
};

// ===================================================================
// end of file
// ===================================================================
