home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / netds / adsi / sampprov / cenumvar.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1997-07-29  |  3.9 KB  |  215 lines

  1. /*++
  2.  
  3. Copyright (c) 1996 Microsoft Corporation
  4.  
  5. Module Name:
  6.  
  7.     CEnumVar.cpp
  8.  
  9. Abstract:
  10.  
  11.     Base Implementation for xxxEnumVariant derived classes
  12.  
  13. Author:
  14.  
  15. Environment:
  16.  
  17.     User mode
  18.  
  19. Revision History :
  20.  
  21. --*/
  22. #include "adssmp.h"
  23. #pragma hdrstop
  24.  
  25. //+---------------------------------------------------------------------------
  26. //
  27. //  Function:   CSampleDSEnumVariant::CSampleDSEnumVariant
  28. //
  29. //  Synopsis:
  30. //
  31. //
  32. //  Arguments:
  33. //
  34. //
  35. //  Returns:
  36. //
  37. //  Modifies:
  38. //
  39. //----------------------------------------------------------------------------
  40. CSampleDSEnumVariant::CSampleDSEnumVariant()
  41. {
  42.     //
  43.     // Set the reference count on the enumerator.
  44.     //
  45.     m_cRef = 1;
  46.  
  47. }
  48.  
  49. //+---------------------------------------------------------------------------
  50. //
  51. //  Function:   CSampleDSEnumVariant::~CSampleDSEnumVariant
  52. //
  53. //  Synopsis:
  54. //
  55. //
  56. //  Arguments:
  57. //
  58. //  Returns:
  59. //
  60. //  Modifies:
  61. //
  62. //----------------------------------------------------------------------------
  63. CSampleDSEnumVariant::~CSampleDSEnumVariant()
  64. {
  65.     //
  66.     // Bump down the reference count on the Collection object
  67.     //
  68. }
  69.  
  70. //+---------------------------------------------------------------------------
  71. //
  72. //  Function:   CSampleDSEnumVariant::QueryInterface
  73. //
  74. //  Synopsis:
  75. //
  76. //  Arguments:  [iid]
  77. //              [ppv]
  78. //
  79. //  Returns:    HRESULT
  80. //
  81. //  Modifies:
  82. //
  83. //----------------------------------------------------------------------------
  84. STDMETHODIMP
  85. CSampleDSEnumVariant::QueryInterface(REFIID iid, void FAR* FAR* ppv)
  86. {
  87.     *ppv = NULL;
  88.  
  89.     if (iid == IID_IUnknown || iid == IID_IEnumVARIANT) {
  90.  
  91.         *ppv = this;
  92.  
  93.     }
  94.     else {
  95.  
  96.         return ResultFromScode(E_NOINTERFACE);
  97.     }
  98.  
  99.     AddRef();
  100.     return NOERROR;
  101. }
  102.  
  103.  
  104. //+---------------------------------------------------------------------------
  105. //
  106. //  Function:   CSampleDSEnumVariant::AddRef
  107. //
  108. //  Synopsis:
  109. //
  110. //  Arguments:
  111. //
  112. //  Returns:    HRESULT
  113. //
  114. //  Modifies:
  115. //
  116. //----------------------------------------------------------------------------
  117. STDMETHODIMP_(ULONG)
  118. CSampleDSEnumVariant::AddRef(void)
  119. {
  120.  
  121.     return ++m_cRef;
  122. }
  123.  
  124.  
  125. //+---------------------------------------------------------------------------
  126. //
  127. //  Function:   CSampleDSEnumVariant::Release
  128. //
  129. //  Synopsis:
  130. //
  131. //
  132. //  Arguments:  [void]
  133. //
  134. //  Returns:
  135. //
  136. //  Modifies:
  137. //
  138. //----------------------------------------------------------------------------
  139. STDMETHODIMP_(ULONG)
  140. CSampleDSEnumVariant::Release(void)
  141. {
  142.  
  143.  
  144.     if(--m_cRef == 0){
  145.  
  146.         delete this;
  147.         return 0;
  148.     }
  149.  
  150.     return m_cRef;
  151. }
  152.  
  153.  
  154. //+---------------------------------------------------------------------------
  155. //
  156. //  Function:   CSampleDSEnumVariant::Skip
  157. //
  158. //  Synopsis:
  159. //
  160. //  Arguments:  [cElements]
  161. //
  162. //  Returns:    HRESULT
  163. //
  164. //  Modifies:
  165. //
  166. //----------------------------------------------------------------------------
  167. STDMETHODIMP
  168. CSampleDSEnumVariant::Skip(ULONG cElements)
  169. {
  170.  
  171.     RRETURN(ResultFromScode(E_FAIL));
  172.  
  173. }
  174.  
  175. //+---------------------------------------------------------------------------
  176. //
  177. //  Function:   CSampleDSEnumVariant::Reset
  178. //
  179. //  Synopsis:
  180. //
  181. //  Arguments:  []
  182. //
  183. //  Returns:    HRESULT
  184. //
  185. //  Modifies:
  186. //
  187. //----------------------------------------------------------------------------
  188. STDMETHODIMP
  189. CSampleDSEnumVariant::Reset()
  190. {
  191.  
  192.     RRETURN(ResultFromScode(S_OK));
  193. }
  194.  
  195.  
  196. //+---------------------------------------------------------------------------
  197. //
  198. //  Function:   CSampleDSEnumVariant::Clone
  199. //
  200. //  Synopsis:
  201. //
  202. //  Arguments:  [pCollection]
  203. //              [ppEnumVariant]
  204. //
  205. //  Returns:    HRESULT
  206. //
  207. //  Modifies:
  208. //
  209. //----------------------------------------------------------------------------
  210. STDMETHODIMP
  211. CSampleDSEnumVariant::Clone(IEnumVARIANT FAR* FAR* ppenum)
  212. {
  213.     RRETURN(ResultFromScode(E_FAIL));
  214. }
  215.