home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / Basic / Visual Basic.60 / COMMON / TOOLS / VCM / VCM.MDB / VcmComponentContainer / 08_Cabinet / MYPROVIDERDS.H < prev    next >
Encoding:
C/C++ Source or Header  |  1998-05-18  |  5.1 KB  |  151 lines

  1. // MyProviderDS.h : Declaration of the CMyProviderSource
  2. //
  3. // This is a part of the Active Template Library.
  4. // Copyright (C) 1998 Microsoft Corporation
  5. // All rights reserved.
  6. //
  7. // This source code is only intended as a supplement to the
  8. // ActiveX Template Library Reference and related
  9. // electronic documentation provided with the library.
  10. // See these sources for detailed information regarding the
  11. // ActiveX Template Library product.
  12.  
  13. #ifndef __CMyProviderSource_H_
  14. #define __CMyProviderSource_H_
  15. #include "resource.h"       // main symbols
  16. #include "MyProviderRS.h"
  17. /////////////////////////////////////////////////////////////////////////////
  18. // CDataSource
  19. class ATL_NO_VTABLE CMyProviderSource :
  20.     public CComObjectRootEx<CComMultiThreadModel>,
  21.     public CComCoClass<CMyProviderSource, &CLSID_MyProvider>,
  22.     public IDBCreateSessionImpl<CMyProviderSource, CMyProviderSession>,
  23.     public IDBInitializeImpl<CMyProviderSource>,
  24.     public IDBPropertiesImpl<CMyProviderSource>,
  25.     public IPersistImpl<CMyProviderSource>,
  26.     public IInternalConnectionImpl<CMyProviderSource>
  27. {
  28. public:
  29.     CMyProviderSource()
  30.     {
  31.         CoInitialize(NULL);
  32.         CoUninitialize();
  33.         ATLTRACE2(atlTraceDBProvider, 0, "Now in the data source constructor\n");
  34.     }
  35.  
  36.     ~CMyProviderSource()
  37.     {
  38.         ATLTRACE2(atlTraceDBProvider, 0, "Now in the data source destructor\n");
  39. //      MessageBox(NULL, _T("Foo"), _T("Bar"), MB_OK);
  40.     }
  41.  
  42.     HRESULT FinalConstruct()
  43.     {
  44.         return FInit();
  45.     }
  46.  
  47.     HRESULT IsValidValue(ULONG iCurSet, DBPROP* pDBProp)
  48.     {
  49.         ATLASSERT(pDBProp != NULL);
  50.         CComVariant var = pDBProp->vValue;
  51.  
  52.         switch (pDBProp->dwPropertyID)
  53.         {
  54.         case DBPROP_INIT_MODE:
  55.             {
  56.             LONG lAcceptable = ~(DB_MODE_READWRITE | DB_MODE_SHARE_EXCLUSIVE | DB_MODE_SHARE_DENY_NONE);
  57.             if ((var.lVal & lAcceptable))
  58.                 return S_FALSE;
  59.             }
  60.             break;
  61.         case DBPROP_INIT_PROMPT:
  62.             if (var.iVal != DBPROMPT_NOPROMPT && var.iVal != DBPROMPT_PROMPT &&
  63.                 var.iVal != DBPROMPT_COMPLETE && var.iVal != DBPROMPT_COMPLETEREQUIRED)
  64.                 return S_FALSE;
  65.         case DBPROP_INIT_TIMEOUT:
  66.             if (var.lVal < 0)
  67.                 return S_FALSE;
  68.         default:
  69.             break;
  70.         }
  71.  
  72.         return IDBPropertiesImpl<CMyProviderSource>::IsValidValue(iCurSet, pDBProp);
  73.     }
  74.  
  75. DECLARE_REGISTRY_RESOURCEID(IDR_MYPROVIDER)
  76. BEGIN_PROPSET_MAP(CMyProviderSource)
  77.     BEGIN_PROPERTY_SET(DBPROPSET_DATASOURCEINFO)
  78.         PROPERTY_INFO_ENTRY(ACTIVESESSIONS)
  79.         PROPERTY_INFO_ENTRY(ASYNCTXNABORT)
  80.         PROPERTY_INFO_ENTRY(ASYNCTXNCOMMIT)
  81.         PROPERTY_INFO_ENTRY(BYREFACCESSORS)
  82.         PROPERTY_INFO_ENTRY_VALUE(CATALOGLOCATION, DBPROPVAL_CL_START)
  83.         PROPERTY_INFO_ENTRY(CATALOGTERM)
  84.         PROPERTY_INFO_ENTRY(CATALOGUSAGE)
  85.         PROPERTY_INFO_ENTRY(COLUMNDEFINITION)
  86.         PROPERTY_INFO_ENTRY(CONCATNULLBEHAVIOR)
  87.         PROPERTY_INFO_ENTRY(DATASOURCENAME)
  88.         PROPERTY_INFO_ENTRY(DATASOURCEREADONLY)
  89.         PROPERTY_INFO_ENTRY(DBMSNAME)
  90.         PROPERTY_INFO_ENTRY(DBMSVER)
  91.         PROPERTY_INFO_ENTRY_VALUE(DSOTHREADMODEL, DBPROPVAL_RT_FREETHREAD)
  92.         PROPERTY_INFO_ENTRY(GROUPBY)
  93.         PROPERTY_INFO_ENTRY(HETEROGENEOUSTABLES)
  94.         PROPERTY_INFO_ENTRY(IDENTIFIERCASE)
  95.         PROPERTY_INFO_ENTRY(MAXINDEXSIZE)
  96.         PROPERTY_INFO_ENTRY(MAXROWSIZE)
  97.         PROPERTY_INFO_ENTRY(MAXROWSIZEINCLUDESBLOB)
  98.         PROPERTY_INFO_ENTRY(MAXTABLESINSELECT)
  99.         PROPERTY_INFO_ENTRY(MULTIPLEPARAMSETS)
  100.         PROPERTY_INFO_ENTRY(MULTIPLERESULTS)
  101.         PROPERTY_INFO_ENTRY(MULTIPLESTORAGEOBJECTS)
  102.         PROPERTY_INFO_ENTRY(MULTITABLEUPDATE)
  103.         PROPERTY_INFO_ENTRY(NULLCOLLATION)
  104.         PROPERTY_INFO_ENTRY(OLEOBJECTS)
  105.         PROPERTY_INFO_ENTRY(ORDERBYCOLUMNSINSELECT)
  106.         PROPERTY_INFO_ENTRY(OUTPUTPARAMETERAVAILABILITY)
  107.         PROPERTY_INFO_ENTRY(PERSISTENTIDTYPE)
  108.         PROPERTY_INFO_ENTRY(PREPAREABORTBEHAVIOR)
  109.         PROPERTY_INFO_ENTRY(PREPARECOMMITBEHAVIOR)
  110.         PROPERTY_INFO_ENTRY(PROCEDURETERM)
  111.         PROPERTY_INFO_ENTRY(PROVIDERNAME)
  112.         PROPERTY_INFO_ENTRY(PROVIDEROLEDBVER)
  113.         PROPERTY_INFO_ENTRY(PROVIDERVER)
  114.         PROPERTY_INFO_ENTRY(QUOTEDIDENTIFIERCASE)
  115.         PROPERTY_INFO_ENTRY(ROWSETCONVERSIONSONCOMMAND)
  116.         PROPERTY_INFO_ENTRY(SCHEMATERM)
  117.         PROPERTY_INFO_ENTRY(SCHEMAUSAGE)
  118.         PROPERTY_INFO_ENTRY(STRUCTUREDSTORAGE)
  119.         PROPERTY_INFO_ENTRY(SUBQUERIES)
  120.         PROPERTY_INFO_ENTRY(TABLETERM)
  121.         PROPERTY_INFO_ENTRY(USERNAME)
  122.     END_PROPERTY_SET(DBPROPSET_DATASOURCEINFO)
  123.     BEGIN_PROPERTY_SET(DBPROPSET_DBINIT)
  124.         PROPERTY_INFO_ENTRY(AUTH_PASSWORD)
  125.         PROPERTY_INFO_ENTRY(AUTH_PERSIST_SENSITIVE_AUTHINFO)
  126.         PROPERTY_INFO_ENTRY(AUTH_USERID)
  127.         PROPERTY_INFO_ENTRY(INIT_DATASOURCE)
  128.         PROPERTY_INFO_ENTRY(INIT_HWND)
  129.         PROPERTY_INFO_ENTRY(INIT_LCID)
  130.         PROPERTY_INFO_ENTRY(INIT_LOCATION)
  131.         PROPERTY_INFO_ENTRY(INIT_PROVIDERSTRING)
  132.     END_PROPERTY_SET(DBPROPSET_DBINIT)
  133.     BEGIN_PROPERTY_SET(DBPROPSET_DATASOURCE)
  134.         PROPERTY_INFO_ENTRY(CURRENTCATALOG)
  135.     END_PROPERTY_SET(DBPROPSET_DATASOURCE)
  136.     CHAIN_PROPERTY_SET(CMyProviderSession)
  137. END_PROPSET_MAP()
  138.  
  139.     typedef IDBCreateSessionImpl<CMyProviderSource,CMyProviderSession> DBCreateSessionClass;
  140.  
  141. BEGIN_COM_MAP(CMyProviderSource)
  142.     COM_INTERFACE_ENTRY_IID(IID_IDBCreateSession, DBCreateSessionClass)
  143.     COM_INTERFACE_ENTRY(IDBInitialize)
  144.     COM_INTERFACE_ENTRY(IDBProperties)
  145.     COM_INTERFACE_ENTRY(IPersist)
  146.     COM_INTERFACE_ENTRY(IInternalConnection)
  147. END_COM_MAP()
  148. public:
  149. };
  150. #endif //__CMyProviderSource_H_
  151.