//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1994 - 1999. // // File: proputl.hxx // // Contents: Header for property handling routines // // Classes: CMRowsetProps : public CUtlProps // CMDSProps : public CUtlProps // CMSessProps : public CUtlProps // CMDSPropInfo : public CUtlPropInfo // // History: 10-28-97 danleg Created from monarch utlprop.h // //---------------------------------------------------------------------------- #pragma once #include "propbase.hxx" // base class CUtlProp, CUtlPropInfo #include // CImpIParserVerify #include // CMRowsteProps //+------------------------------------------------------------------------- // // Class: CMDSProps // // Purpose: Properties for Datasource // // History: 11-12-97 danleg Created from Monarch // //-------------------------------------------------------------------------- class CMDSProps : public CUtlProps { public: // // Ctor / Dtor // CMDSProps(CImpIParserVerify* pIPVerify); // Validate a Catalog SCODE ValidateCatalog ( VARIANT * pVariant ); // Validate an LCID SCODE ValidateLocale ( VARIANT * pVariant ); // Expose the appropriate # of propsets for before and after Initialize void ExposeMinimalSets(); SCODE ExposeMaximalSets(); // // Constants // // List of property offsets. // Note that this must match up with the static array. enum EID { // s_rgdbPropInit[] = //eid_AUTH_CACHE_AUTHINFO, //eid_AUTH_ENCRYPT_PASSWORD, eid_AUTH_INTEGRATED, //eid_AUTH_MASK_PASSWORD, //eid_AUTH_PASSWORD, //eid_AUTH_PERSIST_ENCRYPTED, //eid_AUTH_PERSIST_SENSITIVE_AUTHINFO, //eid_AUTH_USERID, //eid_INIT_ASYNCH, //eid_INIT_CATALOG, eid_INIT_DATASOURCE, eid_INIT_HWND, //eid_INIT_IMPERSONATION_LEVEL, eid_INIT_LCID, eid_INIT_LOCATION, //eid_INIT_MODE, eid_INIT_OLEDBSERVICES, eid_INIT_PROMPT, //eid_INIT_PROTECTION_LEVEL, //eid_INIT_PROVIDERSTRING, //eid_INIT_TIMEOUT, //eid_INIT_CATALOG, eid_INIT_PROPS_NUM, // s_rgdbPropDSInfo[] = eid_ACTIVESESSIONS = 0, eid_BYREFACCESSORS, eid_CATALOGLOCATION, eid_CATALOGTERM, eid_CATALOGUSAGE, eid_COLUMNDEFINITION, eid_DATASOURCEREADONLY, eid_DBMSNAME, eid_DBMSVER, eid_DSOTHREADMODEL, eid_GROUPBY, eid_HETEROGENEOUSTABLES, eid_MAXOPENCHAPTERS, eid_MAXROWSIZE, eid_MAXTABLESINSELECT, eid_MULTIPLEPARAMSETS, eid_MULTIPLERESULTS, eid_MULTIPLESTORAGEOBJECTS, eid_NULLCOLLATION, eid_OLEOBJECTS, eid_ORDERBYCOLUMNSINSELECT, eid_OUTPUTPARAMETERAVAILABILITY, eid_PERSISTENTIDTYPE, eid_PROVIDERFRIENDLYNAME, eid_PROVIDERNAME, eid_PROVIDEROLEDBVER, eid_PROVIDERVER, eid_ROWSETCONVERSIONSONCOMMAND, eid_SQLSUPPORT, eid_STRUCTUREDSTORAGE, eid_SUBQUERIES, eid_SUPPORTEDTXNDDL, eid_SUPPORTEDTXNISOLEVELS, eid_SUPPORTEDTXNISORETAIN, eid_DSINFO_PROPS_NUM, // Total # of entries // s_rgdbPropsDS[] = eid_CURRENTCATALOG = 0, eid_RESETDATASOURCE, eid_DS_PROPS_NUM, eid_DBPROPVAL_AUTH_INTEGRATED = 0, eid_DBPROPVAL_INIT_DATASOURCE, eid_DBPROPVAL_INIT_HWND, eid_DBPROPVAL_INIT_LCID, eid_DBPROPVAL_INIT_LOCATION, eid_DBPROPVAL_INIT_OLEDBSERVICES, eid_DBPROPVAL_INIT_PROMPT, //eid_DBPROPVAL_INIT_PROVIDERSTRING, eid_DBPROPVAL_CURRENTCATALOG = 0, eid_DBPROPVAL_RESETDATASOURCE, eid_DBPROPVAL_NUM, // Total # of DBPROPVAL entries // Which PropSet is DBINIT stuff in. eid_DBPROPSET_DBINIT=0, eid_DBPROPSET_DATASOURCEINFO, eid_DBPROPSET_DATASOURCE, eid_DBPROPSET_NUM, // Total # of DBPROPSET entries }; private: // // Methods // // Given a propset and propid, return the default value SCODE GetDefaultValue ( ULONG iCurSet, DBPROPID dwPropId, DWORD * pdwOption, VARIANT * pvValue ); // Given a propset and propid, determine if the value is valid SCODE IsValidValue ( ULONG iCurSet, DBPROP * pDBProp ); // Initialize the properties this class manages SCODE InitAvailUPropSets( ULONG * pcUPropSet, UPROPSET ** ppUPropSet, ULONG * pcElemPer ); // Initialize the properties this class supports SCODE InitUPropSetsSupported( DWORD * rgdwSupported ); void HandleCatalog ( VARIANT * pvValue ); // // Data member // XInterface _xIPVerify; }; //+------------------------------------------------------------------------- // // Class: CMSessProps // // Purpose: Properties for Session // // History: 11-12-97 danleg Created from Monarch // //-------------------------------------------------------------------------- class CMSessProps : public CUtlProps { public: // // Ctor // CMSessProps() { FInit(); } // List of property offsets. // Note that this must match up with the static array. enum EID { // s_rgdbPropSESS[] = eid_SESS_AUTOCOMMITISOLEVELS, eid_SESS_PROPS_NUM, // Number of total entries. // Which PropSet is DBINIT stuff in. eid_DBPROPSET_SESSION=0, eid_DBPROPSET_NUM, // Number of total entries. }; private: // Given a propset and propid, return the default value SCODE GetDefaultValue ( ULONG iCurSet, DBPROPID dwPropId, DWORD * pdwOption, VARIANT * pvValue ); // Given a propset and propid, determine if the value is valid SCODE IsValidValue ( ULONG iCurSet, DBPROP * pDBProp ); // Initialize the properties this class manages SCODE InitAvailUPropSets( ULONG * pcUPropSet, UPROPSET ** ppUPropSet, ULONG * pcElemPer ); // Initialize the properties this class supports SCODE InitUPropSetsSupported( DWORD * rgdwSupported ); }; //+------------------------------------------------------------------------- // // Class: CMDSPropInfo // // Purpose: Property info for Datasource // // History: 11-12-97 danleg Created from Monarch // //-------------------------------------------------------------------------- class CMDSPropInfo : public CUtlPropInfo { public: // // Ctor // CMDSPropInfo() { FInit(); } // Expose appropriate # of propsets for before and after Initialize void ExposeMinimalSets() { SetUPropSetCount( eid_DBPROPSET_NUM_INITPROPSETS+1 ); } void ExposeMaximalSets() { SetUPropSetCount( eid_DBPROPSET_NUM ); } // List of property offsets. // Note that this must match up with the static array. enum EID { // s_rgdbPropDSInfo[] = eid_ACTIVESESSIONS = 0, eid_BYREFACCESSORS, eid_CATALOGLOCATION, eid_CATALOGTERM, eid_CATALOGUSAGE, eid_COLUMNDEFINITION, eid_DATASOURCEREADONLY, eid_DBMSNAME, eid_DBMSVER, eid_DSOTHREADMODEL, eid_GROUPBY, eid_HETEROGENEOUSTABLES, eid_MAXOPENCHAPTERS, eid_MAXROWSIZE, eid_MAXTABLESINSELECT, eid_MULTIPLEPARAMSETS, eid_MULTIPLERESULTS, eid_MULTIPLESTORAGEOBJECTS, eid_NULLCOLLATION, eid_OLEOBJECTS, eid_ORDERBYCOLUMNSINSELECT, eid_OUTPUTPARAMETERAVAILABILITY, eid_PERSISTENTIDTYPE, eid_PROVIDERFRIENDLYNAME, eid_PROVIDERNAME, eid_PROVIDEROLEDBVER, eid_PROVIDERVER, eid_ROWSETCONVERSIONSONCOMMAND, eid_SQLSUPPORT, eid_STRUCTUREDSTORAGE, eid_SUBQUERIES, eid_SUPPORTEDTXNDDL, eid_SUPPORTEDTXNISOLEVELS, eid_SUPPORTEDTXNISORETAIN, eid_DSINFO_PROPS_NUM, // Number of elements // initialization property sets eid_DBPROPSET_DBINIT=0, // any future init propsets go here eid_DBPROPSET_NUM_INITPROPSETS=0, // Index of last init propset eid_DBPROPSET_DATASOURCEINFO, eid_DBPROPSET_DATASOURCE, eid_DBPROPSET_SESSION, eid_DBPROPSET_ROWSET, eid_DBPROPSET_MSIDXS_ROWSET_EXT, eid_DBPROPSET_QUERY_EXT, eid_DBPROPSET_NUM, // Total number of propsets }; private: // // Data members // DWORD _rgdwSupported[DWORDSNEEDEDTOTAL]; // Configuration Flags DWORD _dwFlags; // Allows base class to associate pointers. SCODE InitAvailUPropSets( ULONG * pcUPropSet, UPROPSET ** ppUPropSet, ULONG * pcElemPer ); // Initialize the properties supported SCODE InitUPropSetsSupported( DWORD * rgdwSupported ); // Load a description string ULONG LoadDescription ( LPCWSTR pwszDesc, PWSTR pwszBuff, ULONG cchBuff ); };