// --aclcls.h------------------------------------------------------------------ // // Interface to library: aclcls. // // Copyright 1986 - 1998 Microsoft Corporation. All rights reserved. // // ---------------------------------------------------------------------------- #if !defined(_ACLCLS_H_) #define _ACLCLS_H_ // $$--IExchangeFolderACLs----------------------------------------------------- // // Definition of interface for folder ACLs class CFolderACLs. // // ---------------------------------------------------------------------------- #undef INTERFACE #define INTERFACE IExchangeFolderACLs // Manifest for cursor position indicating we are at the end of the ACLs table. #define ACL_PAST_END ((LONG) -1) // Special ACL positions. The special ACL's at these position may not be // deleted, and there are also special rules (coming from Exchange) with // regard to how rights will be modified. Also, other ACL's may not be inserted // at these positions. #define ACL_POS_DEFAULT ((LONG) 0) #define ACL_POS_CREATOR ((LONG) 1) DECLARE_INTERFACE_(IExchangeFolderACLs, IUnknown) { #ifndef NO_BASEINTERFACE_FUNCS /* IUnknown methods */ STDMETHOD(QueryInterface)( THIS_ REFIID riid, LPVOID FAR * ppvObj ) PURE; STDMETHOD_(ULONG, AddRef)( THIS ) PURE; STDMETHOD_(ULONG, Release)( THIS ) PURE; #endif /* IExchangeFolderACLs methods */ STDMETHOD(HrDelete)( THIS ) PURE; STDMETHOD(HrGet)( THIS_ LPLONG lplRights, LPSTR FAR * lppszDisplayName, ULONG FAR * lpcbentryid, LPENTRYID FAR * lppentryid ) PURE; STDMETHOD(HrInsert)( THIS_ LONG lRights, LPSTR lpszDisplayName, ULONG cbentryid, LPENTRYID lpentryid, LPLONG lplRights ) PURE; STDMETHOD(HrModify)( THIS_ LONG lRights, LPLONG lplRights ) PURE; STDMETHOD(HrSeek)( THIS_ LONG lPos ) PURE; STDMETHOD(HrTell)( THIS_ LPLONG lplPos ) PURE; }; // $$--LPFOLDERACLS------------------------------------------------------------ // // Pointer to IExchangeFolderACLs interface. // // ---------------------------------------------------------------------------- typedef IExchangeFolderACLs FAR * LPFOLDERACLS; // // Helper functions defined in module ACLCLS. // // $--HrFolderACLsOpen--------------------------------------------------------- // // DESCRIPTION: Get a pointer to an object which implements the // IExchangeFolderACLs interface defined in aclcls.h. // // INPUT: // // [lpSession] -- Pointer to MAPI session. // [lpMDB] -- Pointer to message store containing folder. // [cbentryid] -- Number of bytes in folder's entry identifier. // [lpentryid] -- Folder's entry identifier. // // OUTPUT: // // [lppFolderACLs] -- Pointer to object which supports interface. // NULL if none. // // RETURNS: NOERROR if successful; // E_INVALIDARG if bad input; // E_OUTOFMEMORY if not enough memory; // E_NOINTERFACE if acl table does not exist on folder; // E_FAIL otherwise. // //----------------------------------------------------------------------------- STDAPI HrFolderACLsOpen( // RETURNS: HRESULT IN LPMAPISESSION lpSession, // MAPI session pointer IN LPMDB lpMDB, // MAPI MDB store ptr IN ULONG cbentryid, // # bytes in entry ID IN LPENTRYID lpentryid, // entry ID ptr OUT LPFOLDERACLS FAR * lppFolderACLs // IExchangeFolderACLs ptr ptr ); #endif