windows-nt/Source/XPSP1/NT/shell/osshell/dskquota/control/dispatch.idl
2020-09-26 16:20:57 +08:00

309 lines
11 KiB
Plaintext

/************************************************************************
* *
* dispatch.idl - Windows NT Disk Quota dispatch interfaces. *
* *
* Copyright (c) 1991-1997, Microsoft Corp. All rights reserved. *
* *
************************************************************************/
const int DISPID_DISKQUOTAEVENTS_USERNAMECHANGED = 1;
import "unknwn.idl";
[
uuid(7988B57C-EC89-11cf-9C00-00AA00A14F56),
helpstring("Microsoft Disk Quota Type Library"),
version(1.0)
]
library DiskQuotaTypeLibrary
{
importlib("stdole2.tlb");
// ========================================================================
// Interface for DIDiskQuotaUser
// ========================================================================
[
uuid(7988B57A-EC89-11cf-9C00-00AA00A14F56),
helpstring("Automation interface for DiskQuotaUser"),
oleautomation,
dual,
version(1.0)
]
interface DIDiskQuotaUser : IDispatch
{
// --------------------------------------------------------------------
// Properties
// --------------------------------------------------------------------
[propget, helpstring("Unique ID number")]
HRESULT ID(
[out, retval] long *pID);
[propget, helpstring("Name of user's account container")]
HRESULT AccountContainerName(
[out, retval] BSTR *pContainerName);
[propget, helpstring("User's logon account name")]
HRESULT LogonName(
[out, retval] BSTR *pLogonName);
[propget, helpstring("User's display name")]
HRESULT DisplayName(
[out, retval] BSTR *pDisplayName);
[propget, helpstring("User's quota warning threshold (bytes)")]
HRESULT QuotaThreshold(
[out, retval] double *pThreshold);
[propput]
HRESULT QuotaThreshold(
[in] double Threshold);
[propget, helpstring("User's quota warning threshold (text)")]
HRESULT QuotaThresholdText(
[out, retval] BSTR *pThresholdText);
[propget, helpstring("User's quota limit (bytes)")]
HRESULT QuotaLimit(
[out, retval] double *pLimit);
[propput]
HRESULT QuotaLimit(
[in] double Limit);
[propget, helpstring("User's quota limit (text)")]
HRESULT QuotaLimitText(
[out, retval] BSTR *pLimitText);
[propget, helpstring("Quota charged to user (bytes)")]
HRESULT QuotaUsed(
[out, retval] double *pUsed);
[propget, helpstring("Quota charged to user (text)")]
HRESULT QuotaUsedText(
[out, retval] BSTR *pUsedText);
//
// AccountStatus property values.
// These must match the DISKQUOTA_USER_ACCOUNT_XXXXXX constants
// defined in dskquota.h.
//
typedef enum AccountStatusConstants {
[helpstring("Account information is resolved")] dqAcctResolved = 0,
[helpstring("Account information is unavailable")] dqAcctUnavailable = 1,
[helpstring("Account has been deleted")] dqAcctDeleted = 2,
[helpstring("Account is invalid")] dqAcctInvalid = 3,
[helpstring("Account cannot be found")] dqAcctUnknown = 4,
[helpstring("Account information is unresolved")] dqAcctUnresolved = 5
} AccountStatusConstants;
[propget, helpstring("Status of user's account")]
HRESULT AccountStatus(
[out, retval] AccountStatusConstants *pStatus);
// --------------------------------------------------------------------
// Methods
// --------------------------------------------------------------------
[helpstring("Invalidate data cached in user object")]
HRESULT Invalidate(void);
};
// ========================================================================
// Interface for DIDiskQuotaControlEvents
// ========================================================================
[
uuid(7988B581-EC89-11cf-9C00-00AA00A14F56),
helpstring("DIDiskQuotaControlEvents Interface"),
nonextensible,
version(1.0)
]
dispinterface DIDiskQuotaControlEvents
{
properties:
methods:
[id(DISPID_DISKQUOTAEVENTS_USERNAMECHANGED),
helpstring("Called when name information for a DiskQuotaUser object has been resolved")]
void OnUserNameChanged(DIDiskQuotaUser *pUser);
};
// ========================================================================
// Interface for DIDiskQuotaControl
// ========================================================================
[
uuid(7988B575-EC89-11cf-9C00-00AA00A14F56),
helpstring("Automation interface for DiskQuotaControl object"),
oleautomation,
dual,
version(1.0)
]
interface DIDiskQuotaControl : IDispatch
{
// --------------------------------------------------------------------
// Properties
// --------------------------------------------------------------------
//
// Quota state flags used in QuotaState property. These must match the
// DISKQUOTA_STATE_XXXXX flags defined in dskquota.h
//
typedef enum QuotaStateConstants {
[helpstring("Disk quota disabled")] dqStateDisable = 0,
[helpstring("Track quota usage")] dqStateTrack = 1,
[helpstring("Enforce quota limit")] dqStateEnforce = 2
} QuotaStateConstants;
const int dqStateMaxValue = 2;
[propput, helpstring("State of the volume's disk quota system")]
HRESULT QuotaState(
[in] QuotaStateConstants State);
[propget]
HRESULT QuotaState(
[out, retval] QuotaStateConstants *pState);
[propget, helpstring("Indicates if quota information is out of date")]
HRESULT QuotaFileIncomplete(
[out, retval] VARIANT_BOOL *pbIncomplete);
[propget, helpstring("Indicates if quota information is being rebuilt")]
HRESULT QuotaFileRebuilding(
[out, retval] VARIANT_BOOL *pbRebuilding);
[propput, helpstring("Write event log entry when user exceeds quota warning threshold")]
HRESULT LogQuotaThreshold(
[in] VARIANT_BOOL bLogThreshold);
[propget]
HRESULT LogQuotaThreshold(
[out, retval] VARIANT_BOOL *pbLogThreshold);
[propput, helpstring("Write event log entry when user exceeds quota limit")]
HRESULT LogQuotaLimit(
[in] VARIANT_BOOL bLogLimit);
[propget]
HRESULT LogQuotaLimit(
[out, retval] VARIANT_BOOL *pbLogLimit);
[propput, helpstring("Default warning threshold applied to new volume users (byte value)")]
HRESULT DefaultQuotaThreshold(
[in] double Threshold);
[propget]
HRESULT DefaultQuotaThreshold(
[out, retval] double *pThreshold);
[propget, helpstring("Default warning threshold applied to new volume users (text string)")]
HRESULT DefaultQuotaThresholdText(
[out, retval] BSTR *pThresholdText);
[propput, helpstring("Default quota limit applied to new volume users (byte value)")]
HRESULT DefaultQuotaLimit(
[in] double Limit);
[propget]
HRESULT DefaultQuotaLimit(
[out, retval] double *pLimit);
[propget, helpstring("Default quota limit applied to new volume users (text string)")]
HRESULT DefaultQuotaLimitText(
[out, retval] BSTR *pLimitText);
//
// Values for setting the user name resolution mode. These must match
// the DISKQUOTA_USERNAME_RESOLVE_XXXX constants defined in dskquota.h
//
typedef enum UserNameResolutionConstants {
[helpstring("Do not resolve user name information")] dqResolveNone = 0,
[helpstring("Wait while resolving name information")] dqResolveSync = 1,
[helpstring("Do not wait while resolving name information")] dqResolveAsync = 2
} UserNameResolutionConstants;
const int dqResolveMaxValue = 2;
[propput, helpstring("Control the resolution of user Security IDs to user Names")]
HRESULT UserNameResolution(
[in] UserNameResolutionConstants ResolutionType);
[propget]
HRESULT UserNameResolution(
[out, retval] UserNameResolutionConstants *pResolutionType);
// --------------------------------------------------------------------
// Methods
// --------------------------------------------------------------------
[helpstring("Initialize the quota control object for a specified volume")]
HRESULT Initialize(
[in] BSTR path,
[in] VARIANT_BOOL bReadWrite);
[helpstring("Terminate the user name resolution thread")]
HRESULT ShutdownNameResolution(void);
[helpstring("Add a user quota entry by Name")]
HRESULT AddUser(
[in] BSTR LogonName,
[out, retval] DIDiskQuotaUser **ppUser);
[helpstring("Delete a user quota entry")]
HRESULT DeleteUser(
[in] DIDiskQuotaUser *pUser);
[helpstring("Find a user quota entry by Name")]
HRESULT FindUser(
[in] BSTR LogonName,
[out, retval] DIDiskQuotaUser **ppUser);
[helpstring("Invalidate the cache of user name information")]
HRESULT InvalidateSidNameCache(void);
[helpstring("Promote a user quota entry to the head of the name resolution queue")]
HRESULT GiveUserNameResolutionPriority(
[in] DIDiskQuotaUser *pUser);
[helpstring("Translates a user logon name to a security ID")]
HRESULT TranslateLogonNameToSID(
[in] BSTR LogonName,
[out, retval] BSTR *psid);
[id(DISPID_NEWENUM), helpstring("Create a Collection object for user quota entry enumeration.")]
HRESULT _NewEnum(
[out, retval] IDispatch **ppEnum);
};
// ========================================================================
// CoClass for Disk Quota object.
// ========================================================================
[
uuid(7988B571-EC89-11cf-9C00-00AA00A14F56),
helpstring("Microsoft Disk Quota"),
version(1.0)
]
coclass DiskQuotaControl{
[default] interface DIDiskQuotaControl;
[default, source] dispinterface DIDiskQuotaControlEvents;
interface IDiskQuotaControlEvents;
interface DIDiskQuotaUser;
};
};
[
object,
dual,
uuid(7988B579-EC89-11cf-9C00-00AA00A14F56),
helpstring("Dual interface for DiskQuotaControl Events"),
version(1.0)
]
interface IDiskQuotaControlEvents : IDispatch
{
HRESULT OnUserNameChanged(
[in] DIDiskQuotaUser *pUser);
};