// 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,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);
};
#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);
};
