//**************************************************************************** // // Module: ULS.DLL // File: culs.h // Content: This file contains the ULS object definition. // History: // Wed 17-Apr-1996 11:18:47 -by- Viroon Touranachun [viroont] // // Copyright (c) Microsoft Corporation 1996-1997 // //**************************************************************************** #ifndef _CILS_H_ #define _CILS_H_ #include "connpt.h" #include "spserver.h" class CIlsServer; //**************************************************************************** // CIls definition //**************************************************************************** // class CIlsMain : public IIlsMain, public IConnectionPointContainer { private: LONG m_cRef; BOOL fInit; HWND hwndCallback; CConnectionPoint *pConnPt; BOOL IsInitialized (void) {return fInit;} STDMETHODIMP NotifySink (void *pv, CONN_NOTIFYPROC pfn); HRESULT StringToFilter (TCHAR *pszFilter ,CFilter **ppFilter); HRESULT EnumUsersEx ( BOOL fNameOnly, CIlsServer *pServer, IIlsFilter *pFilter, CAttributes *pAttrib, ULONG *puReqID ); HRESULT EnumMeetingPlacesEx ( BOOL fNameOnly, CIlsServer *pServer, IIlsFilter *pFilter, CAttributes *pAttrib, ULONG *puReqID); public: // Constructor and destructor CIlsMain (void); ~CIlsMain (void); STDMETHODIMP Init (void); // Internal methods HWND GetNotifyWindow(void) {return hwndCallback;} void LocalAsyncRespond (ULONG msg, ULONG uReqID, LPARAM lParam) {PostMessage(hwndCallback, msg, uReqID, lParam); return;} // Asynchronous response handler // STDMETHODIMP GetUserResult (ULONG uReqID, PLDAP_CLIENTINFO_RES puir, CIlsServer *pIlsServer); STDMETHODIMP EnumUserNamesResult (ULONG uReqID, PLDAP_ENUM ple); STDMETHODIMP EnumUsersResult (ULONG uReqID, PLDAP_ENUM ple, CIlsServer *pIlsServer); #ifdef ENABLE_MEETING_PLACE HRESULT GetMeetingPlaceResult (ULONG uReqID, PLDAP_MEETINFO_RES pmir, CIlsServer *pIlsServer); HRESULT EnumMeetingPlacesResult(ULONG ulReqID, PLDAP_ENUM ple, CIlsServer *pIlsServer); HRESULT EnumMeetingPlaceNamesResult( ULONG ulReqID, PLDAP_ENUM ple); #endif // ENABLE_MEETING_PLACE // IUnknown STDMETHODIMP QueryInterface (REFIID iid, void **ppv); STDMETHODIMP_(ULONG) AddRef (void); STDMETHODIMP_(ULONG) Release (void); // IIls STDMETHODIMP Initialize (VOID); STDMETHODIMP CreateServer ( BSTR bstrServerName, IIlsServer **ppServer ); STDMETHODIMP CreateUser( BSTR bstrUserID, BSTR bstrAppName, IIlsUser **ppUser); STDMETHODIMP CreateAttributes ( ILS_ATTR_TYPE AttrType, IIlsAttributes **ppAttributes ); STDMETHODIMP EnumUserNames ( IIlsServer *pServer, IIlsFilter *pFilter, IEnumIlsNames **ppEnumUserNames, ULONG *puReqID); STDMETHODIMP GetUser ( IIlsServer *pServer, BSTR bstrUserName, BSTR bstrAppName, BSTR bstrProtName, IIlsAttributes *pAttrib, IIlsUser **ppUser, ULONG *puReqID); STDMETHODIMP EnumUsers ( IIlsServer *pServer, IIlsFilter *pFilter, IIlsAttributes *pAttrib, IEnumIlsUsers **ppEnumUser, ULONG *puReqID); #ifdef ENABLE_MEETING_PLACE STDMETHODIMP CreateMeetingPlace( BSTR bstrMeetingPlaceID, LONG lMeetingPlaceType, // set to default LONG lAttendeeType, // set to default IIlsMeetingPlace **ppMeetingPlace ); // Lightweight enumerator of MeetingPlaces for a given server // This returns only the names. If a caller wants more info than // the names he can get the name from here, and call the // heavyweight enumerator (see below) with the filter specifying // the name. STDMETHODIMP EnumMeetingPlaceNames( IIlsServer *pServer, IIlsFilter *pFilter, IEnumIlsNames **ppEnumMeetingPlaceNames, ULONG *pulID ); // Slightly heavier enumerator. Returns the MeetingPlaces and // associated default attributes STDMETHODIMP EnumMeetingPlaces( IIlsServer *pServer, IIlsFilter *pFilter, IIlsAttributes *pAttributes, IEnumIlsMeetingPlaces **ppEnumMeetingPlace, ULONG *pulID ); STDMETHODIMP GetMeetingPlace( IIlsServer *pServer, BSTR bstrMeetingPlaceID, IIlsAttributes *pAttrib, IIlsMeetingPlace **ppMtg, ULONG *pulID); #endif // ENABLE_MEETING_PLACE STDMETHODIMP Abort (ULONG uReqID); STDMETHODIMP Uninitialize (void); // Filter methods STDMETHODIMP CreateFilter ( ILS_FILTER_TYPE FilterType, ILS_FILTER_OP FilterOp, IIlsFilter **ppFilter ); STDMETHODIMP StringToFilter (BSTR bstrFilterString, IIlsFilter **ppFilter); // IConnectionPointContainer STDMETHODIMP EnumConnectionPoints(IEnumConnectionPoints **ppEnum); STDMETHODIMP FindConnectionPoint(REFIID riid, IConnectionPoint **ppcp); }; class CIlsServer : public IIlsServer { private: LONG m_cRefs; LONG m_dwSignature; SERVER_INFO m_ServerInfo; public: CIlsServer ( VOID ); ~CIlsServer ( VOID ); // IUnknown STDMETHODIMP QueryInterface (REFIID iid, void **ppv); STDMETHODIMP_(ULONG) AddRef (void); STDMETHODIMP_(ULONG) Release (void); // IIlsServer STDMETHODIMP SetAuthenticationMethod ( ILS_ENUM_AUTH_METHOD enumAuthMethod ); STDMETHODIMP SetLogonName ( BSTR bstrLogonName ); STDMETHODIMP SetLogonPassword ( BSTR bstrLogonPassword ); STDMETHODIMP SetDomain ( BSTR bstrDomain ); STDMETHODIMP SetCredential ( BSTR bstrCredential ); STDMETHODIMP SetTimeout ( ULONG uTimeoutInSecond ); STDMETHODIMP SetBaseDN ( BSTR bstrBaseDN ); CIlsServer *Clone ( VOID ); HRESULT SetServerName ( TCHAR *pszServerName ); HRESULT SetServerName ( BSTR bstrServerName ); TCHAR *DuplicateServerName ( VOID ); BSTR DuplicateServerNameBSTR ( VOID ); SERVER_INFO *GetServerInfo ( VOID ) { return &m_ServerInfo; } TCHAR *GetServerName ( VOID ) { return m_ServerInfo.pszServerName; } BOOL IsGoodServerName ( VOID ) { return ::MyIsGoodString (m_ServerInfo.pszServerName); } BOOL IsBadServerName ( VOID ) { return ::MyIsBadString (m_ServerInfo.pszServerName); } enum { ILS_SERVER_SIGNATURE = 0x12abcdef }; BOOL IsGoodIlsServer ( VOID ) { return (m_dwSignature == ILS_SERVER_SIGNATURE); } BOOL IsBadIlsServer ( VOID ) { return (m_dwSignature != ILS_SERVER_SIGNATURE); } }; inline BOOL MyIsBadServer ( CIlsServer *p ) { return (p == NULL || p->IsBadIlsServer () || p->IsBadServerName ()); } inline BOOL MyIsBadServer ( IIlsServer *p ) { return MyIsBadServer ((CIlsServer *) p); } //**************************************************************************** // Global Parameters //**************************************************************************** // LRESULT CALLBACK ULSNotifyProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); #endif //_CONFMGR_H_