Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

216 lines
9.0 KiB

//+-------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//--------------------------------------------------------------------------
cpp_quote("//=--------------------------------------------------------------------------=")
cpp_quote("// msident.h")
cpp_quote("//=--------------------------------------------------------------------------=")
cpp_quote("// Copyright (c) Microsoft Corporation. All rights reserved.")
cpp_quote("//")
cpp_quote("// THIS CODE AND INFORMATION IS PROVIDED \"AS IS\" WITHOUT WARRANTY OF")
cpp_quote("// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO")
cpp_quote("// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A")
cpp_quote("// PARTICULAR PURPOSE.")
cpp_quote("//=--------------------------------------------------------------------------=")
cpp_quote("")
cpp_quote("#pragma comment(lib,\"uuid.lib\")")
cpp_quote("")
cpp_quote("//---------------------------------------------------------------------------=")
cpp_quote("// Lightweight User Profile Interfaces.")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// GUIDS")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// {A9AE6C91-1D1B-11D2-B21A-00C04FA357FA}")
cpp_quote("DEFINE_GUID(CLSID_UserIdentityManager, 0xa9ae6C91, 0x1d1b, 0x11d2, 0xb2, 0x1a, 0x0, 0xc0, 0x4f, 0xa3, 0x57, 0xfa);")
cpp_quote("// {A9AE6C8E-1D1B-11D2-B21A-00C04FA357FA}")
cpp_quote("DEFINE_GUID(IID_IUserIdentity, 0xa9ae6C8e, 0x1d1b, 0x11d2, 0xb2, 0x1a, 0x0, 0xc0, 0x4f, 0xa3, 0x57, 0xfa);")
cpp_quote("// {A9AE6C8F-1D1B-11D2-B21A-00C04FA357FA}")
cpp_quote("DEFINE_GUID(IID_IEnumUserIdentity, 0xa9ae6C8f, 0x1d1b, 0x11d2, 0xb2, 0x1a, 0x0, 0xc0, 0x4f, 0xa3, 0x57, 0xfa);")
cpp_quote("// {A9AE6C90-1D1B-11D2-B21A-00C04FA357FA}")
cpp_quote("DEFINE_GUID(IID_IUserIdentityManager, 0xa9ae6C90, 0x1d1b, 0x11d2, 0xb2, 0x1a, 0x0, 0xc0, 0x4f, 0xa3, 0x57, 0xfa);")
cpp_quote("// {A9AE6C92-1D1B-11D2-B21A-00C04FA357FA}")
cpp_quote("DEFINE_GUID(IID_IIdentityChangeNotify, 0xa9ae6C92, 0x1d1b, 0x11d2, 0xb2, 0x1a, 0x0, 0xc0, 0x4f, 0xa3, 0x57, 0xfa);")
cpp_quote("// {A9AE6C93-1D1B-11D2-B21A-00C04FA357FA}")
cpp_quote("DEFINE_GUID(IID_IPrivateIdentityManager, 0xa9ae6C93, 0x1d1b, 0x11d2, 0xb2, 0x1a, 0x0, 0xc0, 0x4f, 0xa3, 0x57, 0xfa);")
cpp_quote("// {A9AE6C94-1D1B-11D2-B21A-00C04FA357FA}")
cpp_quote("DEFINE_GUID(IID_IUserIdentity2, 0xa9ae6C94, 0x1d1b, 0x11d2, 0xb2, 0x1a, 0x0, 0xc0, 0x4f, 0xa3, 0x57, 0xfa);")
cpp_quote("// {47172E6C-EA67-4ccd-B5CE-2EABBE051404}")
cpp_quote("DEFINE_GUID(IID_IPrivateIdentityManager2, 0x47172e6c, 0xea67, 0x4ccd, 0xb5, 0xce, 0x2e, 0xab, 0xbe, 0x5, 0x14, 0x4);")
cpp_quote("// {C28E26E6-219D-11d2-B200-0000F8085266}")
cpp_quote("DEFINE_GUID(UID_GIBC_DEFAULT_USER, 0xc28e26e6, 0x219d, 0x11d2, 0xb2, 0x0, 0x0, 0x0, 0xf8, 0x8, 0x52, 0x66);")
cpp_quote("// {C28E26E7-219D-11d2-B200-0000F8085266}")
cpp_quote("DEFINE_GUID(UID_GIBC_CURRENT_USER, 0xc28e26e7, 0x219d, 0x11d2, 0xb2, 0x0, 0x0, 0x0, 0xf8, 0x8, 0x52, 0x66);")
cpp_quote("// {C28E26E8-219D-11d2-B200-0000F8085266}")
cpp_quote("DEFINE_GUID(UID_GIBC_OUTGOING_USER, 0xc28e26e8, 0x219d, 0x11d2, 0xb2, 0x0, 0x0, 0x0, 0xf8, 0x8, 0x52, 0x66);")
cpp_quote("// {C28E26E9-219D-11d2-B200-0000F8085266}")
cpp_quote("DEFINE_GUID(UID_GIBC_INCOMING_USER, 0xc28e26e9, 0x219d, 0x11d2, 0xb2, 0x0, 0x0, 0x0, 0xf8, 0x8, 0x52, 0x66);")
cpp_quote("")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("// ERROR CODES")
cpp_quote("// --------------------------------------------------------------------------------")
cpp_quote("#define E_IDENTITIES_DISABLED _HRESULT_TYPEDEF_(0x80007110L)")
cpp_quote("#define S_IDENTITIES_DISABLED _HRESULT_TYPEDEF_(0x00007110L)")
cpp_quote("#define E_NO_CURRENT_IDENTITY _HRESULT_TYPEDEF_(0x80007111L)")
cpp_quote("#define E_USER_CANCELLED _HRESULT_TYPEDEF_(0x80007112L)")
cpp_quote("#define E_PROCESS_CANCELLED_SWITCH _HRESULT_TYPEDEF_(0x80007113L)")
cpp_quote("#define E_IDENTITY_NOT_FOUND _HRESULT_TYPEDEF_(0x80007114L)")
cpp_quote("#define E_IDENTITY_EXISTS _HRESULT_TYPEDEF_(0x80007115L)")
cpp_quote("#define E_IDENTITY_CHANGING _HRESULT_TYPEDEF_(0x80007116L)")
cpp_quote("")
cpp_quote("#define CCH_IDENTITY_NAME_MAX_LENGTH (63)")
#ifndef DO_NO_IMPORTS
import "unknwn.idl";
import "ocidl.idl";
import "oleidl.idl";
import "oaidl.idl";
#endif
[
uuid(A9AE6C8E-1D1B-11D2-B21A-00C04FA357FA), // IID_IUserIdentity
helpstring("User Identity interface")
]
interface IUserIdentity : IUnknown
{
// Get cookie for this user
HRESULT GetCookie([out] GUID *puidCookie);
// Get user name
HRESULT GetName([in] WCHAR *pszName, [in] ULONG ulBuffSize);
// Get private registry location
[local]
HRESULT OpenIdentityRegKey([in]DWORD dwDesiredAccess, [out] HKEY *phKey);
// Get a per-user folder
HRESULT GetIdentityFolder([in] DWORD dwFlags, [in] WCHAR *pszPath, [in] ULONG ulBuffSize);
cpp_quote("#define GIF_ROAMING_FOLDER 0x00000001")
cpp_quote("#define GIF_NON_ROAMING_FOLDER 0x00000002")
}
[
uuid(A9AE6C8F-1D1B-11D2-B21A-00C04FA357FA), // IID_IEnumUserIdentity
helpstring("Enum User Identity interface"),
odl
]
interface IEnumUserIdentity : IUnknown
{
HRESULT Next(
[in] ULONG celt,
[out, size_is(celt), length_is(*pceltFetched)]
IUnknown **rgelt,
[out] ULONG *pceltFetched);
HRESULT Skip([in] ULONG celt);
HRESULT Reset();
HRESULT Clone([out] IEnumUserIdentity **ppenum);
HRESULT GetCount([out] ULONG *pnCount);
}
[
uuid(A9AE6C90-1D1B-11D2-B21A-00C04FA357FA), // IID_IUserIdentityManager
helpstring("User Identity manager interface")
]
interface IUserIdentityManager : IUnknown
{
// Get a list of all users
HRESULT EnumIdentities([out] IEnumUserIdentity **ppEnumUser);
// Show UI to manage users
HRESULT ManageIdentities([in] HWND hwndParent, [in] DWORD dwFlags);
cpp_quote("#define UIMI_CREATE_NEW_IDENTITY 0x00000001")
// Show UI to logon a user
HRESULT Logon([in] HWND hwndParent, [in] DWORD dwFlags, [out] IUserIdentity **ppIdentity);
cpp_quote("#define UIL_FORCE_UI 0x80000001")
// Log the current user off
HRESULT Logoff([in] HWND hwndParent);
// Get an arbitrary user by cookie
HRESULT GetIdentityByCookie([in] GUID *uidCookie, [out] IUserIdentity **ppIdentity);
}
[
uuid(A9AE6C92-1D1B-11D2-B21A-00C04FA357FA), // IID_IIdentityChangeNotify
helpstring("User Identity change notification interface")
]
interface IIdentityChangeNotify : IUnknown
{
// The user has requested a switch. Return E_PROCESS_CANCELLED_SWITCH
// if the switch should not take place.
HRESULT QuerySwitchIdentities();
// A switch has occurred. Reload any settings necessary from the current identity
HRESULT SwitchIdentities();
// Some property (name, etc) of an identity has been updated or an identity has been added/deleted.
HRESULT IdentityInformationChanged(DWORD dwType);
cpp_quote("#define IIC_CURRENT_IDENTITY_CHANGED 0x00000001")
cpp_quote("#define IIC_IDENTITY_CHANGED 0x00000002")
cpp_quote("#define IIC_IDENTITY_DELETED 0x00000004")
cpp_quote("#define IIC_IDENTITY_ADDED 0x00000008")
}
[
uuid(A9AE6C93-1D1B-11D2-B21A-00C04FA357FA), // IID_IPrivateIdentityManager
helpstring("PRIVATE User Identity user list manipulation interface")
]
interface IPrivateIdentityManager : IUnknown
{
// Create a new identity with a given name.
HRESULT CreateIdentity([in] WCHAR *pszName, [out] IUserIdentity **ppIdentity);
// Verify a password for the indicated identity
HRESULT ConfirmPassword([in] GUID *uidCookie, [in] WCHAR *pszPassword);
}
[
uuid(15E84C92-2E4D-11d3-9C92-00104B35E7F9), // IID_IPrivateIdentityManager2
helpstring("PRIVATE User Identity user list manipulation interface 2")
]
interface IPrivateIdentityManager2 : IUnknown
{
// Create a new identity with a given name.
HRESULT CreateIdentity2([in] WCHAR *pszName, [in] WCHAR *pszPassword, [out] IUserIdentity **ppIdentity);
// Removes an identity
HRESULT DestroyIdentity([in] GUID *uidCookie);
// Logon as named user with password
HRESULT LogonAs([in] WCHAR *pszName, [in] WCHAR *pszPassword, [out] IUserIdentity **ppIdentity);
HRESULT SetDefaultIdentity([in] GUID *puidCookie);
HRESULT GetDefaultIdentity([out] GUID *puidCookie);
}
cpp_quote("extern const IID CLSID_UserIdentityManager;")
[
uuid(A9AE6C94-1D1B-11D2-B21A-00C04FA357FA), // IID_IUserIdentity2
helpstring("User Identity interface")
]
interface IUserIdentity2 : IUserIdentity
{
// Get ordinal for this user
HRESULT GetOrdinal([out] DWORD* dwOrdinal);
HRESULT SetName([in] WCHAR *pszName);
HRESULT ChangePassword([in] WCHAR *szOldPass, [in] WCHAR *szNewPass);
}