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.

116 lines
2.4 KiB

  1. class CADsExtMgr;
  2. class CADsExtMgr
  3. {
  4. public:
  5. /* IUnknown methods */
  6. STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) ;
  7. //
  8. // The IDispatch methods are the main interface of the Dispatch Manager.
  9. //
  10. STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo);
  11. STDMETHOD(GetTypeInfo)(THIS_ UINT itinfo, LCID lcid, ITypeInfo **pptinfo);
  12. STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, LPWSTR *rgszNames,
  13. UINT cNames, LCID lcid, DISPID *rgdispid);
  14. STDMETHOD(Invoke)(THIS_ DISPID dispidMember, REFIID riid, LCID lcid,
  15. WORD wFlags, DISPPARAMS *pdispparams, VARIANT *pvarResult,
  16. EXCEPINFO *pexcepinfo, UINT *puArgErr);
  17. CADsExtMgr::CADsExtMgr(
  18. IUnknown FAR * pUnkOuter
  19. );
  20. CADsExtMgr::~CADsExtMgr();
  21. static
  22. HRESULT
  23. CADsExtMgr::CreateExtMgr(
  24. IUnknown FAR * pUnkOuter,
  25. CAggregatorDispMgr * pDispMgr,
  26. LPTSTR pszClassNames[],
  27. long lnNumClasses,
  28. CCredentials *pCreds,
  29. CADsExtMgr ** ppExtMgr
  30. );
  31. HRESULT
  32. CADsExtMgr::QueryForAggregateeInterface(
  33. REFIID riid,
  34. LPVOID FAR * ppv
  35. );
  36. HRESULT
  37. CADsExtMgr::LoadExtensions(
  38. CCredentials & Cred
  39. );
  40. HRESULT
  41. CADsExtMgr::FinalInitializeExtensions();
  42. STDMETHOD (GetCLSIDForIID)(
  43. REFIID riid,
  44. long lFlags,
  45. CLSID *pCLSID
  46. );
  47. STDMETHOD (GetObjectByCLSID)(
  48. CLSID clsid,
  49. IUnknown *pUnkOuter,
  50. REFIID riid,
  51. void **ppInterface
  52. );
  53. STDMETHOD (GetCLSIDForNames)(
  54. LPOLESTR * rgszNames,
  55. UINT cNames,
  56. LCID lcid,
  57. DISPID * rgDispId,
  58. long lFlags,
  59. CLSID *pCLSID
  60. );
  61. protected:
  62. HRESULT
  63. CheckAndPrefixExtIDArray(
  64. IN DWORD dwExtensionID,
  65. IN unsigned int cDispids,
  66. IN OUT DISPID * rgDispids
  67. );
  68. HRESULT
  69. CheckAndPrefixExtID(
  70. IN DWORD dwExtensionID,
  71. IN DISPID dispid,
  72. IN OUT DISPID * pDispid
  73. );
  74. HRESULT
  75. LoadExtensionsIfReqd(void);
  76. PCLASS_ENTRY _pClassEntry;
  77. CAggregatorDispMgr * _pDispMgr;
  78. IUnknown FAR * _pUnkOuter;
  79. BOOL _fExtensionsLoaded;
  80. //
  81. // Do not free owning object will free.
  82. //
  83. CCredentials * _pCreds;
  84. };
  85. void
  86. FreeClassEntry(
  87. PCLASS_ENTRY pClassEntry
  88. );