STDMETHOD(GetLastError)(THIS_ HRESULT, ULONG, LPMAPIERROR FAR*); STDMETHOD(SaveChanges)(THIS_ ULONG); STDMETHOD(GetProps)(THIS_ LPSPropTagArray, ULONG, ULONG FAR*, LPSPropValue FAR*); STDMETHOD(GetPropList)(THIS_ ULONG, LPSPropTagArray FAR *); STDMETHOD(OpenProperty)(THIS_ ULONG, LPCIID lpiid, ULONG, ULONG, LPUNKNOWN FAR*); STDMETHOD(SetProps)(THIS_ LONG, LPSPropValue, LPSPropProblemArray FAR*); STDMETHOD(DeleteProps)(THIS_ LPSPropTagArray, LPSPropProblemArray FAR *); STDMETHOD(CopyTo)(THIS_ ULONG, LPCIID, LPSPropTagArray, ULONG, LPMAPIPROGRESS, LPCIID lpInterface, LPVOID, ULONG, LPSPropProblemArray FAR*); STDMETHOD(CopyProps)(THIS_ LPSPropTagArray, ULONG, LPMAPIPROGRESS, LPCIID, LPVOID, ULONG, LPSPropProblemArray FAR*); STDMETHOD(GetNamesFromIDs)(THIS_ LPSPropTagArray FAR*, LPGUID, ULONG, ULONG FAR*, LPMAPINAMEID FAR* FAR*); STDMETHOD(GetIDsFromNames)(THIS_ ULONG, LPMAPINAMEID FAR*, ULONG, LPSPropTagArray FAR*);
STDMETHOD(GetLastError)(THIS_ HRESULT, ULONG, LPMAPIERROR*) PURE; STDMETHOD(Advise)(THIS_ ULONG, LPMAPIADVISESINK, ULONG*) PURE; STDMETHOD(Unadvise)(THIS_ ULONG ulCxn) PURE; STDMETHOD(GetStatus)(THIS_ ULONG*, ULONG*) PURE; STDMETHOD(SetColumns)(THIS_ LPSPropTagArray, ULONG) PURE; STDMETHOD(QueryColumns)(THIS_ ULONG, LPSPropTagArray*) PURE; STDMETHOD(GetRowCount)(THIS_ ULONG, ULONG *) PURE; STDMETHOD(SeekRow)(THIS_ BOOKMARK, LONG, LONG*) PURE; STDMETHOD(SeekRowApprox)(THIS_ ULONG, ULONG) PURE; STDMETHOD(QueryPosition)(THIS_ ULONG*, ULONG*, ULONG*) PURE; STDMETHOD(FindRow)(THIS_ LPSRestriction, BOOKMARK, ULONG) PURE; STDMETHOD(Restrict)(THIS_ LPSRestriction, ULONG) PURE; STDMETHOD(CreateBookmark)(THIS_ BOOKMARK*) PURE; STDMETHOD(FreeBookmark)(THIS_ BOOKMARK) PURE; STDMETHOD(SortTable)(THIS_ LPSSortOrderSet, ULONG) PURE; STDMETHOD(QuerySortOrder)(THIS_ LPSSortOrderSet*) PURE; STDMETHOD(QueryRows)(THIS_ LONG, ULONG, LPSRowSet*) PURE; STDMETHOD(Abort)(THIS) PURE; STDMETHOD(ExpandRow)(THIS_ ULONG, LPBYTE, ULONG, ULONG, LPSRowSet*, ULONG*) PURE; STDMETHOD(CollapseRow)(THIS_ ULONG, LPBYTE, ULONG, ULONG*) PURE; STDMETHOD(WaitForCompletion)(THIS_ ULONG, ULONG, ULONG*) PURE; STDMETHOD(GetCollapseState)(THIS_ ULONG, ULONG, LPBYTE, ULONG*,LPBYTE*) PURE; STDMETHOD(SetCollapseState)(THIS_ ULONG, ULONG, LPBYTE, BOOKMARK*) PURE;
DECLARE_INTERFACE_(IMAPIProp,IUnknown){  /*** IUnknown methods ***/  STDMETHOD(QueryInterface)(THIS_ REFIID, PVOID*) PURE;  STDMETHOD_(ULONG,AddRef)(THIS) PURE;  STDMETHOD_(ULONG,Release)(THIS) PURE;  /*** IMAPIProp methods ***/  STDMETHOD(GetLastError)(THIS_ HRESULT, ULONG, LPMAPIERROR FAR*);  STDMETHOD(SaveChanges)(THIS_ ULONG);  STDMETHOD(GetProps)(THIS_ LPSPropTagArray, ULONG, ULONG FAR*,                      LPSPropValue FAR*);  STDMETHOD(GetPropList)(THIS_ ULONG, LPSPropTagArray FAR *);  STDMETHOD(OpenProperty)(THIS_ ULONG, LPCIID lpiid, ULONG,                          ULONG, LPUNKNOWN FAR*);  STDMETHOD(SetProps)(THIS_ LONG, LPSPropValue, LPSPropProblemArray FAR*);  STDMETHOD(DeleteProps)(THIS_ LPSPropTagArray, LPSPropProblemArray FAR *);  STDMETHOD(CopyTo)(THIS_ ULONG, LPCIID, LPSPropTagArray, ULONG,                    LPMAPIPROGRESS, LPCIID lpInterface, LPVOID,                    ULONG, LPSPropProblemArray FAR*);  STDMETHOD(CopyProps)(THIS_ LPSPropTagArray, ULONG, LPMAPIPROGRESS,                       LPCIID, LPVOID, ULONG, LPSPropProblemArray FAR*);    STDMETHOD(GetNamesFromIDs)(THIS_ LPSPropTagArray FAR*, LPGUID,                             ULONG, ULONG FAR*, LPMAPINAMEID FAR* FAR*);  STDMETHOD(GetIDsFromNames)(THIS_ ULONG, LPMAPINAMEID FAR*, ULONG,                             LPSPropTagArray FAR*);};