windows-nt/Source/XPSP1/NT/ds/adsi/oledsvw/adsdsrc.h
2020-09-26 16:20:57 +08:00

180 lines
5.4 KiB
C++

#ifndef _ADSDATASOURCE_H_
#define _ADSDATASOURCE_H_
//#define ROWS 10L
#define ROWS 1L
typedef struct _tagSEARCHPREF
{
TCHAR szSource [ MAX_PATH ];
TCHAR szQuery [ 2048 ];
TCHAR szAttributes [ MAX_PATH ];
TCHAR szScope [ MAX_PATH ];
TCHAR szUserName [ 2 * MAX_PATH ];
TCHAR szPassword [ MAX_PATH ];
BOOL bEncryptPassword;
BOOL bUseSQL;
int nAsynchronous;
int nDerefAliases;
int nSizeLimit;
int nTimeLimit;
int nAttributesOnly;
int nScope;
int nTimeOut;
int nPageSize;
int nChaseReferrals;
} SEARCHPREF;
class CADsDataSource: public CObject
{
public:
CADsDataSource( );
~CADsDataSource( );
public:
/*void SetQueryParameters( CString& strSource,
CString& strQuery,
CString& strAttributes,
CString& strScope,
CString& strUserName,
CString& strPassword,
BOOL bEncryptPassword,
BOOL bUseSQL );*/
void SetQueryParameters( SEARCHPREF* pSerachPref );
virtual int GetColumnsCount ( int nRow );
virtual BOOL GetValue ( int nRow, int nColumn, CString& );
virtual BOOL GetValue ( int nRow, CString& strColumn, CString& );
virtual BOOL GetADsPath ( int nRow, CString& );
virtual BOOL GetColumnText ( int nRow, int nColumn, CString& );
BOOL Refresh ( void );
virtual BOOL RunTheQuery ( void );
protected:
DBORDINAL m_nColumnsCount;
int m_nAddOne;
BOOL m_bNoQuery;
BOOL m_bNoMoreData;
int m_nFirstRow;
int m_nLastRow;
int m_nCurrentRow;
ULONG m_cRows;
ULONG m_cColumns;
CString m_strAttributes;
/*CString m_strSource;
CString m_strQuery;
CString m_strScope;
CString m_strPassword;
CString m_strUserName;
BOOL m_bEncryptPassword;
BOOL m_bUseSQL;*/
CStringArray m_ADsPath;
SEARCHPREF* m_pSearchPref;
};
/*typedef struct tagData {
void *obValue;
DATE dateValue;
ULONG obLength;
LARGE_INTEGER aLargeInteger;
ULONG status;
} Data;*/
typedef struct tagData {
union {
void *obValue;
double obValue2;
};
ULONG obLength;
ULONG status;
} Data;
class CADsOleDBDataSource: public CADsDataSource
{
public:
CADsOleDBDataSource( );
~CADsOleDBDataSource( );
public:
HRESULT SetQueryCredentials( IDBInitialize* pInit, ICommandText* pCommand );
virtual int GetColumnsCount ( int nRow );
virtual BOOL GetValue ( int nRow, int nColumn, CString& );
virtual BOOL GetADsPath ( int nRow, CString& );
virtual BOOL GetColumnText ( int nRow, int nColumn, CString& );
virtual BOOL RunTheQuery ( void );
private:
void DestroyInternalData ( void );
BOOL AdvanceCursor ( void );
BOOL CreateAccessorHelp ( void );
BOOL BringRowInBuffer ( int nRow );
CString ExtractData ( int );
void ReadADsPath ( void );
private:
Data* m_pData;
IRowset* m_pIRowset;
IMalloc* m_pIMalloc;
IAccessor* m_pAccessor;
IColumnsInfo* m_pIColsInfo;
HROW* m_hRows;
HACCESSOR m_hAccessor;
DBCOLUMNINFO* m_prgColInfo;
DBBINDSTATUS* m_pBindStatus;
OLECHAR* m_szColNames;
};
class CADsSearchDataSource: public CADsDataSource
{
public:
CADsSearchDataSource( );
~CADsSearchDataSource( );
public:
virtual int GetColumnsCount ( int nRow );
virtual BOOL GetValue ( int nRow, int nColumn, CString& );
virtual BOOL GetValue ( int nRow, CString& rColumn, CString& );
virtual BOOL GetADsPath ( int nRow, CString& );
virtual BOOL GetColumnText ( int nRow, int nColumn, CString& );
virtual BOOL RunTheQuery ( void );
private:
void DestroyInternalData ( void );
HRESULT CreateSearchInterface( );
BOOL BringRowInBuffer ( int nRow );
BOOL ReadColumnNames ( int nRow );
HRESULT SetQueryPreferences ( );
HRESULT SetSearchPreferences ( );
HRESULT SetAttributesName ( );
void ReadADsPath ( void );
private:
IDirectorySearch* m_pSearch;
ADS_SEARCH_HANDLE m_hSearch;
CStringArray m_strColumns;
/*BOOL m_bAsynchronous; //ADS_SEARCHPREF_ASYNCHRONOUS
BOOL m_bDerefAliases; //ADS_SEARCHPREF_DEREF_ALIASES
int m_nSizeLimit; //ADS_SEARCHPREF_SIZE_LIMIT
int m_nTimeLimit; //ADS_SEARCHPREF_TIME_LIMIT
BOOL m_bAttributesOnly; //ADS_SEARCHPREF_ATTRIBTYPES_ONLY
CString m_strScope; //ADS_SEARCHPREF_SEARCH_SCOPE
int m_nTimeOut; //ADS_SEARCHPREF_TIMEOUT
int m_nPageSize; //ADS_SEARCHPREF_PAGESIZE*/
};
#endif