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

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

interface IViewFilter : IUnknown {

	[local]
	HRESULT GetFilter(
		[in] HACCESSOR hAccessor,
		[out, annotation("__out")] DBCOUNTITEM * pcRows,
		[out, annotation("__out_ecount(*pcRows)")] DBCOMPAREOP * pCompareOps[],
		[out, annotation("__out")] void * pCriteriaData
	);

	[local]
	HRESULT GetFilterBindings(
		[out, annotation("__out")] DBCOUNTITEM * pcBindings,
		[out, annotation("__deref_out_ecount_opt(*pcBindings)")] DBBINDING ** prgBindings
	);
#ifndef NO_REMOTE

#ifdef _WIN64  //Use casting by ULONG in attribute size_is under 64-bit environment.

	[call_as(GetFilterBindings)]
	HRESULT RemoteGetFilterBindings(
		[in, out] DBCOUNTITEM * pcBindings,
		[out, size_is(,(ULONG)*pcBindings)] DBBINDING ** prgBindings,
		[out] IErrorInfo ** ppErrorInfoRem
	);

#else  //No casting by ULONG for 32-bit.

	[call_as(GetFilterBindings)]
	HRESULT RemoteGetFilterBindings(
		[in, out] DBCOUNTITEM * pcBindings,
		[out, size_is(,*pcBindings)] DBBINDING ** prgBindings,
		[out] IErrorInfo ** ppErrorInfoRem
	);

#endif

#endif

	[local]
	HRESULT SetFilter(
		[in] HACCESSOR hAccessor,
		[in] DBCOUNTITEM cRows,
		[in, annotation("__in_ecount(cRows)")] DBCOMPAREOP CompareOps[],
		[in, annotation("__in")] void * pCriteriaData
	);

}

