// ITRS.H: ITResultSet interface declaration #ifndef __ITRS_H__ #define __ITRS_H__ // {3BB91D41-998B-11d0-A850-00AA006C7D01} DEFINE_GUID(IID_IITResultSet, 0x3bb91d41, 0x998b, 0x11d0, 0xa8, 0x50, 0x0, 0xaa, 0x0, 0x6c, 0x7d, 0x1); // {4662daa7-d393-11d0-9a56-00c04fb68bf7} (changed from IT 3.0) DEFINE_GUID(CLSID_IITResultSet, 0x4662daa7, 0xd393, 0x11d0, 0x9a, 0x56, 0x00, 0xc0, 0x4f, 0xb6, 0x8b, 0xf7); // maximum number of columns in a row set #define MAX_COLUMNS 256 // Column priorities typedef enum { PRIORITY_LOW = 0, PRIORITY_NORMAL = 1, PRIORITY_HIGH = 2, } PRIORITY; // Forward declarations class CProperty; typedef struct tagROWSTATUS { LONG lRowFirst; LONG cRows; LONG cProperties; LONG cRowsTotal; } ROWSTATUS, *LPROWSTATUS; typedef struct tagCOLUMNSTATUS { LONG cPropCount; LONG cPropsLoaded; } COLUMNSTATUS, *LPCOLUMNSTATUS; // Used by IITResultSet::SetColumnHeap. typedef SCODE (__stdcall *PFNCOLHEAPFREE)(LPVOID); DECLARE_INTERFACE_(IITResultSet, IUnknown) { // Initialization STDMETHOD(SetColumnPriority)(LONG lColumnIndex, PRIORITY ColumnPriority) PURE; STDMETHOD(SetColumnHeap)(LONG lColumnIndex, LPVOID lpvHeap, PFNCOLHEAPFREE pfnColHeapFree) PURE; STDMETHOD(SetKeyProp)(PROPID PropID) PURE; STDMETHOD(Add)(LPVOID lpvHdr) PURE; STDMETHOD(Add)(PROPID PropID, LPVOID lpvDefaultData, DWORD cbData, PRIORITY Priority) PURE; STDMETHOD(Add)(PROPID PropID, LPCWSTR lpszwDefault, PRIORITY Priority) PURE; STDMETHOD(Add)(PROPID PropID, DWORD dwDefaultData, PRIORITY Priority) PURE; // Build result set STDMETHOD(Append)(LPVOID lpvHdr, LPVOID lpvData) PURE; STDMETHOD(Set)(LONG lRowIndex, LPVOID lpvHdr, LPVOID lpvData) PURE; STDMETHOD(Set)(LONG lRowIndex, LONG lColumnIndex, DWORD_PTR dwData) PURE; STDMETHOD(Set)(LONG lRowIndex, LONG lColumnIndex, LPCWSTR lpwStr) PURE; STDMETHOD(Set)(LONG lRowIndex, LONG lColumnIndex, LPVOID lpvData, DWORD cbData) PURE; STDMETHOD(Copy)(IITResultSet* pRSCopy) PURE; STDMETHOD(AppendRows)(IITResultSet* pResSrc, LONG lRowSrcFirst, LONG cSrcRows, LONG& lRowFirstDest) PURE; // Obtain info about result set STDMETHOD(Get)(LONG lRowIndex, LONG lColumnIndex, CProperty& Prop) PURE; STDMETHOD(GetKeyProp)(PROPID& KeyPropID) PURE; STDMETHOD(GetColumnPriority)(LONG lColumnIndex, PRIORITY& ColumnPriority) PURE; STDMETHOD(GetRowCount)(LONG& lNumberOfRows) PURE; STDMETHOD(GetColumnCount)(LONG& lNumberOfColumns) PURE; STDMETHOD(GetColumn)(LONG lColumnIndex, PROPID& PropID) PURE; STDMETHOD(GetColumn)(LONG lColumnIndex, PROPID& PropID, DWORD& dwType, LPVOID& lpvDefaultValue, DWORD& cbSize, PRIORITY& ColumnPriority) PURE; STDMETHOD(GetColumnFromPropID)(PROPID PropID, LONG& lColumnIndex) PURE; // Clear result set STDMETHOD(Clear)() PURE; STDMETHOD(ClearRows)() PURE; STDMETHOD(Free)() PURE; // Asynchronous support STDMETHOD(IsCompleted)() PURE; // returns S_OK or S_FALSE STDMETHOD(Cancel)() PURE; STDMETHOD(Pause)(BOOL fPause) PURE; STDMETHOD(GetRowStatus)(LONG lRowFirst, LONG cRows, LPROWSTATUS lpRowStatus) PURE; STDMETHOD(GetColumnStatus)(LPCOLUMNSTATUS lpColStatus) PURE; }; typedef IITResultSet* LPITRS; #endif // __ITRS_H__