//-----------------------------------------------------------------------------
// File:			msdasc.idl
//
// Copyright:		Copyright (c) Microsoft Corporation          
//
// Contents: 		IDL source for MSDASC.dll
//
// Comments: 		This file will be processed by the MIDL tool to
//					produce the type library (acm.tlb) and marshalling code.
//
//-----------------------------------------------------------------------------

cpp_quote("//-----------------------------------------------------------------------------")
cpp_quote("// File:				.C or .H file generated by msdasc.idl ")
cpp_quote("//")
cpp_quote("// Copyright:		Copyright (c) 1998-1999 Microsoft Corporation")
cpp_quote("//")
cpp_quote("// Contents: 		.C or .H file generated by msdasc.idl")
cpp_quote("//")
cpp_quote("// Comments: 		")
cpp_quote("//")
cpp_quote("//-----------------------------------------------------------------------------")

import "oaidl.idl";
import "ocidl.idl";
cpp_quote("")
cpp_quote("#ifdef _WIN64")
cpp_quote("")
cpp_quote("typedef LONGLONG			COMPATIBLE_LONG;")
cpp_quote("")
cpp_quote("#else")
cpp_quote("")
typedef LONG			COMPATIBLE_LONG;
cpp_quote("#endif	// _WIN64")

#ifndef _PROXY_STUB_BUILDER

// For DSL... 
//
import "oledb.idl";

typedef enum tagEBindInfoOptions
{
    BIO_BINDER = 0x00000001
} EBindInfoOptions;


//
// Additional STGM flags for OLEDB for documents
//

// STGM_COLLECTION: Create a collection rather than a document.
// This flag is valid only if the STGM_CREATE is set.
//
cpp_quote("#define STGM_COLLECTION		0x00002000L")

// STGM_OUTPUT: Open the executed content, and not underlying source file.
// 
cpp_quote("#define STGM_OUTPUT			0x00008000L")

// STGM_OPEN: when specified with STGM_WRITE or STGM_READWRITE this flag
// indicates that the resource should be opened if it already exists
//
cpp_quote("#define STGM_OPEN			0x80000000L")

// STGM_RECURSIVE: Any locks acquired with any SHARE_DENY_* flags
// apply to all subcontainers as well if the resource is a collection. If
// the resource is not a collection, STGM_RECURSIVE has no effect.
//
cpp_quote("#define STGM_RECURSIVE		0x01000000L")

// STGM_STRICTOPEN - open but fail if does not exist
//
cpp_quote("#define STGM_STRICTOPEN		0x40000000L")


[
	uuid(06210E88-01F5-11D1-B512-0080C781C384),
	helpstring("IService Interface"),
	pointer_default(unique)
]
interface IService : IUnknown
{
	[local]
	HRESULT InvokeService(
		[in] IUnknown *	pUnkInner);
};


// Type definitions
//

typedef DWORD DBPROMPTOPTIONS;

typedef enum tagDBPROMPTOPTIONSENUM
{
	DBPROMPTOPTIONS_NONE						= 0x00,		
	DBPROMPTOPTIONS_WIZARDSHEET					= 0x01,
	DBPROMPTOPTIONS_PROPERTYSHEET				= 0x02,
	DBPROMPTOPTIONS_BROWSEONLY					= 0x08,
	DBPROMPTOPTIONS_DISABLE_PROVIDER_SELECTION	= 0x10,
	DBPROMPTOPTIONS_DISABLESAVEPASSWORD			= 0x20
} DBPROMPTOPTIONSENUM;


// IDBPromptInitialize
//

[
	object,
	uuid(2206CCB0-19C1-11D1-89E0-00C04FD7A829),
	helpstring("IDBPromptInitialize Interface"),
	pointer_default(unique),
	local,
	restricted
]
interface IDBPromptInitialize : IUnknown
{
	[helpstring("Method PromptDataSource"), local] 
	HRESULT PromptDataSource(

		[in] IUnknown *										pUnkOuter,
		[in] HWND											hWndParent,
		[in] DBPROMPTOPTIONS								dwPromptOptions, 
		[in] ULONG											cSourceTypeFilter,
		[in, size_is(cSourceTypeFilter)] DBSOURCETYPE *		rgSourceTypeFilter,
		[in] LPCOLESTR 										pwszszzProviderFilter, 
		[in] REFIID											riid, 
		[in, out, iid_is(riid)] IUnknown **					ppDataSource);

	[helpstring("Method PromptFileName")] 
	HRESULT  PromptFileName(

		[in] HWND				hWndParent,
		[in] DBPROMPTOPTIONS	dwPromptOptions,
		[in] LPCOLESTR			pwszInitialDirectory,
		[in] LPCOLESTR			pwszInitialFile,
		[out] LPOLESTR *		ppwszSelectedFile);
};

#endif	// _PROXY_STUB_BUILDER

// IDataInitialize
//

[
	object,
	uuid(2206CCB1-19C1-11D1-89E0-00C04FD7A829),
	helpstring("IDataInitialize Interface"),
	pointer_default(unique)
]
interface IDataInitialize : IUnknown
{
	[helpstring("Method GetDataSource")] 
	HRESULT GetDataSource(

		[in] IUnknown *					pUnkOuter, 
		[in] DWORD						dwClsCtx,
		[in, unique] LPCOLESTR			pwszInitializationString, 
		[in] REFIID						riid, 
		[in, out, iid_is(riid)] IUnknown **	ppDataSource);

	[helpstring("Method GetInitializationString")] 
	HRESULT GetInitializationString(

		[in] IUnknown *		pDataSource, 
		[in] boolean		fIncludePassword, 
		[out] LPOLESTR *	ppwszInitString);

	[helpstring("Method CreateDBInstance")] 
	HRESULT CreateDBInstance(

		[in] REFCLSID 					clsidProvider,
		[in] IUnknown *					pUnkOuter,
		[in] DWORD						dwClsCtx,
		[in, unique] LPOLESTR 			pwszReserved,
		[in] REFIID						riid,
		[out, iid_is(riid)]	IUnknown **	ppDataSource);

	[helpstring("Method CreateDBInstanceEx"), local]
	HRESULT CreateDBInstanceEx(

		[in] REFCLSID 						clsidProvider,
		[in] IUnknown *						pUnkOuter,
		[in] DWORD							dwClsCtx,
		[in, unique] LPOLESTR				pwszReserved,
		[in, unique] COSERVERINFO *			pServerInfo,
		[in] ULONG							cmq,
		[in, out, size_is(cmq)] MULTI_QI *	rgmqResults);

	[call_as(CreateDBInstanceEx)]
	HRESULT RemoteCreateDBInstanceEx(

		[in] REFCLSID 						clsidProvider,
		[in] IUnknown *						pUnkOuter,
		[in] DWORD							dwClsCtx,
		[in, unique] LPOLESTR				pwszReserved,
		[in, unique] COSERVERINFO *			pServerInfo,
		[in] ULONG							cmq,
		[in, size_is(,cmq)] const IID **	rgpIID,
		[out, size_is(,cmq)] IUnknown **	rgpItf,
		[out, size_is(cmq)] HRESULT *		rghr);

	[helpstring("Method LoadStringFromStorage")] 
	HRESULT  LoadStringFromStorage(

		[in, unique] LPCOLESTR		pwszFileName, 
		[out] LPOLESTR *			ppwszInitializationString);

	[helpstring("Method WriteStringToStorage")] 
	HRESULT  WriteStringToStorage(

		[in, unique] LPCOLESTR		pwszFileName, 
		[in, unique] LPCOLESTR		pwszInitializationString, 
		[in] DWORD					dwCreationDisposition);
};

// Service Components private DBPROPIDs
//

#ifndef _PROXY_STUB_BUILDER

// library MSDASC
//

[
	uuid(2206CEB0-19C1-11D1-89E0-00C04FD7A829),
	version(1.0),
	helpstring("Microsoft OLE DB Service Component 1.0 Type Library")
]
library MSDASC
{
	importlib("stdole32.tlb");
	importlib("stdole2.tlb");

	// Automation Interface (VB, etc.)
	//

	[
		object,
		uuid(2206CCB2-19C1-11D1-89E0-00C04FD7A829),
		dual,
		helpstring("Microsoft OLE DB Service Component Automation Interface"),
		pointer_default(unique)
	]
	interface IDataSourceLocator : IDispatch
	{
		//  HWND property
		//

		[propget, helpstring("Returns and sets the parent window.")]
		HRESULT hWnd([out, retval] COMPATIBLE_LONG * phwndParent); 
		[propput, helpstring("Returns and sets the parent window.")]
		HRESULT hWnd([in] COMPATIBLE_LONG hwndParent);


 
		// Displays the wizard interface.
		//

		[helpstring("PromptNew")] 
		HRESULT PromptNew(

			[out, retval] IDispatch **		ppADOConnection);

 
		// Displays the property sheet.
		//

		[helpstring("PromptEdit")] 
		HRESULT PromptEdit(

			[in, out] IDispatch **			ppADOConnection,
			[out, retval] VARIANT_BOOL *	pbSuccess);

	};


	// coclass DataLinks
	//

	[
		uuid(2206CDB2-19C1-11D1-89E0-00C04FD7A829),
		helpstring("Microsoft OLE DB Service Component Data Link")
	]
	coclass DataLinks
	{
		[default] interface IDataSourceLocator;		
		interface IDBPromptInitialize;
		interface IDataInitialize;
	}

	// coclass MSDAINITIALIZE
	//

	[
		uuid(2206CDB0-19C1-11D1-89E0-00C04FD7A829),
		helpstring("Microsoft OLE DB Service Component Initialization Component")
	]
	coclass MSDAINITIALIZE
	{
		[default] interface IDataInitialize;
	}

	[
		uuid(CCB4EC60-B9DC-11D1-AC80-00A0C9034873),
		helpstring("Persisted Datasource/Pooling Object")
	]
	coclass PDPO
	{
		[default] interface IPersistFile;
	}
	

/////////////////////////////////////////////////////////////// 
//
//Root Binder
//
/////////////////////////////////////////////////////////////// 
	importlib("stdole32.tlb");
	importlib("stdole2.tlb");

	[
		uuid(FF151822-B0BF-11D1-A80D-000000000000),
		helpstring("Microsoft OLE DB Root Binder")
	]
	coclass RootBinder
	{
        [default] interface IBindResource;
        interface IUnknown;
        interface ICreateRow;
		interface IRegisterProvider;
        interface IDBBinderProperties;
		interface IMarshal;
	};


}

#endif _PROXY_STUB_BUILDER
