Source code of Windows XP (NT5)
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.

89 lines
2.7 KiB

  1. // File: iMember.h
  2. #ifndef _IMEMBER_H_
  3. #define _IMEMBER_H_
  4. #include "nmenum.h"
  5. #define INVALID_GCCID ((DWORD) -1)
  6. // A valid T.120 GCC ID must be in this range:
  7. #define FValidGccId(dw) ((dw >= 1) && (dw <= 65535))
  8. // *** DO NOT CHANGE these flags without checking the
  9. // corresponding CONF_UF_* items in msconf.h
  10. // PARTICIPANT flags:
  11. enum
  12. {
  13. PF_INCONFERENCE = 0x0001,
  14. PF_LOCAL_NODE = 0x0002,
  15. PF_T120_MCU = 0x0004,
  16. PF_T120_TOP_PROV = 0x0008,
  17. };
  18. class CNmMember : public INmMember, public RefCount
  19. {
  20. private:
  21. BSTR m_bstrName; // Display Name
  22. DWORD m_dwGCCID; // GCC UserId
  23. BOOL m_fLocal; // True if local user
  24. ULONG m_uCaps; // Current Roster Caps (CAPFLAG_*)
  25. ULONG m_uNmchCaps; // Current Channel Capabilities (NMCH_*)
  26. DWORD m_dwFlags; // PF_*
  27. DWORD m_dwGccIdParent; // GCCID of parent node
  28. public:
  29. CNmMember(PWSTR pwszName, DWORD dwGCCID, DWORD dwFlags, ULONG uCaps);
  30. ~CNmMember();
  31. DWORD GetDwFlags() {return m_dwFlags;}
  32. VOID SetDwFlags(DWORD dw) {m_dwFlags = dw;}
  33. VOID AddPf(DWORD dw) {m_dwFlags |= dw;}
  34. VOID RemovePf(DWORD dw) {m_dwFlags &= ~dw;}
  35. VOID SetNmchCaps(ULONG uNmchCaps) {m_uNmchCaps = uNmchCaps;}
  36. VOID AddNmchCaps(ULONG uNmchCaps) {m_uNmchCaps |= uNmchCaps;}
  37. VOID RemoveNmchCaps(ULONG uNmchCaps) {m_uNmchCaps &= ~uNmchCaps;}
  38. DWORD GetGCCID() {return m_dwGCCID;}
  39. VOID SetGCCID(DWORD dw) {m_dwGCCID = dw;}
  40. DWORD GetGccIdParent() {return m_dwGccIdParent;}
  41. VOID SetGccIdParent(DWORD dw);
  42. ULONG GetCaps() {return m_uCaps;}
  43. VOID SetCaps(ULONG uCaps) {m_uCaps = uCaps;}
  44. BOOL FLocal() {return m_fLocal;}
  45. BOOL FTopProvider() {return (0 != (m_dwFlags & PF_T120_TOP_PROV));}
  46. BOOL FMcu() {return (0 != (m_dwFlags & PF_T120_MCU));}
  47. BSTR GetName() {return m_bstrName;}
  48. // INmMember methods
  49. HRESULT STDMETHODCALLTYPE GetName(BSTR *pbstrName);
  50. HRESULT STDMETHODCALLTYPE GetID(ULONG * puID);
  51. HRESULT STDMETHODCALLTYPE GetConference(INmConference **ppConference);
  52. HRESULT STDMETHODCALLTYPE IsSelf(void);
  53. HRESULT STDMETHODCALLTYPE IsMCU(void);
  54. HRESULT STDMETHODCALLTYPE Eject(void);
  55. // IUnknown methods
  56. ULONG STDMETHODCALLTYPE AddRef(void);
  57. ULONG STDMETHODCALLTYPE Release(void);
  58. HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, PVOID *ppvObj);
  59. };
  60. // Utility Functions
  61. CNmMember * GetLocalMember(void);
  62. CNmMember * PMemberFromGCCID(UINT uNodeID);
  63. CNmMember * PDataMemberFromName(PCWSTR pwszName);
  64. typedef CEnumNmX<IEnumNmMember, &IID_IEnumNmMember, INmMember, CNmMember> CEnumNmMember;
  65. #endif // _IMEMBER_H_