/* ---------------------------------------------------------------------- Module: ULS.DLL (Service Provider) File: spanyatt.h Content: This file contains the arbitrary-attribute object definition. History: 10/15/96 Chu, Lon-Chan [lonchanc] Created. Copyright (c) Microsoft Corporation 1996-1997 ---------------------------------------------------------------------- */ #ifndef _ULS_SP_ANYATTR_H_ #define _ULS_SP_ANYATTR_H_ #include // this structure is used to remember which arbitrary attributes // have been created at the server side. // in isbu server implementation, all the applications' and // protocols' arbitrary attributes are under RTPerson; therefore, // it is important to clean up arbitrary attributes propertly. typedef struct tagAnyAttr { struct tagAnyAttr *prev; struct tagAnyAttr *next; LONG mod_op; // used in temp list only TCHAR *pszAttrName; // followed by attr name } ANY_ATTR; class UlsLdap_CAnyAttrs { friend class UlsLdap_CLocalApp; friend class UlsLdap_CLocalProt; public: UlsLdap_CAnyAttrs ( VOID ); ~UlsLdap_CAnyAttrs ( VOID ); protected: HRESULT SetAnyAttrs ( ULONG *puRespID, ULONG *puMsgID, ULONG uNotifyMsg, ULONG cPrefix, TCHAR *pszPrefix, ULONG cAttrs, TCHAR *pszAttrs, LONG ModOp, SERVER_INFO *pServerInfo, TCHAR *pszDN ); HRESULT RemoveAnyAttrs ( ULONG *puRespID, ULONG *puMsgID, ULONG uNotifyMsg, ULONG cPrefix, TCHAR *pszPrefix, ULONG cAttrs, TCHAR *pszAttrs, SERVER_INFO *pServerInfo, TCHAR *pszDN ); HRESULT RemoveAllAnyAttrs ( ULONG *puMsgID, ULONG cPrefix, TCHAR *pszPrefix, SERVER_INFO *pServerInfo, TCHAR *pszDN ); ULONG GetAnyAttrsCount ( VOID ) { return m_cAttrs; } private: HRESULT RemoveAnyAttrsEx ( ULONG *puRespID, ULONG *puMsgID, ULONG uNotifyMsg, ULONG cPrefix, TCHAR *pszPrefix, ULONG cAttrs, TCHAR *pszAttrs, SERVER_INFO *pServerInfo, TCHAR *pszDN ); HRESULT SetAttrsAux ( ULONG cAttrs, TCHAR *pszAttrs, ULONG cPrefix, TCHAR *pszPrefix, LONG ModOp, LDAPMod ***pppMod ); HRESULT RemoveAttrsAux ( ULONG cAttrs, TCHAR *pszAttrs, ULONG cPrefix, TCHAR *pszPrefix, LDAPMod ***pppMod ); VOID RemoveAttrFromList ( TCHAR *pszAttrName ); VOID FreeAttrList ( ANY_ATTR *AttrList ); ANY_ATTR *LocateAttr ( TCHAR *pszAttrName ); ULONG m_cAttrs; ANY_ATTR *m_AttrList; }; const TCHAR *SkipAnyAttrNamePrefix ( const TCHAR *pszAttrName ); const TCHAR *IsAnyAttrName ( const TCHAR *pszAttrName ); TCHAR *PrefixNameValueArray ( BOOL fPair, ULONG cAttrs, const TCHAR *pszAttrs ); #include #endif // _ULS_SP_ANYATTR_H_