//-------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1992 - 1995 // // File: utilprop.cxx // // Contents: CUtilProp object definitions // // // History: 08-28-96 shanksh Created. // //---------------------------------------------------------------------------- // @module UTILPROP.H | CUtilProp object definitions // // #ifndef _UTILPROP_HXX_ #define _UTILPROP_HXX_ //----------- structs and #defines ------------------------------------------- // // simple table used to store property information. Used in // the read-only implementation of IDBProperties::GetPropertyInfo and // typedef struct _tagPROPSTRUCT { DBPROPID dwPropertyID; DBPROPFLAGS dwFlags; VARTYPE vtType; BOOL boolVal; LONG longVal; DBPROPOPTIONS dwOptions; PWSTR pwstrVal; LPOLESTR pwszDescription; DBID colid; } PROPSTRUCT; typedef struct tagPROPSET { const GUID *guidPropertySet; ULONG cProperties; PROPSTRUCT* pUPropInfo; } PROPSET; // // flags for IDBProperties::GetPropertyInfo // #define F_ROWSETRO (DBPROPFLAGS_ROWSET | DBPROPFLAGS_READ) #define F_ROWSETRW (DBPROPFLAGS_ROWSET | DBPROPFLAGS_READ | \ DBPROPFLAGS_WRITE) #define F_DSRO (DBPROPFLAGS_DATASOURCEINFO | DBPROPFLAGS_READ) #define F_DBINITRW (DBPROPFLAGS_DBINIT | DBPROPFLAGS_READ | \ DBPROPFLAGS_WRITE) #define F_SESSRO (DBPROPFLAGS_SESSION | DBPROPFLAGS_READ) #define F_ADSIRO (DBPROPFLAGS_ROWSET | DBPROPFLAGS_READ) #define F_ADSIRW (DBPROPFLAGS_ROWSET | DBPROPFLAGS_READ | \ DBPROPFLAGS_WRITE) #define OPT_REQ (DBPROPOPTIONS_REQUIRED) #define OPT_SIC (DBPROPOPTIONS_OPTIONAL) // flags for Get and Set Properties const DWORD PROPSET_DSO = 0x0001; const DWORD PROPSET_INIT = 0x0002; const DWORD PROPSET_SESSION = 0x0004; const DWORD PROPSET_COMMAND = 0x0008; //---------------------------------------------------------------------------- // CUtilProp | Containing class for all interfaces on the UtilProp // Object // class CUtilProp { DWORD _dwDescBufferLen; IMalloc *_pIMalloc; CCredentials *_pCredentials; protected: // Member for all of the property work PROPSTRUCT * _prgProperties; // Loads fields of DBPROPINFO struct. Helper for GetPropertyInfo STDMETHODIMP LoadDBPROPINFO( PROPSTRUCT* pPropStruct, ULONG cProperties, DBPROPINFO* pPropInfo ); // Loads fields of DBPROP struct. Helper for GetProperties STDMETHODIMP LoadDBPROP( PROPSTRUCT* pPropSet, ULONG cProperties, DBPROP* pPropSupport, BOOL IsDBInitPropSet ); STDMETHODIMP CUtilProp::StoreDBPROP ( PROPSTRUCT* pPropStruct, PROPSTRUCT* pStaticPropStruct, ULONG cProperties, DBPROP* pPropSupport, DWORD dwPropIndex ); HRESULT CUtilProp::IsValidValue ( DBPROP* pDBProp, DWORD dwPropIndex ); BOOL CUtilProp::IsADSIFlagSet(); HRESULT CUtilProp::IsValidInitMode(long lVal); HRESULT CUtilProp::IsValidBindFlag(long lVal); BOOL CUtilProp::IsSpecialGuid(GUID guidPropSet); public: CUtilProp(void); ~CUtilProp(void); STDMETHODIMP CUtilProp::FInit( CCredentials* pCredentials ); STDMETHODIMP GetProperties( ULONG cPropertySets, const DBPROPIDSET rgPropertySets[], ULONG* pcProperties, DBPROPSET** prgProperties, DWORD dwBitMask ); STDMETHODIMP GetPropertyInfo( ULONG cPropertySets, const DBPROPIDSET rgPropertySets[], ULONG* pcPropertyInfoSets, DBPROPINFOSET** prgPropertyInfoSets, WCHAR** ppDescBuffer, BOOL fDSOInitialized ); STDMETHODIMP CUtilProp::SetProperties( ULONG cProperties, DBPROPSET rgProperties[], DWORD dwBitMask ); HRESULT GetSearchPrefInfo( DBPROPID dwPropId, PADS_SEARCHPREF_INFO pSearchPrefInfo ); HRESULT CUtilProp::FreeSearchPrefInfo( PADS_SEARCHPREF_INFO pSearchPrefInfo, DWORD dwNumSearchPrefs ); PROPSET * CUtilProp::GetPropSetFromGuid ( GUID guidPropSet ); BOOL CUtilProp::IsIntegratedSecurity (); HRESULT CUtilProp::GetPropertiesArgChk( ULONG cPropertySets, const DBPROPIDSET rgPropertySets[], ULONG* pcProperties, DBPROPSET** prgProperties, DWORD dwBitMask ); }; typedef CUtilProp *PCUTILPROP; #define NUMELEM(p) (sizeof(p) / sizeof(p[0])) #endif