#include "idl_types.h"

/*
   http://support.microsoft.com/default.aspx?scid=KB;en-us;q159298
   Any UUID starting with:
   A4 - store
   F5 - directory
 */

[
  uuid("99e64010-b032-11d0-97a4-00c04fd6551d"),
  pointer_default(unique),
  version(3.0)
] interface exchange_store_admin3
{
	void ec_store_admin3_dummy();
}


[
  uuid("89742ace-a9ed-11cf-9c0c-08002be7ae86"),
  pointer_default(unique),
  version(2.0)
] interface exchange_store_admin2
{
	void ec_store_admin2_dummy();
}

[
  uuid("a4f1db00-ca47-1067-b31e-00dd010662da"),
  pointer_default(unique),
  version(1.0)
] interface exchange_store_admin1
{
	void ec_store_admin1_dummy();
}


[
  uuid("1544f5e0-613c-11d1-93df-00c04fd7bd09"),
  pointer_default(unique),
  version(1.0),
  helpstring("Exchange 2003 Directory Request For Response")
] interface exchange_ds_rfr
{
	/*****************/
	/* Function 0x00 */
	void RfrGetNewDSA();

	/*****************/
	/* Function 0x01 */
	void RfrGetFQDNFromLegacyDN();
}

[
  uuid("f930c514-1215-11d3-99a5-00a0c9b61b04"),
  helpstring("System Attendant Cluster Interface"),
  pointer_default(unique),
  version(1.0)
] interface exchange_sysatt_cluster
{
	void sysatt_cluster_dummy();
}

/*
[83d72bf0-0d89-11ce-b13f-00aa003bac6c] MS Exchange
System Attendant Private Interface
*/

[
  uuid("469d6ec0-0d87-11ce-b13f-00aa003bac6c"),
  pointer_default(unique),
  helpstring("Exchange 5.5 System Attendant Request for Response")
] interface exchange_system_attendant
{
	void sysatt_dummy();
}

[
  uuid("9e8ee830-4559-11ce-979b-00aa005ffebe"),
  pointer_default(unique),
  version(2.0),
  helpstring("Exchange 5.5 MTA")
] interface exchange_mta
{
	/*****************/
	/* Function 0x00 */
	void MtaBind();

	/*****************/
	/* Function 0x01 */
	void MtaBindAck();
}

[
  uuid("f5cc59b4-4264-101a-8c59-08002b2f8426"),
  pointer_default(unique),
  version(21.0),
  helpstring("Exchange 5.5 DRS")
] interface exchange_drs
{
	/*****************/
	/* Function 0x00 */
	void ds_abandon();

	/*****************/
	/* Function 0x01 */
	void ds_add_entry();

	void ds_bind();
	void ds_compare();
	void ds_list();
	void ds_modify_entry();
	void ds_modify_rdn();
	void ds_read();
	void ds_receive_result();
	void ds_remove_entry();
	void ds_search();
	void ds_unbind();
	void ds_wait();
	void dra_replica_add();
	void dra_replica_delete();
	void dra_replica_synchronize();
	void dra_reference_update();
	void dra_authorize_replica();
	void dra_unauthorize_replica();
	void dra_adopt();
	void dra_set_status();
	void dra_modify_entry();
	void dra_delete_subref();
}

[
  uuid("f5cc5a7c-4264-101a-8c59-08002b2f8426"),
  version(21.0),
  pointer_default(unique),
  helpstring("Exchange 5.5 XDS")
] interface exchange_xds
{
	void xds_dummy();
}

[
  uuid("38a94e72-a9bc-11d2-8faf-00c04fa378ff"),
  pointer_default(unique),
  version(1.0)
] interface exchange_mta_qadmin
{
	void exchange_mta_qadmin();
}


[
  uuid("0e4a0156-dd5d-11d2-8c2f-00c04fb6bcde"),
  pointer_default(unique),
  version(1.0)
] interface exchange_store_information
{
	void exchange_store_information_dummy();
}

[
  uuid("f5cc5a18-4264-101a-8c59-08002b2f8426"),
  pointer_default(unique),
  version(56.0),
  helpstring("Exchange 5.5 Name Service Provider")
] interface exchange_nsp
{
	void NspiBind();
	void NspiUnbind();
	void NspiUpdateStat();
	void NspiQueryRows();
	void NspiSeekEntries();
	void NspiGetMatches();
	void NspiResortRestriction();
	void NspiDNToEph();
	void NspiGetPropList();
	void NspiGetProps();
	void NspiCompareDNTs();
	void NspiModProps();
	void NspiGetHierarchyInfo();
	void NspiGetTemplateInfo();
	void NspiModLInkAtt();
	void NspiDeleteEntries();
	void NspiQueryColumns();
	void NspiGetNamesFromIDs();
	void NspiGetIDsFromNames();
	void NspiResolveNames();
	void NspiResolveNamesW();
}

[
  uuid("a4f1db00-ca47-1067-b31f-00dd010662da"),
  pointer_default(unique),
  version(0.81),
  helpstring("Exchange 5.5 EMSMDB")
] interface exchange_emsmdb
{
	/*****************/
	/* Function 0x00 */
	void EcDoConnect();

	/*****************/
	/* Function 0x01 */
	void EcDoDisconnect();

	/*****************/
	/* Function 0x02 */
	typedef struct {
		uint32 max_data;
		uint32 unknown;
		[subcontext(4),obfuscation(0xA5),flag(NDR_REMAINING)] DATA_BLOB data;
	} EcDoRpcBlob;

	void EcDoRpc(
		[in,out,ref]	policy_handle	*handle,
		[in,out]	EcDoRpcBlob	data,
		[in,out,ref]	uint16		*length,
		[in]		uint16		size
		);

	/*****************/
	/* Function 0x03 */
	void EcGetMoreRpc();

	/*****************/
	/* Function 0x04 */
	void EcRRegisterPushNotification();

	/*****************/
	/* Function 0x05 */
	void EcRUnregisterPushNotification();

	/*****************/
	/* Function 0x06 */
	void EcDummyRpc();

	/*****************/
	/* Function 0x07 */
	void EcRGetDCName();

	/*****************/
	/* Function 0x08 */
	void EcRNetGetDCName();

	/*****************/
	/* Function 0x09 */
	void EcDoRpcExt();
}

[
  uuid("c840a7dc-42c0-1a10-b4b9-08002b2fe182"),
  pointer_default(unique),
  helpstring("Unknown")
] interface exchange_unknown
{
	void unknown_dummy();
}