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 / property.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1997-07-29  |  5.1 KB  |  317 lines

  1. /*++
  2.  
  3. Copyright (c) 1996 Microsoft Corporation
  4.  
  5. Module Name:
  6.  
  7.     Property.cpp
  8.  
  9. Abstract:
  10.  
  11.  
  12. Author:
  13.  
  14. Environment:
  15.  
  16.     User mode
  17.  
  18. Revision History :
  19.  
  20. --*/
  21. #include "adssmp.h"
  22. #pragma hdrstop
  23.  
  24.  
  25. #define VALIDATE_PTR(pPtr) \
  26.     if (!pPtr) { \
  27.         hr = E_ADS_BAD_PARAMETER;\
  28.     }\
  29.     BAIL_ON_FAILURE(hr);
  30.  
  31.  
  32. HRESULT
  33. put_BSTR_Property(
  34.     IADs * pADsObject,
  35.     BSTR   bstrPropertyName,
  36.     BSTR   pSrcStringProperty
  37.     )
  38. {
  39.     HRESULT hr = S_OK;
  40.     VARIANT varInputData;
  41.  
  42.     hr = PackStringinVariant(
  43.             pSrcStringProperty,
  44.             &varInputData
  45.             );
  46.     BAIL_ON_FAILURE(hr);
  47.  
  48.  
  49.     hr = pADsObject->Put(
  50.             bstrPropertyName,
  51.             varInputData
  52.             );
  53.     BAIL_ON_FAILURE(hr);
  54.  
  55.  
  56. error:
  57.     RRETURN(hr);
  58. }
  59.  
  60. HRESULT
  61. get_BSTR_Property(
  62.     IADs * pADsObject,
  63.     BSTR   bstrPropertyName,
  64.     BSTR *ppDestStringProperty
  65.     )
  66. {
  67.     HRESULT hr = S_OK;
  68.     VARIANT varOutputData;
  69.  
  70.     VariantInit( &varOutputData );
  71.  
  72.     hr = pADsObject->Get(
  73.             bstrPropertyName,
  74.             &varOutputData
  75.             );
  76.     BAIL_ON_FAILURE(hr);
  77.  
  78.     hr = UnpackStringfromVariant(
  79.             varOutputData,
  80.             ppDestStringProperty
  81.             );
  82.     BAIL_ON_FAILURE(hr);
  83.  
  84.  
  85. error:
  86.     RRETURN(hr);
  87. }
  88.  
  89. HRESULT
  90. put_LONG_Property(
  91.     IADs * pADsObject,
  92.     BSTR   bstrPropertyName,
  93.     LONG   lSrcProperty
  94.     )
  95. {
  96.     HRESULT hr = S_OK;
  97.     VARIANT varInputData;
  98.  
  99.     hr = PackLONGinVariant(
  100.             lSrcProperty,
  101.             &varInputData
  102.             );
  103.     BAIL_ON_FAILURE(hr);
  104.  
  105.  
  106.     hr = pADsObject->Put(
  107.             bstrPropertyName,
  108.             varInputData
  109.             );
  110.     BAIL_ON_FAILURE(hr);
  111.  
  112. error:
  113.     RRETURN(hr);
  114. }
  115.  
  116. HRESULT
  117. get_LONG_Property(
  118.     IADs * pADsObject,
  119.     BSTR  bstrPropertyName,
  120.     PLONG plDestProperty
  121.     )
  122. {
  123.     HRESULT hr = S_OK;
  124.     VARIANT varOutputData;
  125.  
  126.     VariantInit( &varOutputData );
  127.  
  128.     hr = pADsObject->Get(
  129.             bstrPropertyName,
  130.             &varOutputData
  131.             );
  132.     BAIL_ON_FAILURE(hr);
  133.  
  134.     hr = UnpackLONGfromVariant(
  135.             varOutputData,
  136.             plDestProperty
  137.             );
  138.     BAIL_ON_FAILURE(hr);
  139.  
  140.  
  141. error:
  142.     RRETURN(hr);
  143.  
  144. }
  145.  
  146. HRESULT
  147. put_DATE_Property(
  148.     IADs * pADsObject,
  149.     BSTR bstrPropertyName,
  150.     DATE   daSrcProperty
  151.     )
  152. {
  153.     HRESULT hr = S_OK;
  154.     VARIANT varInputData;
  155.  
  156.     hr = PackDATEinVariant(
  157.             daSrcProperty,
  158.             &varInputData
  159.             );
  160.     BAIL_ON_FAILURE(hr);
  161.  
  162.  
  163.     hr = pADsObject->Put(
  164.             bstrPropertyName,
  165.             varInputData
  166.             );
  167.     BAIL_ON_FAILURE(hr);
  168.  
  169. error:
  170.     RRETURN(hr);
  171. }
  172.  
  173. HRESULT
  174. get_DATE_Property(
  175.     IADs * pADsObject,
  176.     BSTR bstrPropertyName,
  177.     PDATE pdaDestProperty
  178.     )
  179. {
  180.     HRESULT hr = S_OK;
  181.     VARIANT varOutputData;
  182.  
  183.     VariantInit( &varOutputData );
  184.  
  185.     hr = pADsObject->Get(
  186.             bstrPropertyName,
  187.             &varOutputData
  188.             );
  189.     BAIL_ON_FAILURE(hr);
  190.  
  191.     hr = UnpackDATEfromVariant(
  192.             varOutputData,
  193.             pdaDestProperty
  194.             );
  195.     BAIL_ON_FAILURE(hr);
  196.  
  197.  
  198. error:
  199.     RRETURN(hr);
  200. }
  201.  
  202. HRESULT
  203. put_VARIANT_BOOL_Property(
  204.     IADs * pADsObject,
  205.     BSTR bstrPropertyName,
  206.     VARIANT_BOOL   fSrcProperty
  207.     )
  208. {
  209.     HRESULT hr = S_OK;
  210.     VARIANT varInputData;
  211.  
  212.     hr = PackVARIANT_BOOLinVariant(
  213.             fSrcProperty,
  214.             &varInputData
  215.             );
  216.     BAIL_ON_FAILURE(hr);
  217.  
  218.  
  219.     hr = pADsObject->Put(
  220.             bstrPropertyName,
  221.             varInputData
  222.             );
  223.     BAIL_ON_FAILURE(hr);
  224.  
  225. error:
  226.     RRETURN(hr);
  227. }
  228.  
  229. HRESULT
  230. get_VARIANT_BOOL_Property(
  231.     IADs * pADsObject,
  232.     BSTR bstrPropertyName,
  233.     PVARIANT_BOOL pfDestProperty
  234.     )
  235. {
  236.     HRESULT hr = S_OK;
  237.     VARIANT varOutputData;
  238.  
  239.     VariantInit( &varOutputData );
  240.  
  241.     hr = pADsObject->Get(
  242.             bstrPropertyName,
  243.             &varOutputData
  244.             );
  245.     BAIL_ON_FAILURE(hr);
  246.  
  247.     hr = UnpackVARIANT_BOOLfromVariant(
  248.             varOutputData,
  249.             pfDestProperty
  250.             );
  251.     BAIL_ON_FAILURE(hr);
  252.  
  253.  
  254. error:
  255.     RRETURN(hr);
  256. }
  257.  
  258. HRESULT
  259. put_VARIANT_Property(
  260.     IADs * pADsObject,
  261.     BSTR   bstrPropertyName,
  262.     VARIANT   vSrcProperty
  263.     )
  264. {
  265.     HRESULT hr = S_OK;
  266.     VARIANT varInputData;
  267.  
  268.     hr = PackVARIANTinVariant(
  269.             vSrcProperty,
  270.             &varInputData
  271.             );
  272.     BAIL_ON_FAILURE(hr);
  273.  
  274.  
  275.     hr = pADsObject->Put(
  276.             bstrPropertyName,
  277.             varInputData
  278.             );
  279.     BAIL_ON_FAILURE(hr);
  280.  
  281. error:
  282.     RRETURN(hr);
  283. }
  284.  
  285. HRESULT
  286. get_VARIANT_Property(
  287.     IADs * pADsObject,
  288.     BSTR bstrPropertyName,
  289.     PVARIANT pvDestProperty
  290.     )
  291. {
  292.     HRESULT hr = S_OK;
  293.     VARIANT varOutputData;
  294.  
  295.     VariantInit( &varOutputData );
  296.  
  297.     hr = pADsObject->Get(
  298.             bstrPropertyName,
  299.             &varOutputData
  300.             );
  301.     BAIL_ON_FAILURE(hr);
  302.  
  303.     hr = UnpackVARIANTfromVariant(
  304.             varOutputData,
  305.             pvDestProperty
  306.             );
  307.     BAIL_ON_FAILURE(hr);
  308.  
  309. error:
  310.     RRETURN(hr);
  311. }
  312.  
  313.  
  314.  
  315.  
  316.  
  317.