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

  1. /*++
  2.  
  3. Copyright (c) 1996 Microsoft Corporation
  4.  
  5. Module Name:
  6.  
  7.     Pack.cpp
  8.  
  9. Abstract:
  10.  
  11. Author:
  12.  
  13. Environment:
  14.  
  15.     User mode
  16.  
  17. Revision History :
  18.  
  19. --*/
  20. #include "adssmp.h"
  21. #pragma hdrstop
  22.  
  23. HRESULT
  24. PackStringinVariant(
  25.     BSTR bstrString,
  26.     VARIANT * pvarInputData
  27.     )
  28. {
  29.     HRESULT hr = S_OK;
  30.  
  31.     if ( bstrString == NULL )
  32.         RRETURN(E_FAIL);
  33.  
  34.     VariantInit(pvarInputData);
  35.  
  36.     pvarInputData->vt = VT_BSTR;
  37.  
  38.     if (!bstrString) {
  39.         V_BSTR(pvarInputData) = NULL;
  40.         RRETURN(S_OK);
  41.     }
  42.  
  43.     hr = ProvAllocString(bstrString, &(V_BSTR(pvarInputData)));
  44.  
  45.     RRETURN(hr);
  46. }
  47.  
  48.  
  49. HRESULT
  50. UnpackStringfromVariant(
  51.     VARIANT varSrcData,
  52.     BSTR * pbstrDestString
  53.     )
  54. {
  55.     HRESULT hr = S_OK;
  56.  
  57.     if( varSrcData.vt != VT_BSTR){
  58.         RRETURN(E_ADS_CANT_CONVERT_DATATYPE);
  59.     }
  60.  
  61.     if (!V_BSTR(&varSrcData)) {
  62.         *pbstrDestString = NULL;
  63.         RRETURN(S_OK);
  64.     }
  65.  
  66.     hr = ProvAllocString(V_BSTR(&varSrcData), pbstrDestString);
  67.  
  68.     RRETURN(hr);
  69. }
  70.  
  71.  
  72. HRESULT
  73. PackLONGinVariant(
  74.     LONG  lValue,
  75.     VARIANT * pvarInputData
  76.     )
  77. {
  78.     VariantInit(pvarInputData);
  79.  
  80.     pvarInputData->vt = VT_I4;
  81.     V_I4(pvarInputData) = lValue;
  82.  
  83.     RRETURN(S_OK);
  84. }
  85.  
  86. HRESULT
  87. UnpackLONGfromVariant(
  88.     VARIANT varSrcData,
  89.     LONG * plValue
  90.     )
  91. {
  92.     if( varSrcData.vt != VT_I4){
  93.         RRETURN(E_ADS_CANT_CONVERT_DATATYPE);
  94.     }
  95.  
  96.     *plValue = V_I4(&varSrcData);
  97.  
  98.     RRETURN(S_OK);
  99. }
  100.  
  101.  
  102. HRESULT
  103. PackDATEinVariant(
  104.     DATE  daValue,
  105.     VARIANT * pvarInputData
  106.     )
  107. {
  108.     VariantInit(pvarInputData);
  109.  
  110.     pvarInputData->vt = VT_DATE;
  111.     V_DATE(pvarInputData) = daValue;
  112.  
  113.     RRETURN(S_OK);
  114. }
  115.  
  116. HRESULT
  117. UnpackDATEfromVariant(
  118.     VARIANT varSrcData,
  119.     DATE * pdaValue
  120.     )
  121. {
  122.     if( varSrcData.vt != VT_DATE){
  123.         RRETURN(E_ADS_CANT_CONVERT_DATATYPE);
  124.     }
  125.  
  126.     *pdaValue = V_DATE(&varSrcData);
  127.  
  128.     RRETURN(S_OK);
  129. }
  130.  
  131.  
  132. HRESULT
  133. PackVARIANT_BOOLinVariant(
  134.     VARIANT_BOOL  fValue,
  135.     VARIANT * pvarInputData
  136.     )
  137. {
  138.     VariantInit(pvarInputData);
  139.  
  140.     pvarInputData->vt = VT_BOOL;
  141.     V_BOOL(pvarInputData) = fValue;
  142.  
  143.     RRETURN(S_OK);
  144. }
  145.  
  146. HRESULT
  147. UnpackVARIANT_BOOLfromVariant(
  148.     VARIANT varSrcData,
  149.     VARIANT_BOOL * pfValue
  150.     )
  151. {
  152.     if( varSrcData.vt != VT_BOOL){
  153.         RRETURN(E_ADS_CANT_CONVERT_DATATYPE);
  154.     }
  155.  
  156.     *pfValue = V_BOOL(&varSrcData);
  157.  
  158.     RRETURN(S_OK);
  159. }
  160.  
  161.  
  162. HRESULT
  163. PackVARIANTinVariant(
  164.     VARIANT vaValue,
  165.     VARIANT * pvarInputData
  166.     )
  167. {
  168.     VariantInit(pvarInputData);
  169.  
  170.     pvarInputData->vt = VT_VARIANT;
  171.     RRETURN( VariantCopy( pvarInputData, &vaValue ));
  172. }
  173.  
  174. HRESULT
  175. UnpackVARIANTfromVariant(
  176.     VARIANT varSrcData,
  177.     VARIANT * pvaValue
  178.     )
  179. {
  180.     VariantInit( pvaValue );
  181.  
  182.     RRETURN( VariantCopy( pvaValue, &varSrcData ));
  183. }
  184.  
  185.  
  186.  
  187.  
  188.  
  189.