Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#ifndef _INC_DSKQUOTA_USERENUM_H
#define _INC_DSKQUOTA_USERENUM_H
///////////////////////////////////////////////////////////////////////////////
/* File: userenum.h
Description: Contains declaration for class DiskQuotaUserEnum.
Revision History:
Date Description Programmer -------- --------------------------------------------------- ---------- 05/22/96 Initial creation. BrianAu */ ///////////////////////////////////////////////////////////////////////////////
#ifndef _INC_DSKQUOTA_H
# include "dskquota.h"
#endif
#ifndef _INC_DSKQUOTA_FSOBJECT_H
# include "fsobject.h"
#endif
#ifndef _INC_DSKQUOTA_SIDNAME_H
# include "sidname.h"
#endif
#ifndef _INC_DSKQUOTA_DISPATCH_H
# include "dispatch.h" // MIDL-generated header.
#endif
#ifndef _INC_DSKQUOTA_OADISP_H
# include "oadisp.h" // OleAutoDispatch class.
#endif
class DiskQuotaUserEnum : public IEnumDiskQuotaUsers {
private: LONG m_cRef; // Object Ref counter.
LPBYTE m_pbBuffer; // For reading disk info.
LPBYTE m_pbCurrent; // Pointer to "current" rec in cache.
DWORD m_cbBuffer; // Size of buffer in bytes.
PSIDLIST m_pSidList; // Optional SidList filter.
BOOL m_bEOF; // End of quota info file reached?
DWORD m_cbSidList; // Sid list length in bytes.
BOOL m_bSingleUser; // Single-user enumeration?
BOOL m_bInitialized; // Initialize() already called?
BOOL m_bRestartScan; // Restart NTFS quota file scan?
DWORD m_fNameResolution; // None, sync, async
FSObject *m_pFSObject; // Pointer to file system object.
PDISKQUOTA_CONTROL m_pQuotaController; // Ptr to quota controller.
PSID_NAME_RESOLVER m_pSidNameResolver; // For getting SID account names.
HRESULT QueryQuotaInformation( BOOL bReturnSingleEntry = FALSE, PVOID pSidList = NULL, ULONG cbSidList = 0, PSID pStartSid = NULL, BOOL bRestartScan = FALSE);
HRESULT CreateUserObject( PFILE_QUOTA_INFORMATION pfqi, PDISKQUOTA_USER *ppOut);
HRESULT GetNextUser( PDISKQUOTA_USER *ppOut);
HRESULT InitializeSidList( PSIDLIST pSidList, DWORD cbSidList);
HRESULT InitializeSidList( PSID *rgpSids, DWORD cpSids);
//
// Prevent copy construction.
//
DiskQuotaUserEnum(const DiskQuotaUserEnum& UserEnum); void operator = (const DiskQuotaUserEnum& UserEnum);
public: DiskQuotaUserEnum( PDISKQUOTA_CONTROL pQuotaController, PSID_NAME_RESOLVER pSidNameResolver, FSObject *pFSObject);
~DiskQuotaUserEnum(VOID);
HRESULT Initialize( DWORD fNameResolution, DWORD cbBuffer = 2048, PSID *rgpSids = NULL, DWORD cpSids = 0);
HRESULT Initialize( const DiskQuotaUserEnum& UserEnum);
STDMETHODIMP SetNameResolution( DWORD fNameResolution);
//
// IUnknown methods.
//
STDMETHODIMP QueryInterface( REFIID, LPVOID *);
STDMETHODIMP_(ULONG) AddRef( VOID);
STDMETHODIMP_(ULONG) Release( VOID);
//
// IEnumDiskQuotaUsers methods.
//
STDMETHODIMP Next( DWORD, PDISKQUOTA_USER *, LPDWORD);
STDMETHODIMP Skip( DWORD);
STDMETHODIMP Reset( VOID);
STDMETHODIMP Clone( PENUM_DISKQUOTA_USERS *); };
//
// Enumerator for VB's "for each" construct.
//
class DiskQuotaUserCollection : public IEnumVARIANT { public: DiskQuotaUserCollection(PDISKQUOTA_CONTROL pController, DWORD fNameResolution);
~DiskQuotaUserCollection(VOID);
HRESULT Initialize(VOID);
//
// IUnknown methods.
//
STDMETHODIMP QueryInterface( REFIID, LPVOID *);
STDMETHODIMP_(ULONG) AddRef( VOID);
STDMETHODIMP_(ULONG) Release( VOID);
//
// IEnumVARIANT Methods.
//
STDMETHODIMP Next( DWORD cUsers, VARIANT *rgvar, DWORD *pcUsersFetched);
STDMETHODIMP Skip( DWORD cUsers);
STDMETHODIMP Reset( void);
STDMETHODIMP Clone( IEnumVARIANT **ppEnum);
private: LONG m_cRef; PDISKQUOTA_CONTROL m_pController; PENUM_DISKQUOTA_USERS m_pEnum; DWORD m_fNameResolution; };
#endif // _INC_DSKQUOTA_USERENUM_H
|