///////////////////////////////////////////////////////////////////////////
//
// Copyright(C) 1997-2000 Microsoft Corporation all rights reserved.
//
// Module:      sdoiaspriv.idl
//
// Project:     Everest
//
// Description: IAS Server Data Object - Private MIDL 
//
// Author:      TLP 4/21/98
//
///////////////////////////////////////////////////////////////////////////
#ifndef __SDOIASPRIV_IDL__
#define __SDOIASPRIV_IDL__

// This file will be processed by the MIDL tool to
// produce the type library (sdoias.tlb) and marshalling code.

import "oaidl.idl";
import "ocidl.idl";

// -----------------------------
// Include Public SDO Interfaces
// -----------------------------
import "sdoias.idl"; 
// -----------------------
// Include IAS Data Stores
// -----------------------
import "datastore2.idl";

//////////////////////////////////////////////////////////////////////////
// ISdoArchive - RecordSet based data store
//////////////////////////////////////////////////////////////////////////
[
	object,
	uuid(B5741A11-96DD-11d1-BF3F-000000000000),
	pointer_default(unique)
]
interface ISdoDummy : IUnknown
{
	HRESULT Dummy(void);
};
	
//////////////////////////////////////////////////////////////////////////
// ISdoPropertyInfo - Used to obtain SDO Property Information
//////////////////////////////////////////////////////////////////////////
[
	object,
	uuid(EFF64A84-46C1-11d2-A8C2-00AA00A71DCA),
	dual,
	pointer_default(unique)
]
interface ISdoPropertyInfo : IDispatch 
{
	[propget, id(1)]
	HRESULT Name ([out, retval] BSTR* Name);

	[propget, id(2)]
	HRESULT Id ([out, retval] BSTR* Id);

	[propget, id(3)]
	HRESULT Type ([out, retval] LONG* Type);

	[propget, id(4)]
	HRESULT Alias ([out, retval] LONG* Alias);

	[propget, id(5)]
	HRESULT Flags ([out, retval] LONG* Flags);

	[propget, id(6)]
	HRESULT DisplayName ([out, retval] BSTR* DisplayName);

	[id(7)]
	HRESULT HasMinLength ([out, retval] VARIANT_BOOL* pBool);

	[propget, id(8)]
	HRESULT MinLength ([out, retval] LONG* length);

	[id(9)]
	HRESULT HasMaxLength ([out, retval] VARIANT_BOOL* pBool);

	[propget, id(10)]
	HRESULT MaxLength ([out, retval] LONG* length);

	[id(11)]
	HRESULT HasMinValue ([out, retval] VARIANT_BOOL* pBool);

	[propget, id(12)]
	HRESULT MinValue ([out, retval] VARIANT* value);

	[id(13)]
	HRESULT HasMaxValue ([out, retval] VARIANT_BOOL* pBool);

	[propget, id(14)]
	HRESULT MaxValue ([out, retval] VARIANT* value);

	[id(15)]
	HRESULT HasDefaultValue ([out, retval] VARIANT_BOOL* pBool);

	[propget, id(16)]
	HRESULT DefaultValue ([out, retval] VARIANT* value);

	[id(17)]
	HRESULT HasFormat ([out, retval] VARIANT_BOOL* pBool);

	[propget, id(18)]
	HRESULT Format ([out, retval] BSTR* Format);

	[id(19)]
	HRESULT IsRequired ([out, retval] VARIANT_BOOL* pBool);

	[id(20)]
	HRESULT IsReadOnly ([out, retval] VARIANT_BOOL* pBool);

	[id(21)]
	HRESULT IsCollection ([out, retval] VARIANT_BOOL* pBool);

	[id(22)]
	HRESULT IsMultiValued ([out, retval] VARIANT_BOOL* pBool);
};

//////////////////////////////////////////////////////////////////////////
// ISdoClassInfo - SDO Schema Class Interface
//////////////////////////////////////////////////////////////////////////
[
	object,
	uuid(EFF64A83-46C1-11d2-A8C2-00AA00A71DCA),
	dual,
	pointer_default(unique)
]
interface ISdoClassInfo : IDispatch // IUnknown
{
	[propget, id(1)]
	HRESULT Id([out, retval] BSTR* Id);

	[id(2)]
	HRESULT GetProperty([in] LONG alias, [out, retval] IUnknown** ppPropertyInfo);

	[propget, id(3)]
	HRESULT RequiredPropertyCount([out, retval] LONG* count);

	[propget, id(4)]
	HRESULT RequiredProperties([out, retval] IUnknown** ppEnumVARIANT);

	[propget, id(5)]
	HRESULT OptionalPropertyCount([out, retval] LONG* count);

	[propget, id(6)]
	HRESULT OptionalProperties([out, retval] IUnknown** ppEnumVARIANT);
};


//////////////////////////////////////////////////////////////////////////
// ISdoSchema - SDO Schema Functions
//////////////////////////////////////////////////////////////////////////
[
	object,
	uuid(7ECBFDCF-4759-11d2-8EC9-00C04FC2F519),
	dual,
	pointer_default(unique)
]
interface ISdoSchema : IDispatch // IUnknown
{
	[id(1)]
	HRESULT GetVersion([out] BSTR* Version);

	[id(2)]
	HRESULT GetClass([in] BSTR classId, [out, retval] IUnknown** ppSdoClassInfo);

	[id(3)]
	HRESULT GetProperty([in] BSTR propertyId, [out, retval] IUnknown** ppSdoPropertyInfo);
};


//////////////////////////////////////////////////////////////////////////
// ISdoService - Used by SCM dll to control the behavior of the IAS core.
//////////////////////////////////////////////////////////////////////////

[
	object,
	uuid(7A968236-9D6D-11d1-BF5D-000000000000),
	dual,
	pointer_default(unique)
]
interface ISdoService : IDispatch //IUnknown
{
	[id(1)]
	HRESULT InitializeService([in] SERVICE_TYPE eServiceType);

	[id(2)]
	HRESULT ShutdownService([in] SERVICE_TYPE eServiceType);

	[id(3)]
	HRESULT StartService([in] SERVICE_TYPE eServiceType);

	[id(4)]
	HRESULT StopService([in] SERVICE_TYPE eServiceType);

	[id(5)]
	HRESULT ConfigureService ([in] SERVICE_TYPE eServiceType);
};


//////////////////////////////////////////////////////////////////////////////
// Type Library
//////////////////////////////////////////////////////////////////////////////
[
	uuid(56BC53D1-96DB-11D1-BF3F-000000000000),
	version(1.0),
    helpstring("Private SDO 1.0 Type Library"),
	hidden
]
library SDOIASLibPrivate
{
    importlib("stdole2.tlb");
	importlib("sdoias.tlb");

	//////////////////////////////////////////////////////////////////////////
	//                     Service SDO
	//////////////////////////////////////////////////////////////////////////
	[
		uuid(BC94D813-4D7F-11d2-A8C9-00AA00A71DCA),
		// Don't let an automation controller see this class
		hidden,
		restricted
	]
	coclass SdoService
	{
		[default] interface ISdoService;
	};
};

#endif // __SDOIASPRIV_IDL__
