Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

79 lines
3.7 KiB

//---------------------------------------------------------------------------
// MetadataCursor.h : CVDMetadataCursor header file
//
// Copyright (c) 1996 Microsoft Corporation, All Rights Reserved
// Developed by Sheridan Software Systems, Inc.
//---------------------------------------------------------------------------
#ifndef __CVDMETADATACURSOR__
#define __CVDMETADATACURSOR__
class CVDMetadataCursor : public CVDCursorBase
{
protected:
// Construction/Destruction
CVDMetadataCursor();
virtual ~CVDMetadataCursor();
public:
static HRESULT Create(ULONG ulColumns, CVDRowsetColumn * pColumns, ULONG ulMetaColumns, CVDRowsetColumn * pMetaColumns,
CVDMetadataCursor ** ppMetadataCursor, CVDResourceDLL * pResourceDLL);
protected:
// Helper functions
void RowToBookmark(LONG lRow, ULONG * pcbBookmark, void * pBookmark) const;
BOOL BookmarkToRow(ULONG cbBookmark, void * pBookmark, LONG * plRow) const;
ULONG ReturnData_I4(DWORD dwData, CURSOR_DBCOLUMNBINDING * pCursorBinding, BYTE * pData, BYTE * pVarData);
ULONG ReturnData_BOOL(VARIANT_BOOL fData, CURSOR_DBCOLUMNBINDING * pCursorBinding, BYTE * pData, BYTE * pVarData);
ULONG ReturnData_LPWSTR(WCHAR * pwszData, CURSOR_DBCOLUMNBINDING * pCursorBinding, BYTE * pData, BYTE * pVarData);
ULONG ReturnData_DBCOLUMNID(CURSOR_DBCOLUMNID cursorColumnID, CURSOR_DBCOLUMNBINDING * pCursorBinding,
BYTE * pData, BYTE * pVarData);
ULONG ReturnData_Bookmark(LONG lRow, CURSOR_DBCOLUMNBINDING * pCursorBinding, BYTE * pData, BYTE * pVarData);
protected:
// Data members
DWORD m_dwRefCount; // reference count
LONG m_lCurrentRow; // current row in metadata columns
ULONG m_ulColumns; // number of rowset columns
CVDRowsetColumn * m_pColumns; // pointer to array of column objects
ULONG m_ulMetaColumns; // number of rowset meta-columns
CVDRowsetColumn * m_pMetaColumns; // pointer to array of meta-column objects
public:
//=--------------------------------------------------------------------------=
// IUnknown methods implemented
//
STDMETHOD(QueryInterface)(REFIID riid, void **ppvObjOut);
STDMETHOD_(ULONG, AddRef)(void);
STDMETHOD_(ULONG, Release)(void);
//=--------------------------------------------------------------------------=
// ICursor methods implemented
//
STDMETHOD(GetColumnsCursor)(REFIID riid, IUnknown **ppvColumnsCursor, ULONG *pcRows);
STDMETHOD(SetBindings)(ULONG cCol, CURSOR_DBCOLUMNBINDING rgBoundColumns[], ULONG cbRowLength, DWORD dwFlags);
STDMETHOD(GetNextRows)(LARGE_INTEGER udlRowsToSkip, CURSOR_DBFETCHROWS *pFetchParams);
STDMETHOD(Requery)(void);
//=--------------------------------------------------------------------------=
// ICursorMove methods implemented
//
STDMETHOD(Move)(ULONG cbBookmark, void *pBookmark, LARGE_INTEGER dlOffset, CURSOR_DBFETCHROWS *pFetchParams);
STDMETHOD(GetBookmark)(CURSOR_DBCOLUMNID *pBookmarkType, ULONG cbMaxSize, ULONG *pcbBookmark, void *pBookmark);
STDMETHOD(Clone)(DWORD dwFlags, REFIID riid, IUnknown **ppvClonedCursor);
//=--------------------------------------------------------------------------=
// ICursorScroll methods implemented
//
STDMETHOD(Scroll)(ULONG ulNumerator, ULONG ulDenominator, CURSOR_DBFETCHROWS *pFetchParams);
STDMETHOD(GetApproximatePosition)(ULONG cbBookmark, void *pBookmark, ULONG *pulNumerator, ULONG *pulDenominator);
STDMETHOD(GetApproximateCount)(LARGE_INTEGER *pudlApproxCount, DWORD *pdwFullyPopulated);
};
#endif //__CVDMETADATACURSOR__