// MsPwdMig.idl : IDL source for MsPwdMig.dll
//

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

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

	typedef enum pmErrorEnum
	{
		PM_E_EVERYONE_NOT_MEMBEROF_COMPATIBILITY_GROUP = 0x80040200,
		PM_E_EVERYONE_DOES_NOT_INCLUDE_ANONYMOUS       = 0x80040201,
		PM_E_HIGH_ENCRYPTION_NOT_INSTALLED             = 0x80040202,
		PM_E_GENERATE_SESSION_KEY_FAILED               = 0x80040203,
		PM_E_GENERATE_SESSION_PASSWORD_FAILED          = 0x80040204,
		PM_E_PASSWORD_MIGRATION_NOT_ENABLED            = 0x80040205,
		PM_E_ENCRYPTION_KEYS_DO_NOT_MATCH              = 0x80040206,
		PM_E_PASSWORD_MIGRATION_NOT_RUNNING            = 0x80040207,
		PM_E_SESSION_NOT_ESTABLISHED                   = 0x80040208,
		PM_E_NO_ENCRYPTION_KEY_FOR_DOMAIN              = 0x80040209,
	}
	pmErrorEnum;

	[
		object,
		uuid(EB134929-B2B4-4060-94A7-12BC54B278E1),
		dual,
		helpstring("IPasswordMigration Interface"),
		pointer_default(unique)
	]
	interface IPasswordMigration : IDispatch
	{
		[id(1), helpstring("method EstablishSession")]
		HRESULT EstablishSession([in] BSTR bstrSourceServer, [in] BSTR bstrTargetServer);

		[id(2), helpstring("method CopyPassword")]
		HRESULT CopyPassword([in] BSTR bstrSourceAccount, [in] BSTR bstrTargetAccount, [in] BSTR bstrTargetPassword);

		[id(3), helpstring("method GenerateKey")]
		HRESULT GenerateKey([in] BSTR bstrSourceDomainFlatName, [in] BSTR bstrKeyFilePath, [in] BSTR bstrPassword);
	};

[
	uuid(C57D771B-04D7-44BF-96B3-4B21264B80F9),
	version(1.0),
	helpstring("Microsoft Password Migration 1.0")
]
library MsPwdMig
{
	importlib("stdole32.tlb");
	importlib("stdole2.tlb");

	enum pmErrorEnum;

	[
		uuid(2B6CEACD-43D9-4400-B654-E8F1E0437E1B),
		helpstring("PasswordMigration Class")
	]
	coclass PasswordMigration
	{
		[default] interface IPasswordMigration;
	};
};
