Windows-Server-2003/enduser/netmeeting/ulsldap/culs.h

230 lines
8.1 KiB
C++

//****************************************************************************
//
// 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_