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