// Copyright (c) 2006 Microsoft Corporation, All Rights Reserved

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

Instance of __Win32Provider as $P1
{
  Name = "UserProfileProvider";
  CLSID = "{20E25881-F081-448e-85C9-4707A9400593}";
  ImpersonationLevel = "1";
  PerUserInitialization = "TRUE";
};

Instance of __InstanceProviderRegistration
{
  provider = $P1;
  SupportsEnumeration = "TRUE";
  SupportsGet = "TRUE";
  SupportsDelete = "TRUE";
  SupportsPut = "TRUE";
};

Instance of __MethodProviderRegistration
{
  provider = $P1;
};

[Dynamic : ToInstance DisableOverride,provider("UserProfileProvider"),Description("") : ToInstance ToSubclass,singleton,inpartition{"local-user"}] 
class Win32_FolderRedirectionHealth
{
  [read,Description("known folder unique id (guid)")] string OfflineFileNameFolderGUID;
  [read,Description("If true, indicate if this folder is being redirected.")] boolean Redirected;
  [read,Description("If true, the Offline Files feature is enabled for this folder.")] boolean OfflineAccessEnabled;
  [read,Description("The last time this folder was successfully synchronized to the Offline Files cache.")] DATETIME LastSuccessfulSyncTime;
  [read,Description("The last time an attempt was made to synchronized this folder to the Offline Files cache, even if it was unsuccessful.")] DATETIME LastSyncTime;
  [read,Description("The status of the last attempt to synchronize this folder to the Offline Files cache."),Values{"Success", "Conflict", "Warning", "Error"},ValueMap{"0", "1", "2", "3"}] uint8 LastSyncStatus;
  [read,Description("The health status of this folder, based on the values that were set in the Win32_FolderRedirectionHealthConfiguration properties."),Values{"Healthy", "Caution", "Unhealthy"},ValueMap{"0", "1", "2"}] uint8 HealthStatus;
};

[Dynamic,Provider("UserProfileProvider")] 
class Win32_UserProfile
{
  [Key,Read : ToInstance] string SID;
  [Read : ToInstance] string LocalPath;
  [Read : ToInstance] boolean Loaded;
  [Read : ToInstance] uint32 RefCount;
  [Read : ToInstance] boolean Special;
  [Read : ToInstance] boolean RoamingConfigured;
  [Read : ToInstance] string RoamingPath;
  [Read : ToInstance,Write : ToInstance] boolean RoamingPreference;
  [Read : ToInstance,BitValues{"Temporary", "Roaming", "Mandatory", "Corrupted"},BitMap{"0", "1", "2", "3"}] uint32 Status;
  [Read : ToInstance] DATETIME LastUseTime;
  [Read : ToInstance] DATETIME LastDownloadTime;
  [Read : ToInstance] DATETIME LastUploadTime;
  [Implemented] uint32 ChangeOwner([In] string NewOwnerSID,[In,BitValues{"ReplaceNewOwnerProfile", "DeleteReplacedProfile"},BitMap{"0", "1"}] uint32 Flags);
  [read,Description("The health status of this profile, based on the values that were set in the Win32_RoamingUserHealthConfiguration properties."),Values{"Healthy", "Unhealthy", "Caution", "Not Applicable"},ValueMap{"0", "1", "2", "3"}] uint8 HealthStatus;
  [read,Description("If the profile is a roaming profile, this property is a DATETIME value that indicates the last time an attempt was made to download the profile from the server, even if it was unsuccessful. If the profile is a local profile, this property is zero.")] DATETIME LastAttemptedProfileDownloadTime;
  [read,Description("If the profile is a roaming profile, this property is a DATETIME value that indicates the last time an attempt was made to upload the profile to the server, even if it was unsuccessful.")] DATETIME LastAttemptedProfileUploadTime;
  [read,Description("If this profile is a roaming profile, this property is a DATETIME value that indicates the last time the profile's registry hive was uploaded to the server.")] DATETIME LastBackgroundRegistryUploadTime;
  [read,Description("A Win32_FolderRedirectionHealth object that represents the health of the user's redirected AppData\\Roaming folder.")] Win32_FolderRedirectionHealth AppDataRoaming;
  [read,Description("A Win32_FolderRedirectionHealth object that represents the health of the user's redirected Desktop folder.")] Win32_FolderRedirectionHealth Desktop;
  [read,Description("A Win32_FolderRedirectionHealth object that represents the health of the user's redirected Start Menu folder.")] Win32_FolderRedirectionHealth StartMenu;
  [read,Description("A Win32_FolderRedirectionHealth object that represents the health of the user's redirected Documents folder.")] Win32_FolderRedirectionHealth Documents;
  [read,Description("A Win32_FolderRedirectionHealth object that represents the health of the user's redirected Pictures folder.")] Win32_FolderRedirectionHealth Pictures;
  [read,Description("A Win32_FolderRedirectionHealth object that represents the health of the user's redirected Music folder.")] Win32_FolderRedirectionHealth Music;
  [read,Description("A Win32_FolderRedirectionHealth object that represents the health of the user's redirected Videos folder.")] Win32_FolderRedirectionHealth Videos;
  [read,Description("A Win32_FolderRedirectionHealth object that represents the health of the user's redirected Favorites folder.")] Win32_FolderRedirectionHealth Favorites;
  [read,Description("A Win32_FolderRedirectionHealth object that represents the health of the user's redirected Contacts folder.")] Win32_FolderRedirectionHealth Contacts;
  [read,Description("A Win32_FolderRedirectionHealth object that represents the health of the user's redirected Downloads folder.")] Win32_FolderRedirectionHealth Downloads;
  [read,Description("A Win32_FolderRedirectionHealth object that represents the health of the user's redirected Links folder.")] Win32_FolderRedirectionHealth Links;
  [read,Description("A Win32_FolderRedirectionHealth object that represents the health of the user's redirected Searches folder.")] Win32_FolderRedirectionHealth Searches;
  [read,Description("A Win32_FolderRedirectionHealth object that represents the health of the user's redirected Saved Games folder.")] Win32_FolderRedirectionHealth SavedGames;
};
#pragma autorecover
#pragma classflags(64)
#pragma namespace("\\\\.\\ROOT\\CIMV2")
instance of __namespace{ name="ms_409";};
#pragma namespace("\\\\.\\ROOT\\CIMV2\\ms_409")

[Description("The Win32_UserProfile class contains information about user profiles on a Windows system.") : Amended,AMENDMENT, LOCALE("ms_409")] 
class Win32_UserProfile
{
  [Key,Description("This property contains the SID of the user who owns this user profile.") : Amended] string SID;
  [Description("This property contains the user profile's path on the local computer.") : Amended] string LocalPath;
  [Description("This property indicates whether this profile is loaded.") : Amended] boolean Loaded;
  [Description("This property indicates the ref count of the profile. If the profile is loaded, the ref count is at least 1.\nHigher values indicates there are more than one applications or services has loaded the profile and using it.\n") : Amended] uint32 RefCount;
  [Description("This property indicates whether this profile belongs to a special system service.") : Amended] boolean Special;
  [Description("This property indicates whether the user has a roaming profile configured.\nNOTE: User has a roaming profile configured does not mean that this profile is indeed roaming.\nThere are other policies and user preference can prevent the profile from roaming.\nPlease refer to the RoamingPreference and Status property.") : Amended] boolean RoamingConfigured;
  [Description("This property contains the user's roaming profile path if RoamingConfigured is true.") : Amended] string RoamingPath;
  [Description("This property indicates whether the user prefer to roam this profile if RoamingConfigured is true.\nBy default, this property will be true to let the roaming profile roam between the local computer and the server.\nUser can set this property to false to prevent roaming, then the profile will work like a local profile.\n") : Amended] boolean RoamingPreference;
  [Description("May be one or more of the following:\n\n0x00000001 - Indicate the profile is a temporary profile, it will be deleted at user logoff.\n0x00000002 - Indicate the profile is now set to roaming, if this bit is not set, then it is set to local.\n0x00000004 - Indicate the profile is a mandatory profile.\n0x00000008 - Indicate the profile is a corrupted profile, and not in use, user or administrator must fix \n             the corruption in order to use this profile again.\n") : Amended] uint32 Status;
  [Description("This property indicates when this profile is used last time.") : Amended] DATETIME LastUseTime;
  [Description("This property indicates when a roaming profile was downloaded from server last time.") : Amended] DATETIME LastDownloadTime;
  [Description("This property indicates when a roaming profile was uploaded to server last time.") : Amended] DATETIME LastUploadTime;
  [Description("Change a user profile's owner to another user, the result value is HRESULT") : Amended] uint32 ChangeOwner([In,Description("The new owner's SID.") : Amended] string NewOwnerSID,[In,Description("May be one or more of the following:\n\n0x00000001 - If the new owner already has a profile, calling this method with this flag will replace \n             the existing profile. If the new owner already has a profile, calling this method \n             without this flag will fail and return HRESULT_FROM_WIN32(ERROR_ALREADY_EXISTS). \n0x00000002 - If the new owner already has a profile, and ReplaceNewOwnerProfile is specified, then \n             specify this flag will delete the replaced profile. Without this flag, the replaced \n             profile is left alone, no user will use that profile automatically, it will not be \n             enumerated either. If ReplaceNewOwnerProfile is not specified, this flag will have \n             no effect.\n") : Amended] uint32 Flags);
};
