cpp_quote("/*++")
cpp_quote("                                                                                ")
cpp_quote("Copyright (c) 1997-2001 Microsoft Corporation")
cpp_quote("                                                                                ")
cpp_quote("Module Name: iwamreg.h")
cpp_quote("                                                                                ")
cpp_quote("    WAM (Web Application Manager) Interfaces")
cpp_quote("                                                                                ")
cpp_quote ("--*/")

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

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

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

cpp_quote("#ifndef __WAMREG_IADM__IID")
cpp_quote("#define __WAMREG_IADM__IID")

cpp_quote("DEFINE_GUID(IID_IWamAdmin, 0x29822AB7, 0xF302, 0x11D0, 0x99, 0x53, 0x00, 0xC0, 0x4F, 0xD9, 0x19, 0xC1);")
cpp_quote("DEFINE_GUID(IID_IWamAdmin2, 0x29822AB8, 0xF302, 0x11D0, 0x99, 0x53, 0x00, 0xC0, 0x4F, 0xD9, 0x19, 0xC1);") 
cpp_quote("DEFINE_GUID(IID_IIISApplicationAdmin, 0x7C4E1804, 0xE342, 0x483D, 0xA4, 0x3E, 0xA8, 0x50, 0xCF, 0xCC, 0x8D, 0x18);")

cpp_quote("DEFINE_GUID(LIBID_WAMREGLib, 0x29822AA8, 0xF302, 0x11D0, 0x99, 0x53, 0x00, 0xC0, 0x4F, 0xD9, 0x19, 0xC1);")

cpp_quote("DEFINE_GUID(CLSID_WamAdmin, 0x61738644, 0xF196, 0x11D0, 0x99, 0x53, 0x00, 0xC0, 0x4F, 0xD9, 0x19, 0xC1);")

cpp_quote("#endif //__WAMREG_IADM__IID")
cpp_quote("#define APPSTATUS_STOPPED	0")
cpp_quote("#define APPSTATUS_RUNNING	1")
cpp_quote("#define APPSTATUS_NOTDEFINED	2")

typedef enum {
		eAppRunInProc,
		eAppRunOutProcIsolated,
		eAppRunOutProcInDefaultPool
	} EAppMode;
			
	[
	
		uuid(29822AB7-F302-11D0-9953-00C04FD919C1),
	
		helpstring("IWamAdmin Interface"),
		pointer_default(unique)
	]
	interface IWamAdmin : IUnknown
	{
		[helpstring("method Create")] HRESULT AppCreate([in, unique, string] LPCWSTR szMDPath, [in] BOOL fInProc);
		[helpstring("method Delete")] HRESULT AppDelete([in, unique, string] LPCWSTR szMDPath, [in] BOOL fRecursive);
		[helpstring("method UnLoad")] HRESULT AppUnLoad([in, unique, string] LPCWSTR szMDPath, [in] BOOL fRecursive);
		[helpstring("method GetStatus")] HRESULT AppGetStatus([in, unique, string] LPCWSTR szMDPath, [out] DWORD *pdwAppStatus);
		[helpstring("method DeleteRecoverable")] HRESULT AppDeleteRecoverable([in, unique, string] LPCWSTR szMDPath, [in] BOOL fRecursive);
		[helpstring("method Recover")] HRESULT AppRecover([in, unique, string] LPCWSTR szMDPath, [in] BOOL fRecursive);
	}

	[
	
		uuid(29822AB8-F302-11D0-9953-00C04FD919C1),
	
		helpstring("IWamAdmin2 Interface"),
		pointer_default(unique)
	]
	interface IWamAdmin2 : IWamAdmin
	{
		[helpstring("method AppCreate2")] HRESULT AppCreate2([in, unique, string] LPCWSTR szMDPath,
															[in] DWORD dwAppMode
															);
	}

    [
        uuid(7C4E1804-E342-483D-A43E-A850CFCC8D18),

        helpstring("IIISApplicationAdmin Interface"),
        pointer_default(unique)
    ]
    interface IIISApplicationAdmin : IUnknown
    {
        [helpstring("method Create")] HRESULT CreateApplication([in, unique, string] LPCWSTR szMDPath,
                                                                [in] DWORD dwAppMode,
                                                                [in, unique, string] LPCWSTR szAppPoolId,
                                                                [in] BOOL fCreatePool
                                                                );

        [helpstring("method Delete")] HRESULT DeleteApplication([in, unique, string] LPCWSTR szMDPath,
                                                                [in] BOOL fRecursive
                                                                );

        [helpstring("method CreateApplicationPool")] HRESULT CreateApplicationPool([in, unique, string] LPCWSTR szPool);

        [helpstring("method DeteleApplicationPool")] HRESULT DeleteApplicationPool([in, unique, string] LPCWSTR szPool);

        [helpstring("method EnumerateApplicationsInPool")] HRESULT EnumerateApplicationsInPool([in, unique, string] LPCWSTR szPool,
                                                                                               [out] BSTR* bstrBuffer
                                                                                               );
        
        [helpstring("method RecycleApplicationPool")] HRESULT RecycleApplicationPool([in, unique, string] LPCWSTR szPool);

        [helpstring("method GetProcessMode")] HRESULT GetProcessMode([out] DWORD * pdwMode);


    }

[
	uuid(29822AA8-F302-11D0-9953-00C04FD919C1),
	version(1.0),
	helpstring("wamreg 1.0 Type Library")
]
library WAMREGLib
{
	importlib("stdole2.tlb");

	[
		uuid(61738644-F196-11D0-9953-00C04FD919C1),
		helpstring("WamAdmin Class")
	]
	coclass WamAdmin
	{
		[default] interface IWamAdmin;
	};
};

