windows-nt/Source/XPSP1/NT/shell/published/inc/shgina.idl
2020-09-26 16:20:57 +08:00

325 lines
12 KiB
Plaintext

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// File: shgina.h
//
// Contents: MIDL definitions for ILogonEnumUsers, ILogonUser, ILogonUserEnumNotifications,
// ILogonUserNotification
//
//----------------------------------------------------------------------------
// TODO: Notes from BryanSt's code review of Reiner's check in.
// 1. #define DISPIDs in another file. ___id.h
// 2. Rename to lower case first letter of all APIs
// 3. Imple IObjectWithSite for security
// 4. Rename ILogonEnumUsers to LogonUsers (LogonUserCollection)
// 5. get_Domain() should return a INTDomain w/ get_name()
// 6. Break EnumFlags into ::put_sort() and ::put_filter()
// 7. Rename "Count" to "length" to be compatible with the new JavaScript OMs.
typedef enum ILUEOrder
{
ILEU_MOSTRECENT = 0,
ILEU_ALPHABETICAL = 1,
} ILUEORDER;
import "oaidl.idl";
import "ocidl.idl";
[
uuid(0A055C02-BABE-4480-BB7B-A8EC723CE9C0), // LIBID_SHGINALib
helpstring("SHGINA 1.0 Type Library"),
lcid(0x0000),
version(1.0)
]
library SHGINALib
{
importlib("stdole2.tlb");
/* TODO:
[
object,
uuid(60664CAF-AF0D-1001-A300-5C7D25FF22A0),
dual,
hidden,
helpstring("ILogonUserNotification Interface"),
oleautomation
]
interface ILogonUserNotification : IDispatch
{
// Properties
[id(1), propget, helpstring("Get the unique ID of the Notification.")]
HRESULT UniqueID([out, retval] BSTR* pbstr);
[id(2), propget, helpstring("Get the image associated with the notification.")]
HRESULT Image([out, retval] BSTR* pbstr);
[id(3), propget, helpstring("Get the text string associated with the notification.")]
HRESULT Text([out, retval] BSTR* pbstr);
[id(4), propget, helpstring("Get the URL string associated with the notification.")]
HRESULT URL([out, retval] BSTR* pbstr);
};
[
uuid(60664CAF-AF0D-0001-A300-5C7D25FF22A0),
helpstring("LogonUserNotification Class")
]
coclass LogonUserNotification
{
[default] interface ILogonUserNotification;
};
[
object,
uuid(60664CAF-AF0D-1002-A300-5C7D25FF22A0),
dual,
hidden,
helpstring("ILogonUserEnumNotification Interface"),
oleautomation
]
interface ILogonUserEnumNotifications : IDispatch
{
// Properties
[id(1), propget, helpstring("Get the total number of user notifications.")]
HRESULT Count([out, retval] UINT* pcNotifications);
// Methods
[id(DISPID_VALUE), helpstring("Return a LogonUserNotification given the specified index.")]
HRESULT Item([in] VARIANT varUserID, [out, retval] ILogonUserNotification** ppUserNotification);
};
[
uuid(60664CAF-AF0D-0002-A300-5C7D25FF22A0),
helpstring("LogonUserEnumNotifications Class")
]
coclass LogonUserEnumNotifications
{
[default] interface ILogonUserEnumNotifications;
};
*/
[
object,
uuid(60664CAF-AF0D-1003-A300-5C7D25FF22A0),
dual,
hidden,
helpstring("ILogonUser Interface"),
oleautomation
]
interface ILogonUser : IDispatch
{
// Properties
[id(1), propget, helpstring("Get the named user setting.")]
HRESULT setting([in] BSTR bstrName, [out, retval] VARIANT* pvarVal);
[id(1), propput, helpstring("Set the named user setting.")]
HRESULT setting([in] BSTR bstrName, [in] VARIANT varVal);
[id(2), propget, helpstring("Test whether the user is logged on.")]
HRESULT isLoggedOn([out, retval] VARIANT_BOOL* pbLoggedIn);
[id(3), propget, helpstring("Test whether the user requires a password.")]
HRESULT passwordRequired([out, retval] VARIANT_BOOL* pbPasswordRequired);
[id(4), propget, helpstring("Test whether the user has the interactive logon right.")]
HRESULT interactiveLogonAllowed([out, retval] VARIANT_BOOL* pbInteractiveLogonAllowed);
[id(5), propget, helpstring("Check whether the user's profile folder is private.")]
HRESULT isProfilePrivate([out, retval] VARIANT_BOOL* pbPrivate);
[id(6), propget, helpstring("Check whether the user has created a password reset disk.")]
HRESULT isPasswordResetAvailable([out, retval] VARIANT_BOOL* pbResetAvailable);
// Methods
[helpstring("Log the user onto the system with the given password.")]
HRESULT logon([in] BSTR pstrPassword, [out, retval] VARIANT_BOOL* pbRet);
[helpstring("Log the user off the system.")]
HRESULT logoff([out, retval] VARIANT_BOOL* pbRet);
[helpstring("Change the users password.")]
HRESULT changePassword([in] VARIANT varNewPassword, [in] VARIANT varOldPassword, [out, retval] VARIANT_BOOL* pbRet);
[helpstring("Set ACLs to make the user's profile folder private.")]
HRESULT makeProfilePrivate([in] VARIANT_BOOL bPrivate);
[helpstring("Get the email account name and number of unread messages.")]
HRESULT getMailAccountInfo([in] UINT uiAccountIndex, [out] VARIANT *pvarAccountName, [out] UINT *pcUnreadMessages);
/* TODO:
[helpstring("Return an ILogonUserEnumNotifications to enumerate all notifications associated with the user.")]
HRESULT EnumUserNotifications([out] ILogonUserEnumNotifications** ppEnumNotifications);
*/
};
[
uuid(60664CAF-AF0D-0003-A300-5C7D25FF22A0),
helpstring("LogonUser Class")
]
coclass ShellLogonUser
{
[default] interface ILogonUser;
};
[
object,
uuid(60664CAF-AF0D-1004-A300-5C7D25FF22A0),
dual,
hidden,
helpstring("ILogonEnumUsers Interface"),
oleautomation
]
interface ILogonEnumUsers : IDispatch
{
// Properties
[id(1), propget, helpstring("Get the current domain we are enumerating users on.")]
HRESULT Domain([out, retval] BSTR* pbstr);
[id(1), propput, helpstring("Set the current domain we are enumerating users on.")]
HRESULT Domain([in] BSTR bstr);
[id(2), propget, helpstring("Get the current enumeration flags.")]
HRESULT EnumFlags([out, retval] ILUEORDER* porder);
[id(2), propput, helpstring("Set the current enumeration flags.")]
HRESULT EnumFlags([in] ILUEORDER order);
[id(3), propget, helpstring("Get the total number of users.")]
HRESULT length([out, retval] UINT* pcUsers);
[id(6), propget, helpstring("Get the current user.")]
HRESULT currentUser([out, retval] ILogonUser** ppLogonUserInfo);
// Methods
[id(DISPID_VALUE), helpstring("Return a LogonUser given the specified name/index.")]
HRESULT item([in] VARIANT varUserId, [out, retval] ILogonUser** ppLogonUserInfo);
[id(DISPID_NEWENUM), helpstring("Return an IEnumVARIANT ojbect for all of the users.")]
HRESULT _NewEnum([out, retval] IUnknown** retval);
[id(4), helpstring("Create a new user.")]
HRESULT create([in] BSTR bstrLoginName, [out, retval] ILogonUser **ppLogonUser);
[id(5), helpstring("Delete a user.")]
HRESULT remove([in] VARIANT varUserId, [in, optional] VARIANT varBackupPath, [out, retval] VARIANT_BOOL *pbSuccess);
};
[
uuid(60664CAF-AF0D-0004-A300-5C7D25FF22A0),
helpstring("LogonEnumUsers Class")
]
coclass ShellLogonEnumUsers
{
[default] interface ILogonEnumUsers;
};
typedef enum ILM_GUEST_FLAGS
{
ILM_GUEST_ACCOUNT = 0x00000000,
ILM_GUEST_INTERACTIVE_LOGON = 0x00000001,
ILM_GUEST_NETWORK_LOGON = 0x00000002,
} ILM_GUEST_FLAGS;
[
object,
uuid(60664CAF-AF0D-1005-A300-5C7D25FF22A0),
dual,
hidden,
helpstring("ILocalMachine Interface"),
oleautomation
]
interface ILocalMachine : IDispatch
{
// Properties
[id(1), propget, helpstring("Get the machine name.")]
HRESULT MachineName([out, retval] VARIANT* pvarVal);
[id(2), propget, helpstring("Test whether the Guest account is enabled.")]
HRESULT isGuestEnabled([in] ILM_GUEST_FLAGS flags, [out, retval] VARIANT_BOOL* pbEnabled);
[id(3), propget, helpstring("Test whether friendly UI is enabled.")]
HRESULT isFriendlyUIEnabled([out, retval] VARIANT_BOOL* pbEnabled);
[id(3), propput, helpstring("Enable or disable friendly UI.")]
HRESULT isFriendlyUIEnabled([in] VARIANT_BOOL bEnabled);
[id(4), propget, helpstring("Test whether multiple users is enabled.")]
HRESULT isMultipleUsersEnabled([out, retval] VARIANT_BOOL* pbEnabled);
[id(4), propput, helpstring("Enable or disable multiple users.")]
HRESULT isMultipleUsersEnabled([in] VARIANT_BOOL bEnabled);
[id(5), propget, helpstring("Test whether remote connections are enabled.")]
HRESULT isRemoteConnectionsEnabled([out, retval] VARIANT_BOOL* pbEnabled);
[id(5), propput, helpstring("Enable or disable remote connections.")]
HRESULT isRemoteConnectionsEnabled([in] VARIANT_BOOL bEnabled);
[id(6), propget, helpstring("Get a well-known user account name.")]
HRESULT AccountName([in] VARIANT varAccount, [out, retval] VARIANT* pvarVal);
[id(7), propget, helpstring("Test whether the machine can be undocked.")]
HRESULT isUndockEnabled([out, retval] VARIANT_BOOL* pbEnabled);
[id(8), propget, helpstring("Test whether the machine can be shut down.")]
HRESULT isShutdownAllowed([out, retval] VARIANT_BOOL* pbEnabled);
[id(9), propget, helpstring("Test whether all network traffic will be treated as through it were local guest account.")]
HRESULT isGuestAccessMode([out, retval] VARIANT_BOOL* pbForceGuest);
[id(100), propget, helpstring("Test whether Offline Files is enabled.")]
HRESULT isOfflineFilesEnabled([out, retval] VARIANT_BOOL *pbEnabled);
// Methods
[id(10), helpstring("Turn Off Computer.")]
HRESULT TurnOffComputer(void);
[id(20), helpstring("Signal UI host failure.")]
HRESULT SignalUIHostFailure(void);
[id(30), helpstring("Allow external credentials.")]
HRESULT AllowExternalCredentials(void);
[id(31), helpstring("Request external credentials.")]
HRESULT RequestExternalCredentials(void);
[id(32), helpstring("Logon with external credentials.")]
HRESULT LogonWithExternalCredentials([in] BSTR pstrUsername, [in] BSTR pstrDomain, [in] BSTR pstrPassword, [out, retval] VARIANT_BOOL* pbRet);
[id(33), helpstring("Initiate interactive logon with credentials.")]
HRESULT InitiateInteractiveLogon([in] BSTR pstrUsername, [in] BSTR pstrDomain, [in] BSTR pstrPassword, [in] DWORD dwTimeout, [out, retval] VARIANT_BOOL* pbRet);
[id(40), helpstring("Undock Computer.")]
HRESULT UndockComputer(void);
[id(50), helpstring("Enable the Guest account for interactive and/or network logon.")]
HRESULT EnableGuest(ILM_GUEST_FLAGS flags);
[id(51), helpstring("Disable the Guest account for interactive and/or network logon.")]
HRESULT DisableGuest(ILM_GUEST_FLAGS flags);
};
[
uuid(60664CAF-AF0D-0005-A300-5C7D25FF22A0),
helpstring("LocalMachine Class")
]
coclass ShellLocalMachine
{
[default] interface ILocalMachine;
};
[
object,
uuid(60664CAF-AF0D-1007-A300-5C7D25FF22A0),
dual,
hidden,
helpstring("ILogonStatusHost Interface"),
oleautomation
]
interface ILogonStatusHost : IDispatch
{
// Methods
[id(10), helpstring("Initialize.")]
HRESULT Initialize([in] HINSTANCE hInstance, [in] HWND hwndHost);
[id(11), helpstring("Window procedure helper.")]
HRESULT WindowProcedureHelper([in] HWND hwnd, [in] UINT uMsg, [in] VARIANT wParam, [in] VARIANT lParam);
[id(12), helpstring("UnInitialize.")]
HRESULT UnInitialize(void);
};
[
uuid(60664CAF-AF0D-0007-A300-5C7D25FF22A0),
helpstring("LogonStatusHost Class")
]
coclass ShellLogonStatusHost
{
[default] interface ILogonStatusHost;
};
};