170 lines
7 KiB
Plaintext
170 lines
7 KiB
Plaintext
|
===============================================================================
|
||
|
Interface: DiskQuotaControl
|
||
|
===============================================================================
|
||
|
|
||
|
Methods:
|
||
|
AddUser
|
||
|
CreateEnumUsers
|
||
|
CreateUserBatch
|
||
|
DeleteUser
|
||
|
FindUser
|
||
|
GetDefaultQuotaLimit
|
||
|
GetDefaultQuotaThreshold
|
||
|
GetState
|
||
|
Initialize
|
||
|
InvalidateSidNameCache
|
||
|
SetDefaultQuotaLimit
|
||
|
SetDefaultQuotaThreshold
|
||
|
SetLoggingState
|
||
|
SetQuotaState
|
||
|
ShutdownAndRelease
|
||
|
|
||
|
|
||
|
-------------------------------------------------------------------------------
|
||
|
DiskQuotaControl::AddUser
|
||
|
-------------------------------------------------------------------------------
|
||
|
Adds a user to the volume's quota file.
|
||
|
|
||
|
Arguments:
|
||
|
PSID pSid - Address of account's Security Identifier (SID).
|
||
|
|
||
|
PDISKQUOTA_USER *ppUser - Address of interface pointer variable to receive
|
||
|
the IDiskQuotaUser interface pointer for the new user object.
|
||
|
|
||
|
Returns:
|
||
|
E_NOTIMPL - This function is not yet implemented.
|
||
|
|
||
|
|
||
|
-------------------------------------------------------------------------------
|
||
|
DiskQuotaControl::CreateEnumUsers
|
||
|
-------------------------------------------------------------------------------
|
||
|
Creates a user enumerator object for enumerating users in a volume's quota
|
||
|
information file. This (along with DiskQuotaControl::Find) is the primary
|
||
|
method for creating user objects from a quota control object. The resulting
|
||
|
enumerator object supports the required OLE EnumXXXXX interfaces of Next,
|
||
|
Skip, Reset and Clone. If this function returns NO_ERROR, the returned
|
||
|
enumerator object has a reference count of 1 and is ready for use.
|
||
|
|
||
|
Arguments
|
||
|
PSID pSidList [optional] - Address of an array of Security Identifiers;
|
||
|
one for each user to be included in the enumeration. This argument may
|
||
|
be NULL. If this argument is NULL, all users in the volume's quota
|
||
|
information file are included in the enumeration.
|
||
|
|
||
|
DWORD dwSidListLength [optional] - If pSidList is not NULL, this argument
|
||
|
specifies the number of bytes in the SID list. If pSidList is NULL,
|
||
|
this argument is ignored.
|
||
|
|
||
|
PENUM_DISKQUOTA_USERS **ppOut - Address of interface variable to receive
|
||
|
the IEnumDiskQuotaUsers inteface pointer of the new enumerator object.
|
||
|
|
||
|
BOOL bAsyncNameResolution - Specifies the type of SID-to-Name resolution
|
||
|
performed. Quota information files identify users by SID with SID-to-Name
|
||
|
relationships maintained by the network domain controller. When a user
|
||
|
object is first created, unless cached on the local machine, it's
|
||
|
name is not known and must be obtained from the network DC. If
|
||
|
bAsyncNameResolution is FALSE, the function will block until the name
|
||
|
can be determined. If the argument is TRUE, the name resolution is
|
||
|
performed asynchronously. The client code is notified through an
|
||
|
OLE notification sink when the name has been obtained and set in the
|
||
|
user object. See IDiskQuotaEvents for details.
|
||
|
|
||
|
Returns:
|
||
|
NO_ERROR - Success.
|
||
|
E_POINTER - ppOut arg is NULL.
|
||
|
E_OUTOFMEMORY - Insufficient memory to create enumerator object.
|
||
|
|
||
|
|
||
|
-------------------------------------------------------------------------------
|
||
|
DiskQuotaControl::CreateUserBatch
|
||
|
-------------------------------------------------------------------------------
|
||
|
Creates a user batch object for optimizing user quota information updates.
|
||
|
The underlying NTIOAPI system supports batching of user quota information
|
||
|
updates. This method creates a batching object that takes advantage of this
|
||
|
NTIOAPI feature. The client creates a batch object, adds user object pointers
|
||
|
to the batch object, updates the user object quota information and finally
|
||
|
commands the batch object to write the data from the contained user objects
|
||
|
to disk.
|
||
|
|
||
|
Arguments:
|
||
|
PDISKQUOTA_USER_BATCH *ppUserBatch - Address of interface variable to
|
||
|
receive the IDiskQuotaUserBatch interface pointer of the new batch
|
||
|
object.
|
||
|
|
||
|
Returns:
|
||
|
f
|
||
|
NO_ERROR - Success.
|
||
|
E_POINTER - ppOut arg is NULL.
|
||
|
E_OUTOFMEMORY - Insufficient memory to create batch object.
|
||
|
|
||
|
-------------------------------------------------------------------------------
|
||
|
Macro: DiskQuotaControl_Initialize
|
||
|
-------------------------------------------------------------------------------
|
||
|
This macro calls DiskQuotaControl::InitializeW when the caller is compiled
|
||
|
UNICODE and DiskQuotaControl::InitializeA when the caller is compiled ANSI.
|
||
|
|
||
|
Arguments:
|
||
|
pController - Address of quota controller object being initialized.
|
||
|
|
||
|
pszFSObjectName - Name of the NTFS volume to open. InitializeA expects
|
||
|
an ANSI string. IninitializeW expects a UNICODE string. Use the
|
||
|
DiskQuotaControl_Initialize macro to automatically compile the
|
||
|
proper function.
|
||
|
|
||
|
Returns:
|
||
|
See DiskQuotaControl::Initialize
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
-------------------------------------------------------------------------------
|
||
|
DiskQuotaControl::Initialize (A and W)
|
||
|
-------------------------------------------------------------------------------
|
||
|
Initializes a quota control object (IDiskQuotaControl) that has been created
|
||
|
via CoCreateInstance. The quota control object is the primary object created
|
||
|
by a client application to view/control the quota attributes of an NTFS volume.
|
||
|
To create a controller object, call CoCreateInstance with the
|
||
|
CLSID_IDiskQuotaControl interface ID. The interface pointer returned has a
|
||
|
reference count of 1. For the object to be usable, the client must call the
|
||
|
Initialize method passing the name of the NTFS volume as a text string.
|
||
|
|
||
|
Arguments:
|
||
|
pszFSObjectName - Name of the NTFS volume to open. InitializeA expects
|
||
|
an ANSI string. IninitializeW expects a UNICODE string. Use the
|
||
|
DiskQuotaControl_Initialize macro to automatically compile the
|
||
|
proper function.
|
||
|
|
||
|
|
||
|
Returns:
|
||
|
NO_ERROR - Success.
|
||
|
S_FALSE - Can't open FS object.
|
||
|
E_POINTER - pszFSObjectName argument was NULL.
|
||
|
E_OUTOFMEMORY - Insufficient memory.
|
||
|
E_UNEXPECTED - Error thunking object name string
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
DiskQuotaControl::Initialize
|
||
|
|
||
|
|
||
|
|
||
|
STDMETHOD(InitializeW)(THIS_ LPCWSTR pszFSObjectNameW) PURE;
|
||
|
STDMETHOD(InitializeA)(THIS_ LPCSTR pszFSObjectNameA) PURE;
|
||
|
STDMETHOD(GetState)(THIS_ LPDWORD lpdwState) PURE;
|
||
|
STDMETHOD(SetQuotaState)(THIS_ DWORD dwState) PURE;
|
||
|
STDMETHOD(SetLoggingState)(THIS_ DWORD dwState) PURE;
|
||
|
STDMETHOD(SetDefaultQuotaThreshold)(THIS_ DWORD, DWORD) PURE;
|
||
|
STDMETHOD(SetDefaultQuotaLimit)(THIS_ DWORD, DWORD) PURE;
|
||
|
STDMETHOD(GetDefaultQuotaThreshold)(THIS_ LPDWORD, LPDWORD) PURE;
|
||
|
STDMETHOD(GetDefaultQuotaLimit)(THIS_ LPDWORD, LPDWORD) PURE;
|
||
|
STDMETHOD(AddUser)(THIS_ PSID, ULONG, PDISKQUOTA_USER *) PURE;
|
||
|
STDMETHOD(DeleteUser)(THIS_ PDISKQUOTA_USER) PURE;
|
||
|
STDMETHOD(FindUser)(THIS_ PSID, ULONG, PDISKQUOTA_USER *, BOOL) PURE;
|
||
|
STDMETHOD(CreateEnumUsers)(THIS_ PSID, DWORD, PENUM_DISKQUOTA_USERS *, BOOL) PURE;
|
||
|
STDMETHOD(CreateUserBatch)(THIS_ PDISKQUOTA_USER_BATCH *) PURE;
|
||
|
STDMETHOD(InvalidateSidNameCache)(THIS) PURE;
|
||
|
STDMETHOD(ShutdownAndRelease)(THIS) PURE;
|