DskQuota.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:10k
- /**************************************************************************
- * *
- * dskquota.h -- public header for Windows 2000 disk quota interfaces. *
- * *
- * Copyright (c) 1991-1999, Microsoft Corp. All rights reserved. *
- * *
- **************************************************************************/
- #ifndef __DSKQUOTA_H
- #define __DSKQUOTA_H
- #if _MSC_VER > 1000
- #pragma once
- #endif
- #ifndef _WINDOWS_
- #include <windows.h>
- #endif
- #ifndef _OLE2_H_
- #include <ole2.h>
- #endif
- #ifndef _OLECTL_H_
- #include <olectl.h>
- #endif
- #ifdef INITGUIDS
- #include <initguid.h>
- #endif
- //
- // Class IDs
- //
- // {7988B571-EC89-11cf-9C00-00AA00A14F56}
- DEFINE_GUID(CLSID_DiskQuotaControl,
- 0x7988b571, 0xec89, 0x11cf, 0x9c, 0x0, 0x0, 0xaa, 0x0, 0xa1, 0x4f, 0x56);
- //
- // Interface IDs
- //
- // {7988B572-EC89-11cf-9C00-00AA00A14F56}
- DEFINE_GUID(IID_IDiskQuotaControl,
- 0x7988b572, 0xec89, 0x11cf, 0x9c, 0x0, 0x0, 0xaa, 0x0, 0xa1, 0x4f, 0x56);
- // {7988B574-EC89-11cf-9C00-00AA00A14F56}
- DEFINE_GUID(IID_IDiskQuotaUser,
- 0x7988b574, 0xec89, 0x11cf, 0x9c, 0x0, 0x0, 0xaa, 0x0, 0xa1, 0x4f, 0x56);
- // {7988B576-EC89-11cf-9C00-00AA00A14F56}
- DEFINE_GUID(IID_IDiskQuotaUserBatch,
- 0x7988b576, 0xec89, 0x11cf, 0x9c, 0x0, 0x0, 0xaa, 0x0, 0xa1, 0x4f, 0x56);
- // {7988B577-EC89-11cf-9C00-00AA00A14F56}
- DEFINE_GUID(IID_IEnumDiskQuotaUsers,
- 0x7988b577, 0xec89, 0x11cf, 0x9c, 0x0, 0x0, 0xaa, 0x0, 0xa1, 0x4f, 0x56);
- // {7988B579-EC89-11cf-9C00-00AA00A14F56}
- DEFINE_GUID(IID_IDiskQuotaEvents,
- 0x7988b579, 0xec89, 0x11cf, 0x9c, 0x0, 0x0, 0xaa, 0x0, 0xa1, 0x4f, 0x56);
- //
- // Definitions for value and bits in DWORD returned by
- // IDiskQuotaControl::GetQuotaState.
- //
- #define DISKQUOTA_STATE_DISABLED 0x00000000
- #define DISKQUOTA_STATE_TRACK 0x00000001
- #define DISKQUOTA_STATE_ENFORCE 0x00000002
- #define DISKQUOTA_STATE_MASK 0x00000003
- #define DISKQUOTA_FILESTATE_INCOMPLETE 0x00000100
- #define DISKQUOTA_FILESTATE_REBUILDING 0x00000200
- #define DISKQUOTA_FILESTATE_MASK 0x00000300
- //
- // Helper macros for setting and testing state value.
- //
- #define DISKQUOTA_SET_DISABLED(s)
- ((s) &= ~DISKQUOTA_STATE_MASK)
- #define DISKQUOTA_SET_TRACKED(s)
- ((s) |= (DISKQUOTA_STATE_MASK & DISKQUOTA_STATE_TRACK))
- #define DISKQUOTA_SET_ENFORCED(s)
- ((s) |= (DISKQUOTA_STATE_ENFORCE & DISKQUOTA_STATE_ENFORCE))
- #define DISKQUOTA_IS_DISABLED(s)
- (DISKQUOTA_STATE_DISABLED == ((s) & DISKQUOTA_STATE_MASK))
- #define DISKQUOTA_IS_TRACKED(s)
- (DISKQUOTA_STATE_TRACK == ((s) & DISKQUOTA_STATE_MASK))
- #define DISKQUOTA_IS_ENFORCED(s)
- (DISKQUOTA_STATE_ENFORCE == ((s) & DISKQUOTA_STATE_MASK))
- //
- // These file state flags are read-only.
- //
- #define DISKQUOTA_FILE_INCOMPLETE(s)
- (0 != ((s) & DISKQUOTA_FILESTATE_INCOMPLETE))
- #define DISKQUOTA_FILE_REBUILDING(s)
- (0 != ((s) & DISKQUOTA_FILESTATE_REBUILDING))
- //
- // Definitions for bits in DWORD returned by
- // IDiskQuotaControl::GetQuotaLogFlags.
- //
- #define DISKQUOTA_LOGFLAG_USER_THRESHOLD 0x00000001
- #define DISKQUOTA_LOGFLAG_USER_LIMIT 0x00000002
- //
- // Helper macros to interrogate a log flags DWORD.
- //
- #define DISKQUOTA_IS_LOGGED_USER_THRESHOLD(f)
- (0 != ((f) & DISKQUOTA_LOGFLAG_USER_THRESHOLD))
- #define DISKQUOTA_IS_LOGGED_USER_LIMIT(f)
- (0 != ((f) & DISKQUOTA_LOGFLAG_USER_LIMIT))
- //
- // Helper macros to set/clear bits in a log flags DWORD.
- //
- #define DISKQUOTA_SET_LOG_USER_THRESHOLD(f,yn)
- ((f &= ~DISKQUOTA_LOGFLAG_USER_THRESHOLD) |= ((yn) ? DISKQUOTA_LOGFLAG_USER_THRESHOLD : 0))
- #define DISKQUOTA_SET_LOG_USER_LIMIT(f,yn)
- ((f &= ~DISKQUOTA_LOGFLAG_USER_LIMIT) |= ((yn) ? DISKQUOTA_LOGFLAG_USER_LIMIT : 0))
- //
- // Per-user quota information.
- //
- typedef struct DiskQuotaUserInformation {
- LONGLONG QuotaUsed;
- LONGLONG QuotaThreshold;
- LONGLONG QuotaLimit;
- } DISKQUOTA_USER_INFORMATION, *PDISKQUOTA_USER_INFORMATION;
- //
- // Values for fNameResolution argument to:
- //
- // IDiskQuotaControl::AddUserSid
- // IDiskQuotaControl::AddUserName
- // IDiskQuotaControl::FindUserSid
- // IDiskQuotaControl::CreateEnumUsers
- //
- #define DISKQUOTA_USERNAME_RESOLVE_NONE 0
- #define DISKQUOTA_USERNAME_RESOLVE_SYNC 1
- #define DISKQUOTA_USERNAME_RESOLVE_ASYNC 2
- //
- // Values for status returned by IDiskQuotaUser::GetAccountStatus.
- //
- #define DISKQUOTA_USER_ACCOUNT_RESOLVED 0
- #define DISKQUOTA_USER_ACCOUNT_UNAVAILABLE 1
- #define DISKQUOTA_USER_ACCOUNT_DELETED 2
- #define DISKQUOTA_USER_ACCOUNT_INVALID 3
- #define DISKQUOTA_USER_ACCOUNT_UNKNOWN 4
- #define DISKQUOTA_USER_ACCOUNT_UNRESOLVED 5
- //
- // IDiskQuotaUser represents a single user quota record on a particular
- // NTFS volume. Objects using this interface are instantiated
- // through several IDiskQuotaControl methods.
- //
- #undef INTERFACE
- #define INTERFACE IDiskQuotaUser
- DECLARE_INTERFACE_(IDiskQuotaUser, IUnknown)
- {
- STDMETHOD(GetID)(THIS_
- ULONG *pulID) PURE;
- STDMETHOD(GetName)(THIS_
- LPWSTR pszAccountContainer,
- DWORD cchAccountContainer,
- LPWSTR pszLogonName,
- DWORD cchLogonName,
- LPWSTR pszDisplayName,
- DWORD cchDisplayName) PURE;
- STDMETHOD(GetSidLength)(THIS_
- LPDWORD pdwLength) PURE;
- STDMETHOD(GetSid)(THIS_
- LPBYTE pbSidBuffer,
- DWORD cbSidBuffer) PURE;
- STDMETHOD(GetQuotaThreshold)(THIS_
- PLONGLONG pllThreshold) PURE;
- STDMETHOD(GetQuotaThresholdText)(THIS_
- LPWSTR pszText,
- DWORD cchText) PURE;
- STDMETHOD(GetQuotaLimit)(THIS_
- PLONGLONG pllLimit) PURE;
- STDMETHOD(GetQuotaLimitText)(THIS_
- LPWSTR pszText,
- DWORD cchText) PURE;
- STDMETHOD(GetQuotaUsed)(THIS_
- PLONGLONG pllUsed) PURE;
- STDMETHOD(GetQuotaUsedText)(THIS_
- LPWSTR pszText,
- DWORD cchText) PURE;
- STDMETHOD(GetQuotaInformation)(THIS_
- LPVOID pbQuotaInfo,
- DWORD cbQuotaInfo) PURE;
- STDMETHOD(SetQuotaThreshold)(THIS_
- LONGLONG llThreshold,
- BOOL fWriteThrough) PURE;
- STDMETHOD(SetQuotaLimit)(THIS_
- LONGLONG llLimit,
- BOOL fWriteThrough) PURE;
- STDMETHOD(Invalidate)(THIS) PURE;
- STDMETHOD(GetAccountStatus)(THIS_
- LPDWORD pdwStatus) PURE;
- };
- typedef IDiskQuotaUser DISKQUOTA_USER, *PDISKQUOTA_USER;
- //
- // IEnumDiskQuotaUsers represents an enumerator created by
- // IDiskQuotaControl for the purpose of enumerating individual user quota
- // records on a particular volume. Each record is represented through
- // the IDiskQuotaUser interface.
- //
- #undef INTERFACE
- #define INTERFACE IEnumDiskQuotaUsers
- DECLARE_INTERFACE_(IEnumDiskQuotaUsers, IUnknown)
- {
- STDMETHOD(Next)(THIS_
- DWORD cUsers,
- PDISKQUOTA_USER *rgUsers,
- LPDWORD pcUsersFetched) PURE;
- STDMETHOD(Skip)(THIS_
- DWORD cUsers) PURE;
- STDMETHOD(Reset)(THIS) PURE;
- STDMETHOD(Clone)(THIS_
- IEnumDiskQuotaUsers **ppEnum) PURE;
- };
- typedef IEnumDiskQuotaUsers ENUM_DISKQUOTA_USERS, *PENUM_DISKQUOTA_USERS;
- //
- // IDiskQuotaUserBatch represents a collection of IDiskQuotaUser
- // pointers for the purpose of grouping updates to quota information.
- //
- #undef INTERFACE
- #define INTERFACE IDiskQuotaUserBatch
- DECLARE_INTERFACE_(IDiskQuotaUserBatch, IUnknown)
- {
- STDMETHOD(Add)(THIS_
- PDISKQUOTA_USER pUser) PURE;
- STDMETHOD(Remove)(THIS_
- PDISKQUOTA_USER pUser) PURE;
- STDMETHOD(RemoveAll)(THIS) PURE;
- STDMETHOD(FlushToDisk)(THIS) PURE;
- };
- typedef IDiskQuotaUserBatch DISKQUOTA_USER_BATCH, *PDISKQUOTA_USER_BATCH;
- //
- // IDiskQuotaControl represents a disk volume, providing query and
- // control of that volume's quota information.
- //
- #undef INTERFACE
- #define INTERFACE IDiskQuotaControl
- DECLARE_INTERFACE_(IDiskQuotaControl, IConnectionPointContainer)
- {
- STDMETHOD(Initialize)(THIS_
- LPCWSTR pszPath,
- BOOL bReadWrite) PURE;
- STDMETHOD(SetQuotaState)(THIS_
- DWORD dwState) PURE;
- STDMETHOD(GetQuotaState)(THIS_
- LPDWORD pdwState) PURE;
- STDMETHOD(SetQuotaLogFlags)(THIS_
- DWORD dwFlags) PURE;
- STDMETHOD(GetQuotaLogFlags)(THIS_
- LPDWORD pdwFlags) PURE;
- STDMETHOD(SetDefaultQuotaThreshold)(THIS_
- LONGLONG llThreshold) PURE;
- STDMETHOD(GetDefaultQuotaThreshold)(THIS_
- PLONGLONG pllThreshold) PURE;
- STDMETHOD(GetDefaultQuotaThresholdText)(THIS_
- LPWSTR pszText,
- DWORD cchText) PURE;
- STDMETHOD(SetDefaultQuotaLimit)(THIS_
- LONGLONG llLimit) PURE;
- STDMETHOD(GetDefaultQuotaLimit)(THIS_
- PLONGLONG pllLimit) PURE;
- STDMETHOD(GetDefaultQuotaLimitText)(THIS_
- LPWSTR pszText,
- DWORD cchText) PURE;
- STDMETHOD(AddUserSid)(THIS_
- PSID pUserSid,
- DWORD fNameResolution,
- PDISKQUOTA_USER *ppUser) PURE;
- STDMETHOD(AddUserName)(THIS_
- LPCWSTR pszLogonName,
- DWORD fNameResolution,
- PDISKQUOTA_USER *ppUser) PURE;
- STDMETHOD(DeleteUser)(THIS_
- PDISKQUOTA_USER pUser) PURE;
- STDMETHOD(FindUserSid)(THIS_
- PSID pUserSid,
- DWORD fNameResolution,
- PDISKQUOTA_USER *ppUser) PURE;
- STDMETHOD(FindUserName)(THIS_
- LPCWSTR pszLogonName,
- PDISKQUOTA_USER *ppUser) PURE;
- STDMETHOD(CreateEnumUsers)(THIS_
- PSID *rgpUserSids,
- DWORD cpSids,
- DWORD fNameResolution,
- PENUM_DISKQUOTA_USERS *ppEnum) PURE;
- STDMETHOD(CreateUserBatch)(THIS_
- PDISKQUOTA_USER_BATCH *ppBatch) PURE;
- STDMETHOD(InvalidateSidNameCache)(THIS) PURE;
- STDMETHOD(GiveUserNameResolutionPriority)(THIS_
- PDISKQUOTA_USER pUser) PURE;
- STDMETHOD(ShutdownNameResolution)(THIS_
- VOID) PURE;
- };
- typedef IDiskQuotaControl DISKQUOTA_CONTROL, *PDISKQUOTA_CONTROL;
- #undef INTERFACE
- #define INTERFACE IDiskQuotaEvents
- DECLARE_INTERFACE_(IDiskQuotaEvents, IUnknown)
- {
- STDMETHOD(OnUserNameChanged)(THIS_
- PDISKQUOTA_USER pUser) PURE;
- };
- typedef IDiskQuotaEvents DISKQUOTA_EVENTS, *PDISKQUOTA_EVENTS;
- #endif // __DSKQUOTA_H