=============================================================================== 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;