/*++ Copyright (c) 2001 Microsoft Corporation Module Name: ads.h Abstract: This module defines interface methods for ADSI extension for Terminal Server User Properties. Author: Rashmi Patankar (RashmiP) 10-Aug-2001 Revision History: --*/ #ifndef __TSUSEREX_ADS_H_ #define __TSUSEREX_ADS_H_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "resource.h" #include #include using namespace std; // default comparison operator is < typedef std::map SERVER_TO_MODE; ///////////////////////////////////////////////////////////////////////////// // ADsTSUserEx class ADsTSUserEx : // public IDispatchImpl, public IADsTSUserEx, public ISupportErrorInfo, public CComObjectRoot, public CComCoClass, public IADsExtension { protected: ITypeInfo *m_pTypeInfo; VARIANT_BOOL m_vbIsLDAP; // false = is WinNT VARIANT_BOOL m_vbUpLevelAllowed; CComPtr m_pOuterDispatch; CComPtr m_pADs; static CComPtr m_StaticpPath; static CComTypeInfoHolder m_StaticHolder; static SERVER_TO_MODE m_StaticServerMap; static CComAutoCriticalSection m_StaticCritSec; // Methods not exposed HRESULT GetInfoWinNTComputer(/*in*/ LPWSTR ServerName); HRESULT GetInfoWinNT(/*[in]*/ IADsPathname* pPath); HRESULT GetInfoLDAP( /*[in]*/ IADsPathname* pPath); HRESULT InternalGetLong (/*[in]*/ BSTR bstrProperty, /*[out]*/ LONG* lpVal); HRESULT InternalSetLong(/*[in]*/ LONG lProperty, /*[out]*/ LONG lNewVal); HRESULT InternalGetString(/*[in]*/ BSTR bstrProperty, /*[out]*/ BSTR* pbstrVal); HRESULT InternalSetString(/*[in]*/ WCHAR *wszProperty, /*[in]*/ BSTR bstrNewVal); HRESULT InternalSetValue(/*[in]*/ WCHAR *wszProperty, /*[in]*/ LONG lNewVal); public: ADsTSUserEx(); ~ADsTSUserEx(); // ADsTSUserEx() {} BEGIN_COM_MAP(ADsTSUserEx) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(IADsTSUserEx) COM_INTERFACE_ENTRY(ISupportErrorInfo) COM_INTERFACE_ENTRY(IADsExtension) END_COM_MAP() DECLARE_REGISTRY_RESOURCEID(IDR_ADS) STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid); // IADsTSUserEx public: STDMETHOD(put_TerminalServicesProfilePath)(/*[in]*/ BSTR pNewVal); STDMETHOD(get_TerminalServicesProfilePath)(/*[out, retval]*/ BSTR* pVal); STDMETHOD(put_TerminalServicesHomeDirectory)(/*[in]*/ BSTR pNewVal); STDMETHOD(get_TerminalServicesHomeDirectory)(/*[out, retval]*/ BSTR* pVal); STDMETHOD(put_TerminalServicesHomeDrive)(/*[in]*/ BSTR pNewVal); STDMETHOD(get_TerminalServicesHomeDrive)(/*[out, retval]*/ BSTR* pVal); STDMETHOD(put_AllowLogon)(/*[in]*/ LONG NewVal); STDMETHOD(get_AllowLogon)(/*[out, retval]*/ LONG* pVal); STDMETHOD(put_EnableRemoteControl)(/*[in]*/ LONG NewVal); STDMETHOD(get_EnableRemoteControl)(/*[out, retval]*/ LONG* pVal); STDMETHOD(put_MaxDisconnectionTime)(/*[in]*/ LONG NewVal); STDMETHOD(get_MaxDisconnectionTime)(/*[out, retval]*/ LONG* pVal); STDMETHOD(put_MaxConnectionTime)(/*[in]*/ LONG NewVal); STDMETHOD(get_MaxConnectionTime)(/*[out, retval]*/ LONG* pVal); STDMETHOD(put_MaxIdleTime)(/*[in]*/ LONG NewVal); STDMETHOD(get_MaxIdleTime)(/*[out, retval]*/ LONG* pVal); STDMETHOD(put_ReconnectionAction)(/*[in]*/ LONG NewVal); STDMETHOD(get_ReconnectionAction)(/*[out, retval]*/ LONG* pVal); STDMETHOD(put_BrokenConnectionAction)(/*[in]*/ LONG NewVal); STDMETHOD(get_BrokenConnectionAction)(/*[out, retval]*/ LONG* pVal); STDMETHOD(put_ConnectClientDrivesAtLogon)(/*[in]*/ LONG NewVal); STDMETHOD(get_ConnectClientDrivesAtLogon)(/*[out, retval]*/ LONG* pVal); STDMETHOD(put_ConnectClientPrintersAtLogon)(/*[in]*/ LONG NewVal); STDMETHOD(get_ConnectClientPrintersAtLogon)(/*[out, retval]*/ LONG* pVal); STDMETHOD(put_DefaultToMainPrinter)(/*[in]*/ LONG NewVal); STDMETHOD(get_DefaultToMainPrinter)(/*[out, retval]*/ LONG* pVal); STDMETHOD(put_TerminalServicesWorkDirectory)(/*[in]*/ BSTR pNewVal); STDMETHOD(get_TerminalServicesWorkDirectory)(/*[out, retval]*/ BSTR* pVal); STDMETHOD(put_TerminalServicesInitialProgram)(/*[in]*/ BSTR pNewVal); STDMETHOD(get_TerminalServicesInitialProgram)(/*[out, retval]*/ BSTR* pVal); // IDispatch STDMETHOD(GetTypeInfoCount)(UINT* pctinfo); STDMETHOD(GetTypeInfo)(UINT itinfo, LCID lcid, ITypeInfo** pptinfo ); STDMETHOD(GetIDsOfNames)(REFIID riid, LPOLESTR* rgszNames, UINT cNames, LCID lcid, DISPID* rgdispid ); STDMETHOD(Invoke)(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pdispparams, VARIANT* pvarResult, EXCEPINFO* pexcepinfo, UINT* puArgErr ); STDMETHOD(Operate)(ULONG dwCode, VARIANT varData1, VARIANT varData2, VARIANT varData3 ); STDMETHOD(PrivateGetIDsOfNames)(const struct _GUID &, USHORT **, UINT, ULONG, LONG * ); STDMETHOD(PrivateInvoke)(LONG, const struct _GUID &, ULONG, USHORT, DISPPARAMS *, VARIANT *, EXCEPINFO *, UINT * ); }; #endif // __TSUSEREX_ADS_H_