309 lines
11 KiB
Plaintext
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);
|
|
};
|