// Copyright (c) 2005 DMTF.  All rights reserved.
   [Version ( "2.6.0" ), 
    UMLPackagePath ( "CIM::System::FileElements" ), 
    Description ( 
       "A LogicalFile is a named collection of data or executable "
       "code, or represents a LogicalDevice or Directory. It is "
       "located within the context of a FileSystem, on a Storage "
       "Extent." )]
class CIM_LogicalFile : CIM_LogicalElement {

      [Key, Description ( 
          "The scoping ComputerSystem\'s CreationClassName." ), 
       MaxLen ( 256 ), 
       Propagated ( "CIM_FileSystem.CSCreationClassName" )]
   string CSCreationClassName;

      [Key, Description ( "The scoping ComputerSystem\'s Name." ), 
       MaxLen ( 256 ), 
       Propagated ( "CIM_FileSystem.CSName" )]
   string CSName;

      [Key, Description ( 
          "The scoping FileSystem\'s CreationClassName." ), 
       MaxLen ( 256 ), 
       Propagated ( "CIM_FileSystem.CreationClassName" )]
   string FSCreationClassName;

      [Key, Description ( "The scoping FileSystem\'s Name." ), 
       MaxLen ( 256 ), 
       Propagated ( "CIM_FileSystem.Name" )]
   string FSName;

      [Key, Description ( 
          "CreationClassName indicates the name of the class or the "
          "subclass used in the creation of an instance. When used "
          "with the other key properties of this class, this "
          "property allows all instances of this class and its "
          "subclasses to be uniquely identified." ), 
       MaxLen ( 256 )]
   string CreationClassName;

      [Key, Override ( "Name" ), 
       Description ( 
          "The inherited Name serves as part of the key of a "
          "LogicalFile instance within a FileSystem. A unique "
          "identifier (such as a full path name) is required as a "
          "Name value. Since Files are weak to their FileSystem "
          "(and not to a Directory which would provide a more "
          "granular naming algorithm), care must be taken to make "
          "LogicalFile\'s Name unique for a given Creation "
          "ClassName and FileSystem. A full path name is one way to "
          "do this." ), 
       MaxLen ( 1024 )]
   string Name;

      [Description ( "Size of the File in bytes." ), 
       Units ( "Bytes" ), 
       Gauge, PUnit ( "byte" )]
   uint64 FileSize;

      [Description ( "File\'s creation date." )]
   datetime CreationDate;

      [Description ( "Time that the File was last modified." )]
   datetime LastModified;

      [Description ( "Time that the File was last accessed." )]
   datetime LastAccessed;

      [Description ( "Boolean indicating that the File can be read." )]
   boolean Readable;

      [Description ( 
          "Boolean indicating that the File can be written." )]
   boolean Writeable;

      [Description ( "Indicates the file is executable." )]
   boolean Executable;

      [Description ( 
          "A free form string indicating the algorithm or tool used "
          "to compress the LogicalFile. If it is not possible or "
          "not desired to describe the compression scheme (perhaps "
          "because it is not known), recommend using the following "
          "words: \"Unknown\" to represent that it is not known "
          "whether the LogicalFile is compressed or not, "
          "\"Compressed\" to represent that the File is compressed "
          "but either its compression scheme is not known or not "
          "disclosed, and \"Not Compressed\" to represent that the "
          "LogicalFile is not compressed." )]
   string CompressionMethod;

      [Description ( 
          "A free form string indicating the algorithm or tool used "
          "to encrypt the LogicalFile. If it is not possible or not "
          "desired to describe the encryption scheme (perhaps for "
          "security reasons), recommend using the following words: "
          "\"Unknown\" to represent that it is not known whether "
          "the LogicalFile is encrypted or not, \"Encrypted\" to "
          "represent that the File is encrypted but either its "
          "encryption scheme is not known or not disclosed, and "
          "\"Not Encrypted\" to represent that the LogicalFile is "
          "not encrypted." )]
   string EncryptionMethod;

      [Description ( 
          "Integer indicating the number of \'file opens\' that are "
          "currently active against the File." ), 
       Counter]
   uint64 InUseCount;


};
