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

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

import "oaidl.idl";
import "ocidl.idl";
	[
		object,
		uuid(50B5F461-FDC2-40D4-B2C5-1C2EE0CDA190),
		dual,
		helpstring("ITSDiagnosis Interface"),
		pointer_default(unique)
	]
	interface ITSDiagnosis : IDispatch
	{
		[propget, id(4), helpstring("property TestCount")] HRESULT TestCount([out, retval] long *pVal);
		[propget, id(5), helpstring("property TestDescription")] HRESULT TestDescription(int i, [out, retval] BSTR *pVal);
		[propget, id(6), helpstring("property TestApplicable")] HRESULT TestApplicable(int i, [out, retval] BOOL *pVal);
		[id(7), helpstring("method RunTest")] HRESULT RunTest(int i);
		[propget, id(8), helpstring("property TestResultString")] HRESULT TestResultString([out, retval] BSTR *pVal);
		[propget, id(9), helpstring("property TestResult")] HRESULT TestResult([out, retval] long *pVal);
		[propget, id(10), helpstring("property TestDetails")] HRESULT TestDetails(int i, [out, retval] BSTR *pVal);
		[propput, id(11), helpstring("property TestType")] HRESULT TestType([in] VARIANT newVal);
		[id(12), helpstring("method ExecuteIt")] HRESULT ExecuteIt(BSTR strCommand);
		[propput, id(13), helpstring("property TestType")] HRESULT RemoteMachineName([in] BSTR newVal);
		[propget, id(14), helpstring("property SuiteApplicable")] HRESULT SuiteApplicable (DWORD dwSuite, [out, retval] BOOL *pVal);
		[propget, id(15), helpstring("property SuiteErrorText")] HRESULT SuiteErrorText (DWORD dwSuite, [out, retval] BSTR  *pVal);
		
	};

	[
		object,
		uuid(0C3E9E25-E3E8-4400-9A66-2B6CFC57F99B),
		dual,
		helpstring("ITSDiagnosis2 Interface"),
		pointer_default(unique)
	]
	interface ITSDiagnosis2 : IDispatch
	{
		[id(4), helpstring("method ExecuteCommand")]				HRESULT ExecuteCommand		(BSTR strCommand);
		[propput, id(5), helpstring("property MachineName")]		HRESULT MachineName			([in] BSTR newVal);
		[propget, id(6), helpstring("property Suites")]				HRESULT Suites				([out, retval] VARIANT *pVal);
	};

	[
		object,
		dual,
		uuid(5387486d-3adb-4796-8fc1-848dc0568b4a),
		helpstring("ITestSuites Interface"),
		// noncreatable,
		pointer_default(unique)
	]
	interface ITestSuites : IDispatch
	{
		/* to support this collection */
		[propget, id(4), helpstring("property Count")]					HRESULT Count		([out, retval] long *pVal);
		[propget, id(DISPID_NEWENUM), helpstring("property _NewEnum")]	HRESULT _NewEnum	([out, retval] LPUNKNOWN *pVal);
		[propget, id(DISPID_VALUE), helpstring("property Item")]		HRESULT Item		([in] VARIANT Index, [out, retval] VARIANT *pVal);
	}

	[
		object,
		dual,
		uuid(4ab0cce2-72e0-4f7b-9479-031e307db801),
		helpstring("ITestSuite Interface"),
		// noncreatable,
		pointer_default(unique)
	]
	interface ITestSuite : IDispatch
	{
		[propget, id(4), helpstring("property Name")]					HRESULT Name		([out, retval] BSTR  *pVal);
		[propget, id(5), helpstring("property Description")]			HRESULT Description ([out, retval] BSTR  *pVal);
		[propget, id(6), helpstring("property IsApplicable")]			HRESULT IsApplicable([out, retval] BOOL *pVal);
		[propget, id(7), helpstring("property WhyNotApplicable")]		HRESULT WhyNotApplicable ([out, retval] BSTR  *pVal);
		/* to support this collection */
		[propget, id(8), helpstring("property Count")]					HRESULT Count		([out, retval] long *pVal);
		[propget, id(DISPID_NEWENUM), helpstring("property _NewEnum")]	HRESULT _NewEnum	([out, retval] LPUNKNOWN *pVal);
		[propget, id(DISPID_VALUE), helpstring("property Item")]		HRESULT Item		([in] VARIANT Index, [out, retval] VARIANT *pVal);
	}

	[
		object,
		dual,
		uuid(8c148023-cb9f-4b1d-98e7-a912e6837b2c),
		helpstring("ITest Interface"),
		// noncreatable,
		pointer_default(unique)
	]
	interface ITest : IDispatch
	{
		[propget, id(4), helpstring("property Name")]					HRESULT Name		([out, retval] BSTR  *pVal);
		[propget, id(5), helpstring("property Description")]			HRESULT Description ([out, retval] BSTR  *pVal);
		[propget, id(6), helpstring("property IsApplicable")]			HRESULT IsApplicable([out, retval] BOOL *pVal);
		[propget, id(7), helpstring("property WhyNotApplicable")]		HRESULT WhyNotApplicable ([out, retval] BSTR  *pVal);
		[id(8), helpstring("method Execute")]							HRESULT Execute		();
		[propget, id(9), helpstring("property Result")]					HRESULT Result		([out, retval] long *pVal);
		[propget, id(10), helpstring("property ResultString")]			HRESULT ResultString([out, retval] BSTR *pVal);
		[propget, id(11), helpstring("property Details")]				HRESULT ResultDetails([out, retval] BSTR *pVal);
	}

[
	uuid(324E5B9A-7AA4-4369-BECF-69FC85EC9F2D),
	version(1.0),
	helpstring("TSDiag 1.0 Type Library")
]
library TSDIAGLib
{
	importlib("stdole32.tlb");
	importlib("stdole2.tlb");
	

	[
		uuid(4B8F9150-F2CE-4168-8391-73D31E2DB6C3),
		helpstring("TSDiagnosis Class")
	]
	coclass TSDiagnosis
	{
		[default] interface ITSDiagnosis2;
		interface ITSDiagnosis;
	};

	[
		uuid(67e395dd-e0b5-4375-948a-dfc3757415fa),
		helpstring("TestSuites Class"),
		noncreatable
	]
	coclass TestSuites
	{
		[default] interface ITestSuites;
	}

	[
		uuid(378c7db0-071a-4f08-8745-b0e56a7d3cde),
		helpstring("TestSuite Class"),
		noncreatable
	]
	coclass TestSuite
	{
		[default] interface ITestSuite;
	}

	[
		uuid(8e86e039-f244-4ee1-9374-0f25894ad369),
		helpstring("Test Class"),
		noncreatable
	]
	coclass Test
	{
		[default] interface ITest;
	}

		
};
