import "unknwn.idl";
import "oaidl.idl";

cpp_quote("/****************************************************************************")
cpp_quote("	remapi.h")
cpp_quote("")
cpp_quote("	GENERATED FILE!!!  DO NOT EDIT!!!")
cpp_quote("	")
cpp_quote("	Owner: DavidMck")
cpp_quote(" 	Copyright (C) Microsoft Corporation, 1998 - 1999")
cpp_quote(" ")
cpp_quote("	This file contains the exported interfaces for Darwin's Custom action marshalling.")
cpp_quote("	It is generated by midl.exe from remapi.idl")
cpp_quote("****************************************************************************/")

cpp_quote("#ifndef REMAPI_H")
cpp_quote("#define REMAPI_H")

#ifdef UNICODE
typedef wchar_t	ichar;
#else
typedef char	ichar;
#endif //UNICODE

[
	object,
	pointer_default(unique),
	uuid(000C1033-0000-0000-c000-000000000046) //??
]
interface IMsiRemoteAPI : IUnknown
{
	HRESULT GetProperty([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hInstall, [in, unique, string] const ichar* szName, [out, string, size_is(cchValue)] ichar* szValue, [in] unsigned long cchValue, [out] unsigned long* pcchResValue);
	HRESULT CreateRecord([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned int cParams, [out] unsigned long* pHandle);
	HRESULT CloseAllHandles([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie);
	HRESULT CloseHandle([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hAny);
	HRESULT DatabaseOpenView([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hDatabase, [in, unique, string] const ichar* szQuery, [out] unsigned long* phView);
	HRESULT ViewGetError([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hView, [out, string, size_is(cchBuf)] ichar* szColumnNameBuffer, [in] unsigned long cchBuf, [out] unsigned long* pcchResBuf, [out] int *pMsidbError);
	HRESULT ViewExecute([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hView, [in] unsigned long hRecord);
	HRESULT ViewFetch([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hView, [out] unsigned long*  phRecord);
	HRESULT ViewModify([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hView, [in] long eUpdateMode, [in] unsigned long hRecord);
	HRESULT ViewClose([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hView);
	HRESULT OpenDatabase([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in, unique, string] const ichar* szDatabasePath, [in, unique, string] const ichar* szPersist, [out] unsigned long *phDatabase);
	HRESULT DatabaseCommit([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hDatabase);
	HRESULT DatabaseGetPrimaryKeys([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hDatabase, [in, unique, string] const ichar * szTableName, [out] unsigned long *phRecord);
	HRESULT RecordIsNull([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hRecord, [in] unsigned int iField, [out] boolean *pfIsNull);
	HRESULT RecordDataSize([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hRecord, [in] unsigned int iField, [out] unsigned int* puiSize);
	HRESULT RecordSetInteger([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hRecord, [in] unsigned int iField, int iValue);
	HRESULT RecordSetString([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hRecord,	[in] unsigned int iField, [in, unique, string] const ichar* szValue);
	HRESULT RecordGetInteger([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hRecord, [in] unsigned int iField, [out] int *piValue);
	HRESULT RecordGetString([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hRecord, [in] unsigned int iField, [out, string, size_is(cchValueBuf)] ichar* szValueBuf, [in] unsigned long cchValueBuf, [out] unsigned long *pcchValueRes);
	HRESULT RecordGetFieldCount([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hRecord, [out] unsigned int* piCount);
	HRESULT RecordSetStream([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hRecord, [in] unsigned int iField, [in, unique, string] const ichar* szFilePath);
	HRESULT RecordReadStream([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hRecord, [in] unsigned int iField, [in] boolean fBufferIsNull, [out, size_is(fBufferIsNull ? 1 : (int)*pcbDataBuf)] char *szDataBuf, [in, out] unsigned long *pcbDataBuf);
	HRESULT RecordClearData([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hRecord);
	HRESULT GetSummaryInformation([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hDatabase, [in, unique, string] const ichar*  szDatabasePath, [in] unsigned int uiUpdateCount, [out] unsigned long *phSummaryInfo);
	HRESULT SummaryInfoGetPropertyCount([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hSummaryInfo,	[out] unsigned int *puiPropertyCount);
	HRESULT SummaryInfoSetProperty([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hSummaryInfo,[in] unsigned int uiProperty, [in] unsigned int uiDataType, [in] int iValue, [in] FILETIME *pftValue, [in, unique, string] const ichar* szValue); 
	HRESULT SummaryInfoGetProperty([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hSummaryInfo,[in] unsigned int uiProperty, [out] unsigned int *puiDataType, [out] int *piValue, [out] FILETIME *pftValue, [out, string, size_is(cchValueBuf)] ichar* szValueBuf, [in] unsigned long cchValueBuf, [out] unsigned long *pcchValueRes);
	HRESULT SummaryInfoPersist([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, unsigned long hSummaryInfo);
	HRESULT GetActiveDatabase([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hInstall, [out] unsigned long* phDatabase);
	HRESULT SetProperty([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hInstall, [in, unique, string] const ichar* szName, [in, unique, string] const ichar* szValue);
	HRESULT GetLanguage([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hInstall, [out] unsigned short* pLangId);
	HRESULT GetMode([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hInstall, [in] long eRunMode, [out] boolean* pfSet); 
	HRESULT SetMode([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hInstall, [in] long eRunMode, [in] boolean fState);
	HRESULT FormatRecord([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hInstall, [in] unsigned long hRecord, [out, string, size_is(cchResultBuf)] ichar* szResultBuf, [in] unsigned long cchResultBuf, [out] unsigned long *pcchResultRes);
	HRESULT DoAction([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hInstall, [in, unique, string] const ichar* szAction);    
	HRESULT Sequence([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hInstall, [in, unique, string] const ichar* szTable, int iSequenceMode);   
	HRESULT ProcessMessage([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hInstall, [in] long eMessageType, [in] unsigned long hRecord, [out] int* piRes);
	HRESULT EvaluateCondition([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hInstall, [in, unique, string] const ichar* szCondition, [out] int *piCondition);
	HRESULT GetFeatureState([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hInstall, [in, unique, string] const ichar* szFeature, [out] long *piInstalled, [out] long *piAction);
	HRESULT SetFeatureState([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hInstall, [in, unique, string] const ichar* szFeature, [in] long iState);
	HRESULT GetComponentState([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hInstall,[in, unique, string] const ichar* szComponent, [out] long *piInstalled, [out] long *piAction);
	HRESULT SetComponentState([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hInstall, [in, unique, string] const ichar* szComponent, [in] long iState);
	HRESULT GetFeatureCost([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hInstall, [in, unique, string] const ichar* szFeature, [in] int iCostTree, [in] long iState, [out] int *piCost);
	HRESULT SetInstallLevel([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hInstall, int iInstallLevel);
	HRESULT GetFeatureValidStates([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hInstall, [in, unique, string] const ichar* szFeature, [out] unsigned long *dwInstallStates);
	HRESULT DatabaseIsTablePersistent([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hDatabase, [in, unique, string] const ichar* szTableName, [out] int *piCondition);
	HRESULT ViewGetColumnInfo([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hView, [in] long eColumnInfo, [out] unsigned long *phRecord);
	HRESULT GetLastErrorRecord([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [out] unsigned long *phRecord);
	HRESULT GetSourcePath([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hInstall, [in, unique, string] const ichar* szFolder, [out, string, size_is(cchPathBuf)] ichar* szPathBuf, [in] unsigned long cchPathBuf, [out] unsigned long *pcchPathRes);
	HRESULT GetTargetPath([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hInstall, [in, unique, string] const ichar* szFolder, [out, string, size_is(cchPathBuf)] ichar* szPathBuf, [in] unsigned long cchPathBuf, [out] unsigned long *pcchPathRes); 
	HRESULT SetTargetPath([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hInstall, [in, unique, string] const ichar* szFolder, [in, unique, string] const ichar* szFolderPath);
	HRESULT VerifyDiskSpace([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hInstall);
	HRESULT SetFeatureAttributes([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hInstall, [in, unique, string] const ichar* szFeature, [in] long iAttributes);
	HRESULT EnumComponentCosts([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [in] unsigned long hInstall, [in, unique, string] const ichar* szComponent, [in] unsigned long iIndex, [in] long iState, [out, string, size_is(cchDrive)] ichar* szDrive, [in] unsigned long cchDrive, [out] unsigned long* pcchDriveSize, [out] int *piCost, [out] int *piTempCost);

	HRESULT GetInstallerObject([in] const int icacContext, [in] const unsigned long dwThreadId, [in, size_is(cbCookie)] const unsigned char *rgchCookie, [in] const int cbCookie, [out] IDispatch** piDispatch);
}

cpp_quote("#endif // REMAPI_H")



