204 lines
5 KiB
C
204 lines
5 KiB
C
|
#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
|
||
|
|