Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

202 lines
6.3 KiB

  1. /*++
  2. Copyright (c) 2001 Microsoft Corporation
  3. Module Name:
  4. ads.h
  5. Abstract:
  6. This module defines interface methods for ADSI extension for Terminal Server User Properties.
  7. Author:
  8. Rashmi Patankar (RashmiP) 10-Aug-2001
  9. Revision History:
  10. --*/
  11. #ifndef __TSUSEREX_ADS_H_
  12. #define __TSUSEREX_ADS_H_
  13. #if _MSC_VER > 1000
  14. #pragma once
  15. #endif // _MSC_VER > 1000
  16. #include "resource.h"
  17. #include <string>
  18. #include <map>
  19. using namespace std;
  20. // default comparison operator is <
  21. typedef std::map<wstring, VARIANT_BOOL> SERVER_TO_MODE;
  22. /////////////////////////////////////////////////////////////////////////////
  23. // ADsTSUserEx
  24. class ADsTSUserEx :
  25. // public IDispatchImpl<IADsTSUserEx, &IID_IADsTSUserEx, &LIBID_ADSTSUSERLib>,
  26. public IADsTSUserEx,
  27. public ISupportErrorInfo,
  28. public CComObjectRoot,
  29. public CComCoClass<ADsTSUserEx,&CLSID_ADsTSUserEx>,
  30. public IADsExtension
  31. {
  32. protected:
  33. ITypeInfo *m_pTypeInfo;
  34. VARIANT_BOOL m_vbIsLDAP; // false = is WinNT
  35. VARIANT_BOOL m_vbUpLevelAllowed;
  36. CComPtr<IDispatch> m_pOuterDispatch;
  37. CComPtr<IADs> m_pADs;
  38. static CComPtr<IADsPathname> m_StaticpPath;
  39. static CComTypeInfoHolder m_StaticHolder;
  40. static SERVER_TO_MODE m_StaticServerMap;
  41. static CComAutoCriticalSection m_StaticCritSec;
  42. // Methods not exposed
  43. HRESULT GetInfoWinNTComputer(/*in*/ LPWSTR ServerName);
  44. HRESULT GetInfoWinNT(/*[in]*/ IADsPathname* pPath);
  45. HRESULT GetInfoLDAP( /*[in]*/ IADsPathname* pPath);
  46. HRESULT InternalGetLong (/*[in]*/ BSTR bstrProperty,
  47. /*[out]*/ LONG* lpVal);
  48. HRESULT InternalSetLong(/*[in]*/ LONG lProperty,
  49. /*[out]*/ LONG lNewVal);
  50. HRESULT InternalGetString(/*[in]*/ BSTR bstrProperty,
  51. /*[out]*/ BSTR* pbstrVal);
  52. HRESULT InternalSetString(/*[in]*/ WCHAR *wszProperty,
  53. /*[in]*/ BSTR bstrNewVal);
  54. HRESULT InternalSetValue(/*[in]*/ WCHAR *wszProperty,
  55. /*[in]*/ LONG lNewVal);
  56. public:
  57. ADsTSUserEx();
  58. ~ADsTSUserEx();
  59. // ADsTSUserEx() {}
  60. BEGIN_COM_MAP(ADsTSUserEx)
  61. COM_INTERFACE_ENTRY(IDispatch)
  62. COM_INTERFACE_ENTRY(IADsTSUserEx)
  63. COM_INTERFACE_ENTRY(ISupportErrorInfo)
  64. COM_INTERFACE_ENTRY(IADsExtension)
  65. END_COM_MAP()
  66. DECLARE_REGISTRY_RESOURCEID(IDR_ADS)
  67. STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
  68. // IADsTSUserEx
  69. public:
  70. STDMETHOD(put_TerminalServicesProfilePath)(/*[in]*/ BSTR pNewVal);
  71. STDMETHOD(get_TerminalServicesProfilePath)(/*[out, retval]*/ BSTR* pVal);
  72. STDMETHOD(put_TerminalServicesHomeDirectory)(/*[in]*/ BSTR pNewVal);
  73. STDMETHOD(get_TerminalServicesHomeDirectory)(/*[out, retval]*/ BSTR* pVal);
  74. STDMETHOD(put_TerminalServicesHomeDrive)(/*[in]*/ BSTR pNewVal);
  75. STDMETHOD(get_TerminalServicesHomeDrive)(/*[out, retval]*/ BSTR* pVal);
  76. STDMETHOD(put_AllowLogon)(/*[in]*/ LONG NewVal);
  77. STDMETHOD(get_AllowLogon)(/*[out, retval]*/ LONG* pVal);
  78. STDMETHOD(put_EnableRemoteControl)(/*[in]*/ LONG NewVal);
  79. STDMETHOD(get_EnableRemoteControl)(/*[out, retval]*/ LONG* pVal);
  80. STDMETHOD(put_MaxDisconnectionTime)(/*[in]*/ LONG NewVal);
  81. STDMETHOD(get_MaxDisconnectionTime)(/*[out, retval]*/ LONG* pVal);
  82. STDMETHOD(put_MaxConnectionTime)(/*[in]*/ LONG NewVal);
  83. STDMETHOD(get_MaxConnectionTime)(/*[out, retval]*/ LONG* pVal);
  84. STDMETHOD(put_MaxIdleTime)(/*[in]*/ LONG NewVal);
  85. STDMETHOD(get_MaxIdleTime)(/*[out, retval]*/ LONG* pVal);
  86. STDMETHOD(put_ReconnectionAction)(/*[in]*/ LONG NewVal);
  87. STDMETHOD(get_ReconnectionAction)(/*[out, retval]*/ LONG* pVal);
  88. STDMETHOD(put_BrokenConnectionAction)(/*[in]*/ LONG NewVal);
  89. STDMETHOD(get_BrokenConnectionAction)(/*[out, retval]*/ LONG* pVal);
  90. STDMETHOD(put_ConnectClientDrivesAtLogon)(/*[in]*/ LONG NewVal);
  91. STDMETHOD(get_ConnectClientDrivesAtLogon)(/*[out, retval]*/ LONG* pVal);
  92. STDMETHOD(put_ConnectClientPrintersAtLogon)(/*[in]*/ LONG NewVal);
  93. STDMETHOD(get_ConnectClientPrintersAtLogon)(/*[out, retval]*/ LONG* pVal);
  94. STDMETHOD(put_DefaultToMainPrinter)(/*[in]*/ LONG NewVal);
  95. STDMETHOD(get_DefaultToMainPrinter)(/*[out, retval]*/ LONG* pVal);
  96. STDMETHOD(put_TerminalServicesWorkDirectory)(/*[in]*/ BSTR pNewVal);
  97. STDMETHOD(get_TerminalServicesWorkDirectory)(/*[out, retval]*/ BSTR* pVal);
  98. STDMETHOD(put_TerminalServicesInitialProgram)(/*[in]*/ BSTR pNewVal);
  99. STDMETHOD(get_TerminalServicesInitialProgram)(/*[out, retval]*/ BSTR* pVal);
  100. // IDispatch
  101. STDMETHOD(GetTypeInfoCount)(UINT* pctinfo);
  102. STDMETHOD(GetTypeInfo)(UINT itinfo,
  103. LCID lcid,
  104. ITypeInfo** pptinfo
  105. );
  106. STDMETHOD(GetIDsOfNames)(REFIID riid,
  107. LPOLESTR* rgszNames,
  108. UINT cNames,
  109. LCID lcid,
  110. DISPID* rgdispid
  111. );
  112. STDMETHOD(Invoke)(DISPID dispidMember,
  113. REFIID riid,
  114. LCID lcid,
  115. WORD wFlags,
  116. DISPPARAMS* pdispparams,
  117. VARIANT* pvarResult,
  118. EXCEPINFO* pexcepinfo,
  119. UINT* puArgErr
  120. );
  121. STDMETHOD(Operate)(ULONG dwCode,
  122. VARIANT varData1,
  123. VARIANT varData2,
  124. VARIANT varData3
  125. );
  126. STDMETHOD(PrivateGetIDsOfNames)(const struct _GUID &,
  127. USHORT **,
  128. UINT,
  129. ULONG,
  130. LONG *
  131. );
  132. STDMETHOD(PrivateInvoke)(LONG, const struct _GUID &,
  133. ULONG, USHORT,
  134. DISPPARAMS *,
  135. VARIANT *,
  136. EXCEPINFO *,
  137. UINT *
  138. );
  139. };
  140. #endif // __TSUSEREX_ADS_H_