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.

206 lines
4.3 KiB

  1. extern "C" {
  2. #include <shimdb.h>
  3. }
  4. #ifndef __BLOCKEDDRIVERS_H_
  5. #define __BLOCKEDDRIVERS_H_
  6. #include "resource.h"
  7. /////////////////////////////////////////////////////////////////////////////
  8. // CBlockedDrivers
  9. class ATL_NO_VTABLE CBlockedDrivers :
  10. public CComObjectRootEx<CComSingleThreadModel>,
  11. public CComCoClass<CBlockedDrivers, &CLSID_BlockedDrivers>,
  12. public IDispatchImpl<IBlockedDrivers, &IID_IBlockedDrivers, &LIBID_BLOCKDRIVERLib>
  13. {
  14. protected:
  15. LPGUID m_guidIDs;
  16. public:
  17. CBlockedDrivers()
  18. {
  19. m_guidIDs = NULL;
  20. }
  21. ~CBlockedDrivers()
  22. {
  23. if (m_guidIDs) {
  24. delete m_guidIDs;
  25. }
  26. }
  27. DECLARE_REGISTRY_RESOURCEID(IDR_BLKDRV)
  28. DECLARE_NOT_AGGREGATABLE(CBlockedDrivers)
  29. DECLARE_PROTECT_FINAL_CONSTRUCT()
  30. BEGIN_COM_MAP(CBlockedDrivers)
  31. COM_INTERFACE_ENTRY(IBlockedDrivers)
  32. COM_INTERFACE_ENTRY(IDispatch)
  33. END_COM_MAP()
  34. // IBlockedDrivers
  35. public:
  36. STDMETHOD(BlockedDrivers)(/*[out,retval]*/ LPDISPATCH * pCollection);
  37. };
  38. #endif //__BLOCKEDDRIVERS_H_
  39. #ifndef __DRIVER_H_
  40. #define __DRIVER_H_
  41. /////////////////////////////////////////////////////////////////////////////
  42. // CDriver
  43. class ATL_NO_VTABLE CDriver :
  44. public CComObjectRootEx<CComSingleThreadModel>,
  45. public IDispatchImpl<IDriver, &IID_IDriver, &LIBID_BLOCKDRIVERLib>
  46. {
  47. protected:
  48. HAPPHELPINFOCONTEXT m_hAppHelpInfoContext;
  49. BSTR m_Name;
  50. BSTR m_Description;
  51. BSTR m_Manufacturer;
  52. BSTR m_HelpFile;
  53. public:
  54. CDriver()
  55. {
  56. m_hAppHelpInfoContext = NULL;
  57. m_Name = NULL;
  58. m_Description = NULL;
  59. m_Manufacturer = NULL;
  60. m_HelpFile = NULL;
  61. }
  62. ~CDriver();
  63. DECLARE_NOT_AGGREGATABLE(CDriver)
  64. DECLARE_PROTECT_FINAL_CONSTRUCT()
  65. BEGIN_COM_MAP(CDriver)
  66. COM_INTERFACE_ENTRY(IDriver)
  67. COM_INTERFACE_ENTRY(IDispatch)
  68. END_COM_MAP()
  69. // IDriver
  70. public:
  71. BOOL Init(GUID *pguidDB, GUID *pguidID);
  72. BSTR GetValueFromDatabase(APPHELPINFORMATIONCLASS InfoClass);
  73. STDMETHOD(get_Name)(/*[out, retval]*/ BSTR *pVal);
  74. STDMETHOD(get_Description)(/*[out, retval]*/ BSTR *pVal);
  75. STDMETHOD(get_Manufacturer)(/*[out, retval]*/ BSTR *pVal);
  76. STDMETHOD(get_HelpFile)(/*[out, retval]*/ BSTR *pVal);
  77. };
  78. #endif //__DRIVER_H_
  79. #ifndef __DRIVERS_H_
  80. #define __DRIVERS_H_
  81. /////////////////////////////////////////////////////////////////////////////
  82. // CDrivers
  83. class CDriver;
  84. class ATL_NO_VTABLE CDrivers :
  85. public CComObjectRootEx<CComSingleThreadModel>,
  86. public IDispatchImpl<IDrivers, &IID_IDrivers, &LIBID_BLOCKDRIVERLib>
  87. {
  88. protected:
  89. CDriver ** pDrivers;
  90. long Count;
  91. public:
  92. BOOL SetDriver(long index,CDriver *pDriver);
  93. BOOL InitDriverList(long NewCount);
  94. CDrivers()
  95. {
  96. pDrivers = NULL;
  97. Count = 0;
  98. }
  99. ~CDrivers();
  100. DECLARE_NOT_AGGREGATABLE(CDrivers)
  101. DECLARE_PROTECT_FINAL_CONSTRUCT()
  102. BEGIN_COM_MAP(CDrivers)
  103. COM_INTERFACE_ENTRY(IDrivers)
  104. COM_INTERFACE_ENTRY(IDispatch)
  105. END_COM_MAP()
  106. // IDrivers
  107. public:
  108. STDMETHOD(get__NewEnum)(/*[out, retval]*/ IUnknown** ppUnk);
  109. STDMETHOD(Item)(/*[in]*/ long Index,/*[out, retval]*/ LPDISPATCH * ppVal);
  110. STDMETHOD(get_Count)(/*[out, retval]*/ long *pVal);
  111. };
  112. #endif //__DRIVERS_H_
  113. #ifndef __DRIVERSENUM_H_
  114. #define __DRIVERSENUM_H_
  115. /////////////////////////////////////////////////////////////////////////////
  116. // CDriversEnum
  117. class CDriver;
  118. class ATL_NO_VTABLE CDriversEnum :
  119. public IDriversEnum,
  120. public CComObjectRootEx<CComSingleThreadModel>
  121. {
  122. protected:
  123. CDriver ** pDrivers;
  124. long Count;
  125. long Position;
  126. public:
  127. BOOL InternalCopyDrivers(CDriver **pArray,long Count);
  128. CDriversEnum()
  129. {
  130. pDrivers = NULL;
  131. Count = 0;
  132. Position = 0;
  133. }
  134. ~CDriversEnum();
  135. DECLARE_NOT_AGGREGATABLE(CDriversEnum)
  136. DECLARE_PROTECT_FINAL_CONSTRUCT()
  137. BEGIN_COM_MAP(CDriversEnum)
  138. COM_INTERFACE_ENTRY(IDriversEnum)
  139. COM_INTERFACE_ENTRY(IEnumVARIANT)
  140. END_COM_MAP()
  141. // IEnumVARIANT
  142. public:
  143. STDMETHOD(Next)(
  144. /*[in]*/ ULONG celt,
  145. /*[out, size_is(celt), length_is(*pCeltFetched)]*/ VARIANT * rgVar,
  146. /*[out]*/ ULONG * pCeltFetched
  147. );
  148. STDMETHOD(Skip)(
  149. /*[in]*/ ULONG celt
  150. );
  151. STDMETHOD(Reset)(
  152. );
  153. STDMETHOD(Clone)(
  154. /*[out]*/ IEnumVARIANT ** ppEnum
  155. );
  156. };
  157. #endif //__DRIVERSENUM_H_