//-----------------------------------------------------------------------------
// File:			rstloc.idl
//
// Copyright:		Copyright (c) Microsoft Corporation          
//
// Contents: 		OLE DB interface definition
//
// Comments: 		
//
//-----------------------------------------------------------------------------


#include "idlmulti.h"
//  
    
    LOCAL_INTERFACE(0c733a7d-2a1c-11ce-ade5-00aa0044773d)

    
interface IRowsetLocate : IRowset {

	//
	//	DBCOMPARE -- specifies the results of a bookmark comparison
	//

typedef DWORD DBCOMPARE;

enum DBCOMPAREENUM {
	DBCOMPARE_LT,
	DBCOMPARE_EQ,
	DBCOMPARE_GT,
	DBCOMPARE_NE,
	DBCOMPARE_NOTCOMPARABLE
};

	HRESULT Compare(
		[in] HCHAPTER hReserved,
		[in] DBBKMARK cbBookmark1,
		[in, size_is(cbBookmark1)] const BYTE * pBookmark1,
		[in] DBBKMARK cbBookmark2,
		[in, size_is(cbBookmark2)] const BYTE * pBookmark2,
		[out] DBCOMPARE * pComparison
	);

	HRESULT GetRowsAt(
		[in] HWATCHREGION hReserved1,
		[in] HCHAPTER hReserved2,
		[in] DBBKMARK cbBookmark,
		[in, size_is(cbBookmark)] const BYTE * pBookmark,
		[in] DBROWOFFSET lRowsOffset,
		[in] DBROWCOUNT cRows,
		[out] DBCOUNTITEM * pcRowsObtained,
		[out, size_is(,cRows)] HROW ** prghRows
	);

	HRESULT GetRowsByBookmark(
		[in] HCHAPTER hReserved,
		[in] DBCOUNTITEM cRows,
		[in, size_is(cRows)] const DBBKMARK rgcbBookmarks[],
		[in, size_is(cRows)] const BYTE * rgpBookmarks[],
		[out, size_is(cRows)] HROW rghRows[],
		[out, size_is(cRows)] DBROWSTATUS rgRowStatus[]
	);

	HRESULT Hash(
		[in] HCHAPTER hReserved,
		[in] DBBKMARK cBookmarks,
		[in, size_is(cBookmarks)] const DBBKMARK rgcbBookmarks[],
		[in, size_is(cBookmarks)] const BYTE * rgpBookmarks[],
		[out, size_is(cBookmarks)] DBHASHVALUE rgHashedValues[],
		[out, size_is(cBookmarks)] DBROWSTATUS rgBookmarkStatus[]
	);

}

