/********************************************************
*                                                       *
*   Copyright (C) Microsoft. All rights reserved.       *
*                                                       *
********************************************************/

//-----------------------------------------------------------------------------
// File:			rowpos.idl
//
// Contents: 		OLE DB interface definition
//
// Comments: 		
//
//-----------------------------------------------------------------------------

cpp_quote("#include <winapifamily.h>")

#pragma region Desktop Family
cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")

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

interface IRowPosition : IUnknown {

typedef DWORD DBPOSITIONFLAGS;

enum DBPOSITIONFLAGSENUM {
	DBPOSITION_OK,
	DBPOSITION_NOROW,
	DBPOSITION_BOF,
	DBPOSITION_EOF,
};

	[local]
	HRESULT ClearRowPosition(
	);

	[call_as(ClearRowPosition)]
	HRESULT RemoteClearRowPosition(
		[out] IErrorInfo ** ppErrorInfoRem
	);

	[local]
	HRESULT GetRowPosition(
		[out, annotation("_Out_opt_")] HCHAPTER * phChapter,
		[out, annotation("_Out_")] HROW * phRow,
		[out, annotation("_Out_opt_")] DBPOSITIONFLAGS * pdwPositionFlags
	);

	[call_as(GetRowPosition)]
	HRESULT RemoteGetRowPosition(
		[out] HCHAPTER * phChapter,
		[out] HROW * phRow,
		[out] DBPOSITIONFLAGS * pdwPositionFlags,
		[out] IErrorInfo ** ppErrorInfoRem
	);

	[local]
	HRESULT GetRowset(
		[in, annotation("_In_")] REFIID riid,
		[out, iid_is(riid), annotation("_Outptr_")] IUnknown ** ppRowset
	);

	[call_as(GetRowset)]
	HRESULT RemoteGetRowset(
		[in] REFIID riid,
		[out, iid_is(riid)] IUnknown ** ppRowset,
		[out] IErrorInfo ** ppErrorInfoRem
	);

	[local]
	HRESULT Initialize(
		[in, annotation("_In_")] IUnknown * pRowset
	);

	[call_as(Initialize)]
	HRESULT RemoteInitialize(
		[in] IUnknown * pRowset,
		[out] IErrorInfo ** ppErrorInfoRem
	);

	[local]
	HRESULT SetRowPosition(
		[in] HCHAPTER hChapter,
		[in] HROW hRow,
		[in] DBPOSITIONFLAGS dwPositionFlags
	);

	[call_as(SetRowPosition)]
	HRESULT RemoteSetRowPosition(
		[in] HCHAPTER hChapter,
		[in] HROW hRow,
		[in] DBPOSITIONFLAGS dwPositionFlags,
		[out] IErrorInfo ** ppErrorInfoRem
	);

}

cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */")
#pragma endregion

