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

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

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


//	forward interface declarations
interface IFaxSender;
interface IFaxDevice;
interface IFaxDevices;
interface IFaxFolders;
interface IFaxActivity;
interface IFaxSecurity;
interface IFaxRecipient;
interface IFaxDeviceIds;
interface IFaxRecipients;
interface IFaxIncomingJob;
interface IFaxOutgoingJob;
interface IFaxIncomingJobs;
interface IFaxEventLogging;
interface IFaxOutgoingJobs;
interface IFaxIncomingQueue;
interface IFaxOutgoingQueue;
interface IFaxReceiptOptions;
interface IFaxInboundRouting;
interface IFaxLoggingOptions;
interface IFaxDeviceProvider;
interface IFaxOutgoingArchive;
interface IFaxIncomingArchive;
interface IFaxIncomingMessage;
interface IFaxActivityLogging;
interface IFaxDeviceProviders;
interface IFaxOutboundRouting;
interface IFaxOutgoingMessage;
interface IFaxOutboundRoutingRule;
interface IFaxOutboundRoutingGroup;
interface IFaxInboundRoutingMethod;
interface IFaxOutboundRoutingRules;
interface IFaxOutboundRoutingGroups;
interface IFaxInboundRoutingMethods;
interface IFaxIncomingMessageIterator;
interface IFaxInboundRoutingExtension;
interface IFaxOutgoingMessageIterator;
interface IFaxInboundRoutingExtensions;

//	
//  Internal COM's project definion
//
const long prv_DEFAULT_PREFETCH_SIZE = 100;

	[
		object,
		uuid(8B86F485-FD7F-4824-886B-40C5CAA617CC),
		dual,
		helpstring("IFaxJobStatus interface"),
		pointer_default(unique)
	]
	interface IFaxJobStatus : IDispatch
	{
		typedef enum FAX_JOB_STATUS_ENUM
		{
			fjsPENDING			= 0x00000001,
			fjsINPROGRESS		= 0x00000002,
            fjsFAILED           = 0x00000008,
			fjsPAUSED			= 0x00000010,
			fjsNOLINE			= 0x00000020,
			fjsRETRYING			= 0x00000040,
			fjsRETRIES_EXCEEDED	= 0x00000080,
			fjsCOMPLETED		= 0x00000100,
			fjsCANCELED			= 0x00000200,
			fjsCANCELING		= 0x00000400,
			fjsROUTING			= 0x00000800
		} FAX_JOB_STATUS_ENUM;

		typedef enum FAX_JOB_EXTENDED_STATUS_ENUM
		{
			fjesNONE,
			fjesDISCONNECTED,
			fjesINITIALIZING,
			fjesDIALING,
			fjesTRANSMITTING,
			fjesANSWERED,
			fjesRECEIVING,
			fjesLINE_UNAVAILABLE,
			fjesBUSY,
			fjesNO_ANSWER,
			fjesBAD_ADDRESS,
			fjesNO_DIAL_TONE,
			fjesFATAL_ERROR,
			fjesCALL_DELAYED,
			fjesCALL_BLACKLISTED,
			fjesNOT_FAX_CALL,
			fjesPARTIALLY_RECEIVED,
			fjesHANDLED,
            fjesCALL_COMPLETED,
            fjesCALL_ABORTED,
			fjesPROPRIETARY = 0x01000000
		} FAX_JOB_EXTENDED_STATUS_ENUM;

		typedef enum FAX_JOB_OPERATIONS_ENUM
		{
			fjoVIEW				= 0x0001,
			fjoPAUSE			= 0x0002,
			fjoRESUME			= 0x0004,
			fjoRESTART			= 0x0008,
			fjoDELETE			= 0x0010,
			fjoRECIPIENT_INFO	= 0x0020,
			fjoSENDER_INFO		= 0x0040
		} FAX_JOB_OPERATIONS_ENUM;

		typedef enum FAX_JOB_TYPE_ENUM
		{
			fjtSEND,
			fjtRECEIVE,
			fjtROUTING
		} FAX_JOB_TYPE_ENUM;

		[propget, id(1), helpstring("Current queue status of the job, a bit-wise combination of FAX_JOB_STATUS values")] 
			HRESULT Status([out, retval] FAX_JOB_STATUS_ENUM *pStatus);
		[propget, id(2), helpstring("Total number of pages")] 
			HRESULT Pages([out, retval] long *plPages);
		[propget, id(3), helpstring("Size in bytes of TIFF file")] 
			HRESULT Size([out, retval] long *plSize);
		[propget, id(4), helpstring("Page currently in transmision")] 
			HRESULT CurrentPage([out, retval] long *plCurrentPage);
		[propget, id(5), helpstring("Device ID of device that transmits the job")] 
			HRESULT DeviceId([out, retval] long *plDeviceId);
		[propget, id(6), helpstring("Called Station ID")] 
			HRESULT CSID([out, retval] BSTR *pbstrCSID);
		[propget, id(7), helpstring("Transmitting Station ID")] 
			HRESULT TSID([out, retval] BSTR *pbstrTSID);
		[propget, id(8), helpstring("Code of the job's extended status")] 
			HRESULT ExtendedStatusCode([out, retval] FAX_JOB_EXTENDED_STATUS_ENUM *pExtendedStatusCode);
		[propget, id(9), helpstring("Extended status description")] 
			HRESULT ExtendedStatus([out, retval] BSTR *pbstrExtendedStatus);
		[propget, id(10), helpstring("Available operations, a bit-wise combination of FAX_JOB_OPERATIONS values")] 
			HRESULT AvailableOperations([out, retval] FAX_JOB_OPERATIONS_ENUM *pAvailableOperations);
		[propget, id(11), helpstring("Number of failed transmission retries")] 
			HRESULT Retries([out, retval] long *plRetries);
		[propget, id(12), helpstring("Job type")] 
			HRESULT JobType([out, retval] FAX_JOB_TYPE_ENUM *pJobType);
		[propget, id(13), helpstring("The time the fax job is scheduled to be transmitted")] 
			HRESULT ScheduledTime([out, retval] DATE *pdateScheduledTime);
		[propget, id(14), helpstring("The time the fax job started its transmission")] 
			HRESULT TransmissionStart([out, retval] DATE *pdateTransmissionStart);
		[propget, id(15), helpstring("The time the fax job finished its transmission")] 
			HRESULT TransmissionEnd([out, retval] DATE *pdateTransmissionEnd);
		[propget, id(16), helpstring("Caller ID")] 
			HRESULT CallerId([out, retval] BSTR *pbstrCallerId);
		[propget, id(17), helpstring("Routing information")] 
			HRESULT RoutingInformation([out, retval] BSTR *pbstrRoutingInformation);
	};

	[
		object,
		uuid(475B6469-90A5-4878-A577-17A86E8E3462),
		dual,
		helpstring("IFaxServer interface"),
		pointer_default(unique),
		nonextensible
	]
	interface IFaxServer : IDispatch
	{
		typedef enum FAX_SERVER_EVENTS_TYPE_ENUM
		{
			fsetNONE			 = 0x0000,
			fsetIN_QUEUE         = 0x0001,
			fsetOUT_QUEUE        = 0x0002,
			fsetCONFIG           = 0x0004,
			fsetACTIVITY         = 0x0008,
			fsetQUEUE_STATE      = 0x0010,
			fsetIN_ARCHIVE       = 0x0020,
			fsetOUT_ARCHIVE      = 0x0040,
			fsetFXSSVC_ENDED     = 0x0080,
			fsetDEVICE_STATUS    = 0x0100,
			fsetINCOMING_CALL    = 0x0200
		} FAX_SERVER_EVENTS_TYPE_ENUM;

	    typedef enum FAX_SERVER_APIVERSION_ENUM 
	    {
		    fsAPI_VERSION_0 = 0x00000000,
            fsAPI_VERSION_1 = 0x00010000 
	    } FAX_SERVER_APIVERSION_ENUM;

		[id(1), helpstring("Connect to the fax server")] 
			HRESULT Connect([in] BSTR bstrServerName);
		[propget, id(2), helpstring("The name of the fax server")] 
			HRESULT ServerName([out, retval] BSTR *pbstrServerName);
		[id(3), helpstring("The collection of device providers")] 
			HRESULT GetDeviceProviders([out, retval] IFaxDeviceProviders **ppFaxDeviceProviders);
		[id(4), helpstring("The collection of all available devices")] 
			HRESULT GetDevices([out, retval] IFaxDevices **ppFaxDevices);
		[propget, id(5), helpstring("The inbound routing configuration object")] 
			HRESULT InboundRouting([out, retval] IFaxInboundRouting **ppFaxInboundRouting);
		[propget, id(6), helpstring("The fax folders object")] 
			HRESULT Folders([out, retval] IFaxFolders **pFaxFolders);
		[propget, id(7), helpstring("The logging options configuration object")] 
			HRESULT LoggingOptions([out, retval] IFaxLoggingOptions **ppFaxLoggingOptions);
		[propget, id(8), helpstring("The major part of the fax server's version number")] 
			HRESULT MajorVersion([out, retval] long *plMajorVersion);
		[propget, id(9), helpstring("The minor part of the fax server's version number")] 
			HRESULT MinorVersion([out, retval] long *plMinorVersion);
		[propget, id(10), helpstring("The major part of the fax server's build number")] 
			HRESULT MajorBuild([out, retval] long *plMajorBuild);
		[propget, id(11), helpstring("The minor part of the fax server's build number")] 
			HRESULT MinorBuild([out, retval] long *plMinorBuild);
		[propget, id(12), helpstring("Is fax server built in debug environment")] 
			HRESULT Debug([out, retval] VARIANT_BOOL *pbDebug);
		[propget, id(13), helpstring("The fax server activity status object")] 
			HRESULT Activity([out, retval] IFaxActivity **ppFaxActivity);
		[propget, id(14), helpstring("The outbound routing configuration object")] 
			HRESULT OutboundRouting([out, retval] IFaxOutboundRouting **ppFaxOutboundRouting);
		[propget, id(15), helpstring("The receipt options configuration object")] 
			HRESULT ReceiptOptions([out, retval] IFaxReceiptOptions **ppFaxReceiptOptions);
		[propget, id(16), helpstring("The security configuration object")] 
			HRESULT Security([out, retval] IFaxSecurity **ppFaxSecurity);
		[id(17), helpstring("Disconnect from the fax server")] 
			HRESULT Disconnect();
		[id(18), helpstring("Return server level extention property")] 
			HRESULT GetExtensionProperty([in] BSTR bstrGUID, [out, retval] VARIANT *pvProperty);
		[id(19), helpstring("Set server level extention property")] 
			HRESULT SetExtensionProperty([in] BSTR bstrGUID, [in] VARIANT vProperty);
		[id(20), helpstring("Set bit-wise combination of events the fax server listens to")] 
			HRESULT ListenToServerEvents([in] FAX_SERVER_EVENTS_TYPE_ENUM EventTypes);
		[id(21), helpstring("Register device provider")] 
			HRESULT RegisterDeviceProvider(
				[in] BSTR bstrGUID, 
				[in] BSTR bstrFriendlyName, 
				[in] BSTR bstrImageName, 
				[in] BSTR TspName,
                [in] long lFSPIVersion);
		[id(22), helpstring("Unregister device provider")] 
			HRESULT UnregisterDeviceProvider([in] BSTR bstrUniqueName);
		[id(23), helpstring("Register inbound routing extension")] 
			HRESULT RegisterInboundRoutingExtension(
				[in] BSTR bstrExtensionName, 
				[in] BSTR bstrFriendlyName,
				[in] BSTR bstrImageName, 
				[in] VARIANT vMethods);
		[id(24), helpstring("Unregister inbound routing extension")] 
			HRESULT UnregisterInboundRoutingExtension([in] BSTR bstrExtensionUniqueName);
		[propget, id(25), helpstring("Events the fax Server is listening to")] 
			HRESULT RegisteredEvents([out, retval] FAX_SERVER_EVENTS_TYPE_ENUM *pEventTypes);
		[propget, id(26), helpstring("Version of the fax server API")] 
			HRESULT APIVersion([out, retval] FAX_SERVER_APIVERSION_ENUM *pAPIVersion);
	};		

	[
		object,
		uuid(9FB76F62-4C7E-43A5-B6FD-502893F7E13E),
		dual,
		helpstring("IFaxDeviceProviders interface"),
		pointer_default(unique),
		nonextensible
	]
	interface IFaxDeviceProviders : IDispatch
	{
        [id(DISPID_NEWENUM), propget] 
			HRESULT _NewEnum([out, retval] IUnknown **ppUnk);
        [id(DISPID_VALUE), propget] 
			HRESULT Item([in] VARIANT vIndex, [out, retval] IFaxDeviceProvider **pFaxDeviceProvider);
        [id(1), propget] 
			HRESULT Count([out, retval] long* plCount);
	};
	[
		object,
		uuid(9E46783E-F34F-482E-A360-0416BECBBD96),
		dual,
		helpstring("IFaxDevices interface"),
		pointer_default(unique),
		nonextensible
	]
	interface IFaxDevices : IDispatch
	{
        [id(DISPID_NEWENUM), propget] 
			HRESULT _NewEnum([out, retval] IUnknown **ppUnk);
        [id(DISPID_VALUE), propget] 
			HRESULT Item([in] VARIANT vIndex, [out, retval] IFaxDevice **pFaxDevice);
        [id(1), propget] 
			HRESULT Count([out, retval] long* plCount);
        [id(2), helpstring("Get device by its ID"), propget] 
			HRESULT ItemById([in] long lId, [out, retval] IFaxDevice **ppFaxDevice);
	};
	[
		object,
		uuid(8148C20F-9D52-45B1-BF96-38FC12713527),
		dual,
		helpstring("IFaxInboundRouting interface"),
		pointer_default(unique),
		nonextensible
	]
	interface IFaxInboundRouting : IDispatch
	{
		[id(1), helpstring("Registered inbound routing extensions collection")] 
			HRESULT GetExtensions([out, retval] IFaxInboundRoutingExtensions **pFaxInboundRoutingExtensions);
		[id(2), helpstring("Ordered collection of all the registered methods")] 
			HRESULT GetMethods([out, retval] IFaxInboundRoutingMethods **pFaxInboundRoutingMethods);
	};
	[
		object,
		uuid(DCE3B2A8-A7AB-42BC-9D0A-3149457261A0),
		dual,
		helpstring("IFaxFolders interface"),
		pointer_default(unique),
		nonextensible
	]
	interface IFaxFolders : IDispatch
	{
		[propget, id(1), helpstring("Outgoing queue")] 
			HRESULT OutgoingQueue([out, retval] IFaxOutgoingQueue **pFaxOutgoingQueue);
		[propget, id(2), helpstring("Incoming queue")] 
			HRESULT IncomingQueue([out, retval] IFaxIncomingQueue **pFaxIncomingQueue);
		[propget, id(3), helpstring("Incoming archive")] 
			HRESULT IncomingArchive([out, retval] IFaxIncomingArchive **pFaxIncomingArchive);
		[propget, id(4), helpstring("Outgoing archive")] 
			HRESULT OutgoingArchive([out, retval] IFaxOutgoingArchive **pFaxOutgoingArchive);
	};
	[
		object,
		uuid(34E64FB9-6B31-4D32-8B27-D286C0C33606),
		dual,
		helpstring("IFaxLoggingOptions interface"),
		pointer_default(unique),
		nonextensible
	]
	interface IFaxLoggingOptions : IDispatch
	{
		[propget, id(1), helpstring("Event logging configuration object")] 
			HRESULT EventLogging([out, retval] IFaxEventLogging **pFaxEventLogging);
		[propget, id(2), helpstring("Activity logging configuration object")] 
			HRESULT ActivityLogging([out, retval] IFaxActivityLogging **pFaxActivityLogging);
	};
	[
		object,
		uuid(4B106F97-3DF5-40F2-BC3C-44CB8115EBDF),
		dual,
		helpstring("IFaxActivity interface"),
		pointer_default(unique),
		nonextensible
	]
	interface IFaxActivity : IDispatch
	{
		[propget, id(1), helpstring("Number of incoming messages")] 
			HRESULT IncomingMessages([out, retval] long *plIncomingMessages);
		[propget, id(2), helpstring("Number of routed incoming messages")] 
			HRESULT RoutingMessages([out, retval] long *plRoutingMessages);
		[propget, id(3), helpstring("Number of outgoing messages")] 
			HRESULT OutgoingMessages([out, retval] long *plOutgoingMessages);
		[propget, id(4), helpstring("Number of queued messages")] 
			HRESULT QueuedMessages([out, retval] long *plQueuedMessages);
		[id(5), helpstring("Refresh the object")] 
			HRESULT Refresh();
	};
	[
		object,
		uuid(25DC05A4-9909-41BD-A95B-7E5D1DEC1D43),
		dual,
		helpstring("IFaxOutboundRouting interface"),
		pointer_default(unique),
		nonextensible
	]
	interface IFaxOutboundRouting : IDispatch
	{
		[id(1), helpstring("Configuration of the outbound routing groups")] 
			HRESULT GetGroups([out, retval] IFaxOutboundRoutingGroups **pFaxOutboundRoutingGroups);

		[id(2), helpstring("Configuration of the outbound routing rules")] 
			HRESULT GetRules([out, retval] IFaxOutboundRoutingRules **pFaxOutboundRoutingRules);
	};
	[
		object,
		uuid(378EFAEB-5FCB-4AFB-B2EE-E16E80614487),
		dual,
		helpstring("IFaxReceiptOptions interface"),
		pointer_default(unique),
		nonextensible
	]
	interface IFaxReceiptOptions : IDispatch
	{
		typedef enum FAX_SMTP_AUTHENTICATION_TYPE_ENUM 
		{
			fsatANONYMOUS,
			fsatBASIC,
			fsatNTLM
		} FAX_SMTP_AUTHENTICATION_TYPE_ENUM;

		typedef enum FAX_RECEIPT_TYPE_ENUM 
		{
			frtNONE		= 0x0000, 			
			frtMAIL		= 0x0001,
			frtMSGBOX	= 0x0004
		} FAX_RECEIPT_TYPE_ENUM;

		[propget, id(1), helpstring("Authentication type used by server")] 
			HRESULT AuthenticationType([out, retval] FAX_SMTP_AUTHENTICATION_TYPE_ENUM *pType);
		[propput, id(1), helpstring("Authentication type used by server")] 
			HRESULT AuthenticationType([in] FAX_SMTP_AUTHENTICATION_TYPE_ENUM Type);
		[propget, id(2), helpstring("Name of the SMTP server")] 
			HRESULT SMTPServer([out, retval] BSTR *pbstrSMTPServer);
		[propput, id(2), helpstring("Name of the SMTP server")] 
			HRESULT SMTPServer([in] BSTR bstrSMTPServer);
		[propget, id(3), helpstring("SMTP port number")] 
			HRESULT SMTPPort([out, retval] long *plSMTPPort);
		[propput, id(3), helpstring("SMTP port number")] 
			HRESULT SMTPPort([in] long lSMTPPort);
		[propget, id(4), helpstring("SMTP sender e-mail address")] 
			HRESULT SMTPSender([out, retval] BSTR *pbstrSMTPSender);
		[propput, id(4), helpstring("SMTP sender e-mail address")] 
			HRESULT SMTPSender([in] BSTR bstrSMTPSender);
		[propget, id(5), helpstring("SMTP user name")] 
			HRESULT SMTPUser([out, retval] BSTR *pbstrSMTPUser);
		[propput, id(5), helpstring("SMTP user name")] 
			HRESULT SMTPUser([in] BSTR bstrSMTPUser);
		[propget, id(6), helpstring("Allowed receipt types, a bit-wise combination of FAX_RECEIPT_TYPE values")]
			HRESULT AllowedReceipts([out, retval] FAX_RECEIPT_TYPE_ENUM *pAllowedReceipts);
		[propput, id(6), helpstring("Allowed receipt types, a bit-wise combination of FAX_RECEIPT_TYPE values")] 
			HRESULT AllowedReceipts([in] FAX_RECEIPT_TYPE_ENUM AllowedReceipts);
		[propget, id(7), helpstring("SMTP password")] 
			HRESULT SMTPPassword([out, retval] BSTR *pbstrSMTPPassword);
		[propput, id(7), helpstring("SMTP password")] 
			HRESULT SMTPPassword([in] BSTR bstrSMTPPassword);
		[id(8), helpstring("Refresh the object")] 
			HRESULT Refresh();
		[id(9), helpstring("Save the object")] 
			HRESULT Save();
		[propget, id(10), helpstring("Whether to use the IFaxReceiptOptions settings for MS routing extension")] 
			HRESULT UseForInboundRouting([out, retval] VARIANT_BOOL *pbUseForInboundRouting);
		[propput, id(10), helpstring("Whether to use the IFaxReceiptOptions settings for MS routing extension")] 
			HRESULT UseForInboundRouting([in] VARIANT_BOOL bUseForInboundRouting);
	};
	[
		object,
		uuid(77B508C1-09C0-47A2-91EB-FCE7FDF2690E),
		dual,
		helpstring("IFaxSecurity interface"),
		pointer_default(unique),
		nonextensible
	]
	interface IFaxSecurity : IDispatch
	{
		typedef enum FAX_ACCESS_RIGHTS_ENUM
		{
			farSUBMIT_LOW			= 0x0001,
			farSUBMIT_NORMAL		= 0x0002, 
			farSUBMIT_HIGH			= 0x0004, 
			farQUERY_JOBS			= 0x0008,
			farMANAGE_JOBS			= 0x0010, 
			farQUERY_CONFIG			= 0x0020,
			farMANAGE_CONFIG		= 0x0040, 
			farQUERY_IN_ARCHIVE		= 0x0080,
			farMANAGE_IN_ARCHIVE	= 0x0100, 
			farQUERY_OUT_ARCHIVE	= 0x0200,
			farMANAGE_OUT_ARCHIVE	= 0x0400  
		} FAX_ACCESS_RIGHTS_ENUM;

		[propget, id(1), helpstring("Security descriptor")] 
			HRESULT Descriptor([out, retval] VARIANT *pvDescriptor);
		[propput, id(1), helpstring("Security descriptor")] 
			HRESULT Descriptor([in] VARIANT vDescriptor);
		[propget, id(2), helpstring("Granted rights, a bit-wise combination of FAX_ACCESS_RIGHTS values")] 
			HRESULT GrantedRights([out, retval] FAX_ACCESS_RIGHTS_ENUM *pGrantedRights);
		[id(3), helpstring("Refresh the object")] 
			HRESULT Refresh();
		[id(4), helpstring("Save the object")] 
			HRESULT Save();
		[propget, id(5), helpstring("Security Information Type")] 
			HRESULT InformationType([out, retval] long *plInformationType);
		[propput, id(5), helpstring("Security Information Type")] 
			HRESULT InformationType([in] long lInformationType);

	};
	[
		object,
		uuid(B207A246-09E3-4A4E-A7DC-FEA31D29458F),
		dual,
		helpstring("IFaxDocument interface"),
		pointer_default(unique),
		nonextensible
	]
	interface IFaxDocument : IDispatch
	{
		typedef enum FAX_PRIORITY_TYPE_ENUM 
		{
			fptLOW,
			fptNORMAL,
			fptHIGH
		} FAX_PRIORITY_TYPE_ENUM;

		typedef enum FAX_COVERPAGE_TYPE_ENUM 
		{
			fcptNONE,
			fcptLOCAL,
			fcptSERVER
		} FAX_COVERPAGE_TYPE_ENUM;

        typedef enum FAX_SCHEDULE_TYPE_ENUM
        {
            fstNOW,
            fstSPECIFIC_TIME,
            fstDISCOUNT_PERIOD
        } FAX_SCHEDULE_TYPE_ENUM;

		[propget, id(1), helpstring("Full path to the fax document body file")] 
			HRESULT Body([out, retval] BSTR *pbstrBody);
		[propput, id(1), helpstring("Full path to the fax document body file")] 
			HRESULT Body([in] BSTR bstrBody);
		[propget, id(2), helpstring("Sender information object")] 
			HRESULT Sender([out, retval] IFaxSender **ppFaxSender);
		[propget, id(3), helpstring("Collection of recipients")] 
			HRESULT Recipients([out, retval] IFaxRecipients **ppFaxRecipients);
		[propget, id(4), helpstring("Cover page file path")] 
			HRESULT CoverPage([out, retval] BSTR *pbstrCoverPage);
		[propput, id(4), helpstring("Cover page file path")] 
			HRESULT CoverPage([in] BSTR bstrCoverPage);
		[propget, id(5), helpstring("Contents of cover page subject field")] 
			HRESULT Subject([out, retval] BSTR *pbstrSubject);
		[propput, id(5), helpstring("Contents of cover page subject field")] 
			HRESULT Subject([in] BSTR bstrSubject);
		[propget, id(6), helpstring("Contents of cover page note field")] 
			HRESULT Note([out, retval] BSTR *pbstrNote);
		[propput, id(6), helpstring("Contents of cover page note field")] 
			HRESULT Note([in] BSTR bstrNote);
		[propget, id(7), helpstring("Time to send the fax")] 
			HRESULT ScheduleTime([out, retval] DATE *pdateScheduleTime);
		[propput, id(7), helpstring("Time to send the fax")] 
			HRESULT ScheduleTime([in] DATE dateScheduleTime);
		[propget, id(8), helpstring("Address of the receipt")] 
			HRESULT ReceiptAddress([out, retval] BSTR *pbstrReceiptAddress);
		[propput, id(8), helpstring("Set the address of the receipt")] 
			HRESULT ReceiptAddress([in] BSTR bstrReceiptAddress);
		[propget, id(9), helpstring("The document name")] 
			HRESULT DocumentName([out, retval] BSTR *pbstrDocumentName);
		[propput, id(9), helpstring("The document name")] 
			HRESULT DocumentName([in] BSTR bstrDocumentName);
		[propget, id(10), helpstring("Call handle")] 
			HRESULT CallHandle([out, retval] long *plCallHandle);
		[propput, id(10), helpstring("Call handle")] 
			HRESULT CallHandle([in] long lCallHandle);
		[propget, id(11), helpstring("Is server, local, or no cover page used")] 
			HRESULT CoverPageType([out, retval] FAX_COVERPAGE_TYPE_ENUM *pCoverPageType);
		[propput, id(11), helpstring("Is server, local, or no cover page used")] 
			HRESULT CoverPageType([in] FAX_COVERPAGE_TYPE_ENUM CoverPageType);
		[propget, id(12), helpstring("When to send the fax")] 
			HRESULT ScheduleType([out, retval] FAX_SCHEDULE_TYPE_ENUM *pScheduleType);
		[propput, id(12), helpstring("When to send the fax")] 
			HRESULT ScheduleType([in] FAX_SCHEDULE_TYPE_ENUM ScheduleType);
		[propget, id(13), helpstring("Type of the receipt")] 
			HRESULT ReceiptType([out, retval] FAX_RECEIPT_TYPE_ENUM *pReceiptType);
		[propput, id(13), helpstring("Type of the receipt")] 
			HRESULT ReceiptType([in] FAX_RECEIPT_TYPE_ENUM ReceiptType);
		[propget, id(14), helpstring("Whether to group the broadcast receipts")] 
			HRESULT GroupBroadcastReceipts([out, retval] VARIANT_BOOL *pbUseGrouping);
		[propput, id(14), helpstring("Whether to group the broadcast receipts")] 
			HRESULT GroupBroadcastReceipts([in] VARIANT_BOOL bUseGrouping);
		[propget, id(15), helpstring("Priority of the fax")] 
			HRESULT Priority([out, retval] FAX_PRIORITY_TYPE_ENUM *pPriority);
		[propput, id(15), helpstring("Priority of the fax")] 
			HRESULT Priority([in] FAX_PRIORITY_TYPE_ENUM Priority);
		[propget, id(16), helpstring("Tapi connection")] 
			HRESULT TapiConnection([out, retval] IDispatch **ppTapiConnection);
		[propputref, id(16), helpstring("Tapi connection")] 
			HRESULT TapiConnection([in] IDispatch *pTapiConnection);
		[id(17), helpstring("Connect to server, submit the fax document, disconnect")] 
			HRESULT Submit([in] BSTR bstrFaxServerName, [out, retval] VARIANT *pvFaxOutgoingJobIDs);
		[id(18), helpstring("Submit the fax document on the already connected server")] 
			HRESULT ConnectedSubmit([in] IFaxServer *pFaxServer, [out, retval] VARIANT *pvFaxOutgoingJobIDs);
		[propget, id(19), helpstring("Whether to attach a fax to the receipt")] 
			HRESULT AttachFaxToReceipt([out, retval] VARIANT_BOOL *pbAttachFax);
		[propput, id(19), helpstring("Whether to attach a fax to the receipt")] 
			HRESULT AttachFaxToReceipt([in] VARIANT_BOOL bAttachFax);
	};
	[
		object,
		uuid(0D879D7D-F57A-4CC6-A6F9-3EE5D527B46A),
		dual,
		helpstring("IFaxSender interface"),
		pointer_default(unique),
		nonextensible
	]
	interface IFaxSender : IDispatch
	{
		[propget, id(1), helpstring("Sender's billing code")] 
			HRESULT BillingCode([out, retval] BSTR *pbstrBillingCode);
		[propput, id(1), helpstring("Sender's billing code")] 
			HRESULT BillingCode([in] BSTR bstrBillingCode);
		[propget, id(2), helpstring("City")] 
			HRESULT City([out, retval] BSTR *pbstrCity);
		[propput, id(2), helpstring("Sender's city")] 
			HRESULT City([in] BSTR bstrCity);
		[propget, id(3), helpstring("Sender's company")] 
			HRESULT Company([out, retval] BSTR *pbstrCompany);
		[propput, id(3), helpstring("Sender's company")] 
			HRESULT Company([in] BSTR bstrCompany);
		[propget, id(4), helpstring("Sender's country or region")] 
			HRESULT Country([out, retval] BSTR *pbstrCountry);
		[propput, id(4), helpstring("Sender's country or region")] 
			HRESULT Country([in] BSTR bstrCountry);
		[propget, id(5), helpstring("Sender's department")] 
			HRESULT Department([out, retval] BSTR *pbstrDepartment);
		[propput, id(5), helpstring("Sender's department")] 
			HRESULT Department([in] BSTR bstrDepartment);
		[propget, id(6), helpstring("Sender's e-mail address")] 
			HRESULT Email([out, retval] BSTR *pbstrEmail);
		[propput, id(6), helpstring("Sender's e-mail address")] 
			HRESULT Email([in] BSTR bstrEmail);
		[propget, id(7), helpstring("Sender's fax number")] 
			HRESULT FaxNumber([out, retval] BSTR *pbstrFaxNumber);
		[propput, id(7), helpstring("Sender's fax number")] 
			HRESULT FaxNumber([in] BSTR bstrFaxNumber);
		[propget, id(8), helpstring("Sender's home phone")] 
			HRESULT HomePhone([out, retval] BSTR *pbstrHomePhone);
		[propput, id(8), helpstring("Sender's home phone")] 
			HRESULT HomePhone([in] BSTR bstrHomePhone);
		[propget, id(9), helpstring("Sender's name")] 
			HRESULT Name([out, retval] BSTR *pbstrName);
		[propput, id(9), helpstring("Sender's name")] 
			HRESULT Name([in] BSTR bstrName);
		[propget, id(10), helpstring("Transmitting Station ID")]
			HRESULT TSID([out, retval] BSTR *pbstrTSID);
		[propput, id(10), helpstring("Transmitting Station ID")] 
			HRESULT TSID([in] BSTR bstrTSID);
		[propget, id(11), helpstring("Sender's office phone")] 
			HRESULT OfficePhone([out, retval] BSTR *pbstrOfficePhone);
		[propput, id(11), helpstring("Sender's office phone")] 
			HRESULT OfficePhone([in] BSTR bstrOfficePhone);
		[propget, id(12), helpstring("Sender's office location")] 
			HRESULT OfficeLocation([out, retval] BSTR *pbstrOfficeLocation);
		[propput, id(12), helpstring("Sender's office location")] 
			HRESULT OfficeLocation([in] BSTR bstrOfficeLocation);
		[propget, id(13), helpstring("Sender's state")] 
			HRESULT State([out, retval] BSTR *pbstrState);
		[propput, id(13), helpstring("Sender's state")] 
			HRESULT State([in] BSTR bstrState);
		[propget, id(14), helpstring("Sender's street address")] 
			HRESULT StreetAddress([out, retval] BSTR *pbstrStreetAddress);
		[propput, id(14), helpstring("Sender's street address")] 
			HRESULT StreetAddress([in] BSTR bstrStreetAddress);
		[propget, id(15), helpstring("Sender's title")] 
			HRESULT Title([out, retval] BSTR *pbstrTitle);
		[propput, id(15), helpstring("Sender's title")] 
			HRESULT Title([in] BSTR bstrTitle);
		[propget, id(16), helpstring("Sender's zip code")] 
			HRESULT ZipCode([out, retval] BSTR *pbstrZipCode);
		[propput, id(16), helpstring("Sender's zip code")] 
			HRESULT ZipCode([in] BSTR bstrZipCode);
		[id(17), helpstring("Load default sender")] 
			HRESULT LoadDefaultSender();
		[id(18), helpstring("Save default sender")] 
			HRESULT SaveDefaultSender();
	};
	[
		object,
		uuid(9A3DA3A0-538D-42b6-9444-AAA57D0CE2BC),
		dual,
		helpstring("IFaxRecipient interface"),
		pointer_default(unique),
		nonextensible
	]
	interface IFaxRecipient : IDispatch
	{
		[propget, id(1), helpstring("Recipient's fax number")] 
			HRESULT FaxNumber([out, retval] BSTR *pbstrFaxNumber);
		[propput, id(1), helpstring("Recipient's fax number")] 
			HRESULT FaxNumber([in] BSTR bstrFaxNumber);
		[propget, id(2), helpstring("Recipient's name")] 
			HRESULT Name([out, retval] BSTR *pbstrName);
		[propput, id(2), helpstring("Recipient's name")] 
			HRESULT Name([in] BSTR bstrName);
	};
	[
		object,
		uuid(B9C9DE5A-894E-4492-9FA3-08C627C11D5D),
		dual,
		helpstring("IFaxRecipients interface"),
		pointer_default(unique),
		nonextensible
	]
	interface IFaxRecipients : IDispatch
	{
        [id(DISPID_NEWENUM), propget] 
			HRESULT _NewEnum([out, retval] IUnknown **ppUnk);
        [id(DISPID_VALUE), propget] 
			HRESULT Item([in] long lIndex, [out, retval] IFaxRecipient **ppFaxRecipient);
        [id(1), propget] 
			HRESULT Count([out, retval] long *plCount);
		[id(2), helpstring("Add a recipient")] 
			HRESULT Add(
				[in] BSTR bstrFaxNumber, 
				[in, defaultvalue("")] BSTR bstrRecipientName, 
				[out, retval] IFaxRecipient **ppFaxRecipient);
		[id(3), helpstring("Remove a recipient")] 
			HRESULT Remove([in] long lIndex);
	};
	[
		object,
		uuid(76062CC7-F714-4FBD-AA06-ED6E4A4B70F3),
		dual,
		helpstring("IFaxIncomingArchive interface"),
		pointer_default(unique)
	]
	interface IFaxIncomingArchive : IDispatch
	{
		[propget, id(1), helpstring("Whether received faxes should be archived")] 
			HRESULT UseArchive([out, retval] VARIANT_BOOL *pbUseArchive);
		[propput, id(1), helpstring("Whether received faxes should be archived")] 
			HRESULT UseArchive([in] VARIANT_BOOL bUseArchive);
		[propget, id(2), helpstring("Location of the archive folder on the server")] 
			HRESULT ArchiveFolder([out, retval] BSTR *pbstrArchiveFolder);
		[propput, id(2), helpstring("Location of the archive folder on the server")] 
			HRESULT ArchiveFolder([in] BSTR bstrArchiveFolder);
		[propget, id(3), helpstring("Is size quota warning on")] 
			HRESULT SizeQuotaWarning([out, retval] VARIANT_BOOL *pbSizeQuotaWarning);
		[propput, id(3), helpstring("Is size quota warning on")] 
			HRESULT SizeQuotaWarning([in] VARIANT_BOOL bSizeQuotaWarning);
		[propget, id(4), helpstring("High quota water mark")] 
			HRESULT HighQuotaWaterMark([out, retval] long *plHighQuotaWaterMark);
		[propput, id(4), helpstring("High quota water mark")] 
			HRESULT HighQuotaWaterMark([in] long lHighQuotaWaterMark);
		[propget, id(5), helpstring("Low quota water mark")] 
			HRESULT LowQuotaWaterMark([out, retval] long *plLowQuotaWaterMark);
		[propput, id(5), helpstring("Low quota water mark")] 
			HRESULT LowQuotaWaterMark([in] long lLowQuotaWaterMark);
		[propget, id(6), helpstring("How long the fax message is kept on the Server")] 
			HRESULT AgeLimit([out, retval] long *plAgeLimit);
		[propput, id(6), helpstring("How long the fax message is kept on the server")] 
			HRESULT AgeLimit([in] long lAgeLimit);
		[propget, id(7), helpstring("The low 32-bit value of the archive size")] 
			HRESULT SizeLow([out, retval] long *plSizeLow);
		[propget, id(8), helpstring("The high 32-bit value of the archive size")] 
			HRESULT SizeHigh([out, retval] long *plSizeHigh);
		[id(9), helpstring("Refresh the object")] 
			HRESULT Refresh();
		[id(10), helpstring("Save the object")] 
			HRESULT Save();
		[id(11), helpstring("Iterator on the archived messages")] 
			HRESULT GetMessages(
				[in, defaultvalue(prv_DEFAULT_PREFETCH_SIZE)] long lPrefetchSize, 
				[out, retval] IFaxIncomingMessageIterator **pFaxIncomingMessageIterator);
		[id(12), helpstring("Get archived message by its ID")] 
			HRESULT GetMessage(
				[in] BSTR bstrMessageId, 
				[out,retval] IFaxIncomingMessage **pFaxIncomingMessage);
	};		
	[
		object,
		uuid(902E64EF-8FD8-4B75-9725-6014DF161545),
		dual,
		helpstring("IFaxIncomingQueue interface"),
		pointer_default(unique)
	]
	interface IFaxIncomingQueue : IDispatch
	{
		[propget, id(1), helpstring("Is queue blocked")] 
			HRESULT Blocked([out, retval] VARIANT_BOOL *pbBlocked);
		[propput, id(1), helpstring("Is queue blocked")] 
			HRESULT Blocked([in] VARIANT_BOOL bBlocked);
		[id(2), helpstring("Refresh the object")] 
			HRESULT Refresh();
		[id(3), helpstring("Save the object")] 
			HRESULT Save();
		[id(4), helpstring("Collection of incoming jobs")] 
			HRESULT GetJobs([out, retval] IFaxIncomingJobs **pFaxIncomingJobs);
		[id(5), helpstring("Get incoming job by ID")] 
			HRESULT GetJob([in] BSTR bstrJobId, [out, retval] IFaxIncomingJob **pFaxIncomingJob);
	};
	[
		object,
		uuid(C9C28F40-8D80-4E53-810F-9A79919B49FD),
		dual,
		helpstring("IFaxOutgoingArchive interface"),
		pointer_default(unique)
	]
	interface IFaxOutgoingArchive : IDispatch
	{
		[propget, id(1), helpstring("Whether sent faxes should be archived")] 
			HRESULT UseArchive([out, retval] VARIANT_BOOL *pbUseArchive);
		[propput, id(1), helpstring("Whether sent faxes should be archived ?")] 
			HRESULT UseArchive([in] VARIANT_BOOL bUseArchive);
		[propget, id(2), helpstring("Location of the outgoing archive on the server")] 
			HRESULT ArchiveFolder([out, retval] BSTR *pbstrArchiveFolder);
		[propput, id(2), helpstring("Location of the outgoing archive on the server")] 
			HRESULT ArchiveFolder([in] BSTR bstrArchiveFolder);
		[propget, id(3), helpstring("Is the size quota warning on or off")] 
			HRESULT SizeQuotaWarning([out, retval] VARIANT_BOOL *pbSizeQuotaWarning);
		[propput, id(3), helpstring("Is the size quota warning on or off")] 
			HRESULT SizeQuotaWarning([in] VARIANT_BOOL bSizeQuotaWarning);
		[propget, id(4), helpstring("High quota water mark")] 
			HRESULT HighQuotaWaterMark([out, retval] long *plHighQuotaWaterMark);
		[propput, id(4), helpstring("High quota water mark")] 
			HRESULT HighQuotaWaterMark([in] long lHighQuotaWaterMark);
		[propget, id(5), helpstring("Low quota water mark")] 
			HRESULT LowQuotaWaterMark([out, retval] long *plLowQuotaWaterMark);
		[propput, id(5), helpstring("Low quota water mark")] 
			HRESULT LowQuotaWaterMark([in] long lLowQuotaWaterMark);
		[propget, id(6), helpstring("Indicates how long the fax message is kept on the server")] 
			HRESULT AgeLimit([out, retval] long *plAgeLimit);
		[propput, id(6), helpstring("Set how long the fax message is kept on the server")] 
			HRESULT AgeLimit([in] long lAgeLimit);
		[propget, id(7), helpstring("The low 32-bit value of the archive size")] 
			HRESULT SizeLow([out, retval] long *plSizeLow);
		[propget, id(8), helpstring("The high 32-bit value of the archive size")] 
			HRESULT SizeHigh([out, retval] long *plSizeHigh);
		[id(9), helpstring("Refresh the object")] 
			HRESULT Refresh();
		[id(10), helpstring("Save the object")] 
			HRESULT Save();
		[id(11), helpstring("Iterator on the archived messages")] 
			HRESULT GetMessages(
				[in, defaultvalue(prv_DEFAULT_PREFETCH_SIZE)] long lPrefetchSize, 
				[out, retval] IFaxOutgoingMessageIterator **pFaxOutgoingMessageIterator);
		[id(12), helpstring("Get an archived message by its ID")] 
			HRESULT GetMessage(
				[in] BSTR bstrMessageId, 
				[out,retval] IFaxOutgoingMessage **pFaxOutgoingMessage);
	};
	[
		object,
		uuid(80B1DF24-D9AC-4333-B373-487CEDC80CE5),
		dual,
		helpstring("IFaxOutgoingQueue interface"),
		pointer_default(unique)
	]
	interface IFaxOutgoingQueue : IDispatch
	{
		[propget, id(1), helpstring("Is the queue blocked")] 
			HRESULT Blocked([out, retval] VARIANT_BOOL *pbBlocked);
		[propput, id(1), helpstring("Is the queue blocked")] 
			HRESULT Blocked([in] VARIANT_BOOL bBlocked);
		[propget, id(2), helpstring("Is the queue paused")] 
			HRESULT Paused([out, retval] VARIANT_BOOL *pbPaused);
		[propput, id(2), helpstring("Is the queue paused")] 
			HRESULT Paused([in] VARIANT_BOOL bPaused);
		[propget, id(3), helpstring("Are personal cover pages allowed")] 
			HRESULT AllowPersonalCoverPages([out, retval] VARIANT_BOOL *pbAllowPersonalCoverPages);
		[propput, id(3), helpstring("Are personal cover pages allowed")] 
			HRESULT AllowPersonalCoverPages([in] VARIANT_BOOL bAllowPersonalCoverPages);
		[propget, id(4), helpstring("Is device Transmitting Station ID used")] 
			HRESULT UseDeviceTSID([out, retval] VARIANT_BOOL *pbUseDeviceTSID);
		[propput, id(4), helpstring("Is device Transmitting Station ID used")] 
			HRESULT UseDeviceTSID([in] VARIANT_BOOL bUseDeviceTSID);
		[propget, id(5), helpstring("Number of retries")] 
			HRESULT Retries([out, retval] long *plRetries);
		[propput, id(5), helpstring("Number of retries")] 
			HRESULT Retries([in] long lRetries);
		[propget, id(6), helpstring("Retry delay")] 
			HRESULT RetryDelay([out, retval] long *plRetryDelay);
		[propput, id(6), helpstring("Retry delay")] 
			HRESULT RetryDelay([in] long lRetryDelay);
		[propget, id(7), helpstring("Start of the discount rate period")] 
			HRESULT DiscountRateStart([out, retval] DATE *pdateDiscountRateStart);
		[propput, id(7), helpstring("Start of the discount rate period")] 
			HRESULT DiscountRateStart([in] DATE dateDiscountRateStart);
		[propget, id(8), helpstring("End of the discount rate period")] 
			HRESULT DiscountRateEnd([out, retval] DATE *pdateDiscountRateEnd);
		[propput, id(8), helpstring("End of the discount rate period")] 
			HRESULT DiscountRateEnd([in] DATE dateDiscountRateEnd);
		[propget, id(9), helpstring("How long the failed fax message is kept on the server")] 
			HRESULT AgeLimit([out, retval] long *plAgeLimit);
		[propput, id(9), helpstring("How long the failed fax message is kept on the server")] 
			HRESULT AgeLimit([in] long lAgeLimit);
		[propget, id(10), helpstring("Does the server generate a brand")] 
			HRESULT Branding([out, retval] VARIANT_BOOL *pbBranding);
		[propput, id(10), helpstring("Does the server generate a brand")] 
			HRESULT Branding([in] VARIANT_BOOL bBranding);
		[id(11), helpstring("Refresh the object")] 
			HRESULT Refresh();
		[id(12), helpstring("Save the object")] 
			HRESULT Save();
		[id(13), helpstring("Collection of outgoing jobs")] 
			HRESULT GetJobs([out, retval] IFaxOutgoingJobs **pFaxOutgoingJobs);
		[id(14), helpstring("Outgoing job by ID")] 
			HRESULT GetJob([in] BSTR bstrJobId, [out, retval] IFaxOutgoingJob **pFaxOutgoingJob);
	};
	[
		object,
		uuid(FD73ECC4-6F06-4F52-82A8-F7BA06AE3108),
		dual,
		helpstring("IFaxIncomingMessageIterator interface"),
		pointer_default(unique)
	]
	interface IFaxIncomingMessageIterator : IDispatch
	{
		[propget, id(1), helpstring("The current message")] 
			HRESULT Message([out, retval] IFaxIncomingMessage **pFaxIncomingMessage);
		[propget, id(2), helpstring("Size of the prefetch buffer")] 
			HRESULT PrefetchSize([out, retval] long *plPrefetchSize);
		[propput, id(2), helpstring("Size of the prefetch buffer")] 
			HRESULT PrefetchSize([in] long lPrefetchSize);
		[propget, id(3), helpstring("End of archive marker")] 
			HRESULT AtEOF([out, retval] VARIANT_BOOL *pbEOF);
		[id(4), helpstring("Move to the first message in the archive")] 
			HRESULT MoveFirst();
		[id(5), helpstring("Move to the next message in the archive")] 
			HRESULT MoveNext();
	};
	[
		object,
		uuid(7CAB88FA-2EF9-4851-B2F3-1D148FED8447),
		dual,
		helpstring("IFaxIncomingMessage interface"),
		pointer_default(unique)
	]
	interface IFaxIncomingMessage : IDispatch
	{
		[propget, id(1), helpstring("Unique message ID")] 
			HRESULT Id([out, retval] BSTR *pbstrId);
		[propget, id(2), helpstring("Total number of pages")] 
			HRESULT Pages([out, retval] long *plPages);
		[propget, id(3), helpstring("Size in bytes of the message's TIFF file")] 
			HRESULT Size([out, retval] long *plSize);
		[propget, id(4), helpstring("Name of the device that received the message")] 
			HRESULT DeviceName([out, retval] BSTR *pbstrDeviceName);
		[propget, id(5), helpstring("Number of failed routing retries")] 
			HRESULT Retries([out, retval] long *plRetries);
		[propget, id(6), helpstring("Transmission start time")] 
			HRESULT TransmissionStart([out, retval] DATE *pdateTransmissionStart);
		[propget, id(7), helpstring("Transmission end time")] 
			HRESULT TransmissionEnd([out, retval] DATE *pdateTransmissionEnd);
		[propget, id(8), helpstring("Called Station ID")] 
			HRESULT CSID([out, retval] BSTR *pbstrCSID);
		[propget, id(9), helpstring("Transmitting Station ID")] 
			HRESULT TSID([out, retval] BSTR *pbstrTSID);
		[propget, id(10), helpstring("Caller ID")] 
			HRESULT CallerId([out, retval] BSTR *pbstrCallerId);
		[propget, id(11), helpstring("Routing information")] 
			HRESULT RoutingInformation([out, retval] BSTR *pbstrRoutingInformation);
		[id(12), helpstring("Copy Tiff image to the local file")] 
			HRESULT CopyTiff([in] BSTR bstrTiffPath);
		[id(13), helpstring("Delete the message from the archive")] 
			HRESULT Delete();
	};
	[
		object,
		uuid(2C56D8E6-8C2F-4573-944C-E505F8F5AEED),
		dual,
		helpstring("IFaxOutgoingJobs interface"),
		pointer_default(unique)
	]
	interface IFaxOutgoingJobs : IDispatch
	{
        [id(DISPID_NEWENUM), propget] 
			HRESULT _NewEnum([out, retval] IUnknown **ppUnk);
        [id(DISPID_VALUE), propget] 
			HRESULT Item([in] VARIANT vIndex, [out, retval] IFaxOutgoingJob **pFaxOutgoingJob);
        [id(1), propget] 
			HRESULT Count([out, retval] long* plCount);
	};

	[
		object,
		uuid(6356DAAD-6614-4583-BF7A-3AD67BBFC71C),
		dual,
		helpstring("IFaxOutgoingJob interface"),
		pointer_default(unique)
	]
	interface IFaxOutgoingJob : IDispatch
	{
		[propget, id(1), helpstring("Cover page's subject field")] 
			HRESULT Subject([out, retval] BSTR *pbstrSubject);
		[propget, id(2), helpstring("Document's friendly name")] 
			HRESULT DocumentName([out, retval] BSTR *pbstrDocumentName);
		[propget, id(3), helpstring("Total number of pages")] 
			HRESULT Pages([out, retval] long *plPages);
		[propget, id(4), helpstring("Size in bytes of TIFF file")] 
			HRESULT Size([out, retval] long *plSize);
		[propget, id(5), helpstring("Unique ID the submission process created for the Job")] 
			HRESULT SubmissionId([out, retval] BSTR *pbstrSubmissionId);
		[propget, id(6), helpstring("Unique job ID")] 
			HRESULT Id([out, retval] BSTR *pbstrId);
		[propget, id(7), helpstring("Time the job was originally scheduled to be transmitted")] 
			HRESULT OriginalScheduledTime([out, retval] DATE *pdateOriginalScheduledTime);
		[propget, id(8), helpstring("Time the job was submitted")] 
			HRESULT SubmissionTime([out, retval] DATE *pdateSubmissionTime);
		[propget, id(9), helpstring("Type of receipt")] 
			HRESULT ReceiptType([out, retval] FAX_RECEIPT_TYPE_ENUM *pReceiptType);
		[propget, id(10), helpstring("Priority of the fax")] 
			HRESULT Priority([out, retval] FAX_PRIORITY_TYPE_ENUM *pPriority);
		[propget, id(11), helpstring("Sender information object")] 
			HRESULT Sender([out, retval] IFaxSender **ppFaxSender);
		[propget, id(12), helpstring("Recipient information object")] 
			HRESULT Recipient([out, retval] IFaxRecipient **ppFaxRecipient);
		[propget, id(13), helpstring("Page currently in transmision")] 
			HRESULT CurrentPage([out, retval] long *plCurrentPage);
		[propget, id(14), helpstring("Device ID that transmits the job")] 
			HRESULT DeviceId([out, retval] long *plDeviceId);
		[propget, id(15), helpstring("Current queue status of the job")] 
			HRESULT Status([out, retval] FAX_JOB_STATUS_ENUM *pStatus);
		[propget, id(16), helpstring("Code of the job's extended status")] 
			HRESULT ExtendedStatusCode([out, retval] FAX_JOB_EXTENDED_STATUS_ENUM *pExtendedStatusCode);
		[propget, id(17), helpstring("Extended status description")] 
			HRESULT ExtendedStatus([out, retval] BSTR *pbstrExtendedStatus);
		[propget, id(18), helpstring("Available operations, a bit-wise combination of FAX_JOB_OPERATIONS values")] 
			HRESULT AvailableOperations([out, retval] FAX_JOB_OPERATIONS_ENUM *pAvailableOperations);
		[propget, id(19), helpstring("Number of failed transmission retries")] 
			HRESULT Retries([out, retval] long *plRetries);
		[propget, id(20), helpstring("The time the fax job is scheduled to be transmitted")] 
			HRESULT ScheduledTime([out, retval] DATE *pdateScheduledTime);
		[propget, id(21), helpstring("The time the fax job started its transmission")] 
			HRESULT TransmissionStart([out, retval] DATE *pdateTransmissionStart);
		[propget, id(22), helpstring("The time the fax job finished its transmission")] 
			HRESULT TransmissionEnd([out, retval] DATE *pdateTransmissionEnd);
		[propget, id(23), helpstring("Called Station ID")] HRESULT CSID([out, retval] BSTR *pbstrCSID);
		[propget, id(24), helpstring("Transmitting Station ID")] 
			HRESULT TSID([out, retval] BSTR *pbstrTSID);
		[propget, id(25), helpstring("Whether to group broadcast receipts")]
			HRESULT GroupBroadcastReceipts([out, retval]VARIANT_BOOL *pbGroupBroadcastReceipts);
		[id(26), helpstring("Pause the outbound job")] 
			HRESULT Pause();
		[id(27), helpstring("Resume the outbound job")] 
			HRESULT Resume();
		[id(28), helpstring("Restart the outbound job")] 
			HRESULT Restart();
		[id(29), helpstring("Copy the job's TIFF image")] 
			HRESULT CopyTiff([in] BSTR bstrTiffPath);
		[id(30), helpstring("Refresh the object")] 
			HRESULT Refresh();
		[id(31), helpstring("Cancel the outbound job")] 
			HRESULT Cancel();
	};
	[
		object,
		uuid(F5EC5D4F-B840-432F-9980-112FE42A9B7A),
		dual,
		helpstring("IFaxOutgoingMessageIterator interface"),
		pointer_default(unique)
	]
	interface IFaxOutgoingMessageIterator : IDispatch
	{
		[propget, id(1), helpstring("Current message")] 
			HRESULT Message([out, retval] IFaxOutgoingMessage **pFaxOutgoingMessage);
		[propget, id(2), helpstring("End of archive marker")] 
			HRESULT AtEOF([out, retval] VARIANT_BOOL *pbEOF);
		[propget, id(3), helpstring("Size of prefetch buffer")] 
			HRESULT PrefetchSize([out, retval] long *plPrefetchSize);
		[propput, id(3), helpstring("Size of prefetch buffer")] 
			HRESULT PrefetchSize([in] long lPrefetchSize);
		[id(4), helpstring("Move to the first message")] 
			HRESULT MoveFirst();
		[id(5), helpstring("Move to the next message")] 
			HRESULT MoveNext();
	};
	[
		object,
		uuid(F0EA35DE-CAA5-4A7C-82C7-2B60BA5F2BE2),
		dual,
		helpstring("IFaxOutgoingMessage interface"),
		pointer_default(unique)
	]
	interface IFaxOutgoingMessage : IDispatch
	{
		[propget, id(1), helpstring("Unique ID the submission process created for the job")] 
			HRESULT SubmissionId([out, retval] BSTR *pbstrSubmissionId);
		[propget, id(2), helpstring("Unique message ID")] 
			HRESULT Id([out, retval] BSTR *pbstrId);
		[propget, id(3), helpstring("Cover page's subject field")] 
			HRESULT Subject([out, retval] BSTR *pbstrSubject);
		[propget, id(4), helpstring("Document's friendly name")] 
			HRESULT DocumentName([out, retval] BSTR *pbstrDocumentName);
		[propget, id(5), helpstring("Number of failed routing retries")] 
			HRESULT Retries([out, retval] long *plRetries);
		[propget, id(6), helpstring("Total number of pages")] 
			HRESULT Pages([out, retval] long *plPages);
		[propget, id(7), helpstring("Size in bytes of TIFF file")] 
			HRESULT Size([out, retval] long *plSize);
		[propget, id(8), helpstring("Time the job was originally scheduled to be transmitted")] 
			HRESULT OriginalScheduledTime([out, retval] DATE *pdateOriginalScheduledTime);
		[propget, id(9), helpstring("Time the job was submitted")] 
			HRESULT SubmissionTime([out, retval] DATE *pdateSubmissionTime);
		[propget, id(10), helpstring("Priority of the fax")] 
			HRESULT Priority([out, retval] FAX_PRIORITY_TYPE_ENUM *pPriority);
		[propget, id(11), helpstring("Sender information object")] 
			HRESULT Sender([out, retval] IFaxSender **ppFaxSender);
		[propget, id(12), helpstring("Recipient information object")] 
			HRESULT Recipient([out, retval] IFaxRecipient **ppFaxRecipient);
		[propget, id(13), helpstring("Name of the device transmitting the message")] 
			HRESULT DeviceName([out, retval] BSTR *pbstrDeviceName);
		[propget, id(14), helpstring("Transmission start time")] 
			HRESULT TransmissionStart([out, retval] DATE *pdateTransmissionStart);
		[propget, id(15), helpstring("Transmission end time")] 
			HRESULT TransmissionEnd([out, retval] DATE *pdateTransmissionEnd);
		[propget, id(16), helpstring("Called Station ID")] 
			HRESULT CSID([out, retval] BSTR *pbstrCSID);
		[propget, id(17), helpstring("Transmitting Station ID")] 
			HRESULT TSID([out, retval] BSTR *pbstrTSID);
		[id(18), helpstring("Copy Tiff image to the local file")] 
			HRESULT CopyTiff([in] BSTR bstrTiffPath);
		[id(19), helpstring("Delete the message from the archive")] 
			HRESULT Delete();
	};
	[
		object,
		uuid(011F04E9-4FD6-4C23-9513-B6B66BB26BE9),
		dual,
		helpstring("IFaxIncomingJobs interface"),
		pointer_default(unique)
	]
	interface IFaxIncomingJobs : IDispatch
	{
		[id(DISPID_NEWENUM), propget] 
			HRESULT _NewEnum([out, retval] IUnknown **ppUnk);
        [id(DISPID_VALUE), propget] 
			HRESULT Item([in] VARIANT vIndex, [out, retval] IFaxIncomingJob **pFaxIncomingJob);
        [id(1), propget] 
			HRESULT Count([out, retval] long* plCount);
	};
	[
		object,
		uuid(207529E6-654A-4916-9F88-4D232EE8A107),
		dual,
		helpstring("IFaxIncomingJob interface"),
		pointer_default(unique)
	]
	interface IFaxIncomingJob : IDispatch
	{
		[propget, id(1), helpstring("Size in bytes of the message's TIFF file")] 
			HRESULT Size([out, retval] long *plSize);
		[propget, id(2), helpstring("Unique message ID")] 
			HRESULT Id([out, retval] BSTR *pbstrId);
		[propget, id(3), helpstring("Page currently in transmision")] 
			HRESULT CurrentPage([out, retval] long *plCurrentPage);
		[propget, id(4), helpstring("Device ID that transmits the job")] 
			HRESULT DeviceId([out, retval] long *plDeviceId);
		[propget, id(5), helpstring("Current queue status of the job, a bit-wise combination of FAX_JOB_STATUS values")] 
			HRESULT Status([out, retval] FAX_JOB_STATUS_ENUM *pStatus);
		[propget, id(6), helpstring("Code of the job's extended status")] 
			HRESULT ExtendedStatusCode([out, retval] FAX_JOB_EXTENDED_STATUS_ENUM *pExtendedStatusCode);
		[propget, id(7), helpstring("Extended status description")] 
			HRESULT ExtendedStatus([out, retval] BSTR *pbstrExtendedStatus);
		[propget, id(8), helpstring("Available operations, a bit-wise combination of FAX_JOB_OPERATIONS values")] 
			HRESULT AvailableOperations([out, retval] FAX_JOB_OPERATIONS_ENUM *pAvailableOperations);
		[propget, id(9), helpstring("Number of failed transmission retries")] 
			HRESULT Retries([out, retval] long *plRetries);
		[propget, id(10), helpstring("Transmission start time")] 
			HRESULT TransmissionStart([out, retval] DATE *pdateTransmissionStart);
		[propget, id(11), helpstring("Transmission end time")] 
			HRESULT TransmissionEnd([out, retval] DATE *pdateTransmissionEnd);
		[propget, id(12), helpstring("Called Station ID")] 
			HRESULT CSID([out, retval] BSTR *pbstrCSID);
		[propget, id(13), helpstring("Transmitting Station ID")] 
			HRESULT TSID([out, retval] BSTR *pbstrTSID);
		[propget, id(14), helpstring("Caller ID")] 
			HRESULT CallerId([out, retval] BSTR *pbstrCallerId);
		[propget, id(15), helpstring("Routing information")] 
			HRESULT RoutingInformation([out, retval] BSTR *pbstrRoutingInformation);
		[propget, id(16), helpstring("Job type")] HRESULT JobType([out, retval] FAX_JOB_TYPE_ENUM *pJobType);

		[id(17), helpstring("Cancel the incoming job")] HRESULT Cancel();
		[id(18), helpstring("Refresh the object")] HRESULT Refresh();
		[id(19), helpstring("Copy TIFF image to the local file")] HRESULT CopyTiff([in] BSTR bstrTiffPath);
	};
	[
		object,
		uuid(290EAC63-83EC-449C-8417-F148DF8C682A),
		dual,
		helpstring("IFaxDeviceProvider interface"),
		pointer_default(unique)
	]
	interface IFaxDeviceProvider : IDispatch
	{
		typedef enum FAX_PROVIDER_STATUS_ENUM
		{
			fpsSUCCESS,
			fpsSERVER_ERROR,
			fpsBAD_GUID,
			fpsBAD_VERSION,
			fpsCANT_LOAD,
			fpsCANT_LINK,
			fpsCANT_INIT
		} FAX_PROVIDER_STATUS_ENUM;

		[propget, id(1), helpstring("Provider's friendly name")] 
			HRESULT FriendlyName([out, retval] BSTR *pbstrFriendlyName);
		[propget, id(2), helpstring("Full path and file name of the provider DLL")] 
			HRESULT ImageName([out, retval] BSTR *pbstrImageName);
		[propget, id(3), helpstring("Unique name of the provider")] 
			HRESULT UniqueName([out, retval] BSTR *pbstrUniqueName);
		[propget, id(4), helpstring("TSP name used by the provider")] 
			HRESULT TapiProviderName([out, retval] BSTR *pbstrTapiProviderName);
		[propget, id(5), helpstring("The major part of the device provider's version number")] 
			HRESULT MajorVersion([out, retval] long *plMajorVersion);
		[propget, id(6), helpstring("The minor part of the device provider's version number")] 
			HRESULT MinorVersion([out, retval] long *plMinorVersion);
		[propget, id(7), helpstring("The major part of the device provider's build number")] 
			HRESULT MajorBuild([out, retval] long *plMajorBuild);
		[propget, id(8), helpstring("The minor part of the device provider's build number")] 
			HRESULT MinorBuild([out, retval] long *plMinorBuild);
		[propget, id(9), helpstring("Is device provider built in debug environment")] 
			HRESULT Debug([out, retval] VARIANT_BOOL *pbDebug);
		[propget, id(10), helpstring("Status of the device provider")] 
			HRESULT Status([out, retval] FAX_PROVIDER_STATUS_ENUM *pStatus);
		[propget, id(11), helpstring("Last error code at load or initialization")] 
			HRESULT InitErrorCode([out, retval] long *plInitErrorCode);
		[propget, id(12), helpstring("Array of device IDs exposed by the provider")] 
			HRESULT DeviceIds([out, retval] VARIANT *pvDeviceIds);
	};
	[
		object,
		uuid(49306C59-B52E-4867-9DF4-CA5841C956D0),
		dual,
		helpstring("IFaxDevice interface"),
		pointer_default(unique)
	]
	interface IFaxDevice : IDispatch
	{
		typedef enum FAX_DEVICE_RECEIVE_MODE_ENUM
		{
			fdrmNO_ANSWER = 0,
			fdrmAUTO_ANSWER,
            fdrmMANUAL_ANSWER
		} FAX_DEVICE_RECEIVE_MODE_ENUM;

		[propget, id(1), helpstring("Unique device ID")] 
			HRESULT Id([out, retval] long *plId);
		[propget, id(2), helpstring("Device name")] 
			HRESULT DeviceName([out, retval] BSTR *pbstrDeviceName);
		[propget, id(3), helpstring("Device provider")] 
			HRESULT ProviderUniqueName([out, retval] BSTR *pbstrProviderUniqueName);
		[propget, id(4), helpstring("Is the device is turned off")] 
			HRESULT PoweredOff([out, retval] VARIANT_BOOL *pbPoweredOff);
		[propget, id(5), helpstring("Is the device receiving now")] 
			HRESULT ReceivingNow([out, retval] VARIANT_BOOL *pbReceivingNow);
		[propget, id(6), helpstring("Is the device sending now")] 
			HRESULT SendingNow([out, retval] VARIANT_BOOL *pbSendingNow);
		[propget, id(7), helpstring("Array of routing methods")] 
			HRESULT UsedRoutingMethods([out, retval] VARIANT *pvUsedRoutingMethods);
		[propget, id(8), helpstring("Description of the device")] 
			HRESULT Description([out, retval] BSTR *pbstrDescription);
		[propput, id(8), helpstring("Description of the device")] 
			HRESULT Description([in] BSTR bstrDescription);
		[propget, id(9), helpstring("Is the device is enabled to send")] 
			HRESULT SendEnabled([out, retval] VARIANT_BOOL *pbSendEnabled);
		[propput, id(9), helpstring("Is the device is enabled to send")] 
			HRESULT SendEnabled([in] VARIANT_BOOL bSendEnabled);
		[propget, id(10), helpstring("The receive mode of the device")] 
			HRESULT ReceiveMode([out, retval] FAX_DEVICE_RECEIVE_MODE_ENUM *pReceiveMode);
		[propput, id(10), helpstring("The receive mode of the device")] 
			HRESULT ReceiveMode([in] FAX_DEVICE_RECEIVE_MODE_ENUM ReceiveMode);
		[propget, id(11), helpstring("Number of rings before the device answers")] 
			HRESULT RingsBeforeAnswer([out, retval] long *plRingsBeforeAnswer);
		[propput, id(11), helpstring("Number of rings before the device answers")] 
			HRESULT RingsBeforeAnswer([in] long lRingsBeforeAnswer);
		[propget, id(12), helpstring("Device's Called Station ID")] 
			HRESULT CSID([out, retval] BSTR *pbstrCSID);
		[propput, id(12), helpstring("Device's Called Station ID")] 
			HRESULT CSID([in] BSTR bstrCSID);
		[propget, id(13), helpstring("Device's Transmitting Station ID")] 
			HRESULT TSID([out, retval] BSTR *pbstrTSID);
		[propput, id(13), helpstring("Device's Transmitting Station ID")] 
			HRESULT TSID([in] BSTR bstrTSID);
		[id(14), helpstring("Refresh the object")] 
			HRESULT Refresh();
		[id(15), helpstring("Save the object")] 
			HRESULT Save();
		[id(16), helpstring("Get the device level extention property")] 
			HRESULT GetExtensionProperty([in] BSTR bstrGUID, [out, retval] VARIANT *pvProperty);
		[id(17), helpstring("Set the device level extention property")] 
			HRESULT SetExtensionProperty([in] BSTR bstrGUID, [in] VARIANT vProperty);
		[id(18), helpstring("Adds or removes routing method")] 
			HRESULT UseRoutingMethod([in] BSTR bstrMethodGUID, [in] VARIANT_BOOL bUse);
		[propget, id(19), helpstring("Is the device ringing now")] 
			HRESULT RingingNow([out, retval] VARIANT_BOOL *pbRingingNow);
		[id(20), helpstring("Answer the call")] 
			HRESULT AnswerCall();
	};
	[
		object,
		uuid(1E29078B-5A69-497B-9592-49B7E7FADDB5),
		dual,
		helpstring("IFaxActivityLogging interface"),
		pointer_default(unique)
	]
	interface IFaxActivityLogging : IDispatch
	{
		[propget, id(1), helpstring("Does the server log incoming fax activity")] 
			HRESULT LogIncoming([out, retval] VARIANT_BOOL *pbLogIncoming);
		[propput, id(1), helpstring("Does the server log incoming fax activity")] 
			HRESULT LogIncoming([in] VARIANT_BOOL bLogIncoming);
		[propget, id(2), helpstring("Does the server log outgoing fax activity")] 
			HRESULT LogOutgoing([out, retval] VARIANT_BOOL *pbLogOutgoing);
		[propput, id(2), helpstring("Does the server log outgoing fax activity")] 
			HRESULT LogOutgoing([in] VARIANT_BOOL bLogOutgoing);
		[propget, id(3), helpstring("Activity log database files path")] 
			HRESULT DatabasePath([out, retval] BSTR *pbstrDatabasePath);
		[propput, id(3), helpstring("Activity log database files path")] 
			HRESULT DatabasePath([in] BSTR bstrDatabasePath);
		[id(4), helpstring("Refresh the object")] 
			HRESULT Refresh();
		[id(5), helpstring("Save the object")] 
			HRESULT Save();
	};
	[
		object,
		uuid(0880D965-20E8-42E4-8E17-944F192CAAD4),
		dual,
		helpstring("IFaxEventLogging interface"),
		pointer_default(unique)
	]
	interface IFaxEventLogging : IDispatch
	{
		typedef enum FAX_LOG_LEVEL_ENUM
		{
			fllNONE,
			fllMIN,
			fllMED,
			fllMAX
		} FAX_LOG_LEVEL_ENUM;

		[propget, id(1), helpstring("Detail level of event logs for initialization events")] 
			HRESULT InitEventsLevel([out, retval] FAX_LOG_LEVEL_ENUM *pInitEventLevel);
		[propput, id(1), helpstring("Detail level of event logs for initialization events")] 
			HRESULT InitEventsLevel([in] FAX_LOG_LEVEL_ENUM InitEventLevel);
		[propget, id(2), helpstring("Detail level of event logs for inbound fax events")] 
			HRESULT InboundEventsLevel([out, retval] FAX_LOG_LEVEL_ENUM *pInboundEventLevel);
		[propput, id(2), helpstring("Detail level of event logs for inbound fax events")] 
			HRESULT InboundEventsLevel([in] FAX_LOG_LEVEL_ENUM InboundEventLevel);
		[propget, id(3), helpstring("Detail level of event logs for outbound fax events")] 
			HRESULT OutboundEventsLevel([out, retval] FAX_LOG_LEVEL_ENUM *pOutboundEventLevel);
		[propput, id(3), helpstring("Detail level of event logs for outbound fax events")] 
			HRESULT OutboundEventsLevel([in] FAX_LOG_LEVEL_ENUM OutboundEventLevel);
		[propget, id(4), helpstring("Detail level of event logs for general (other) events")] 
			HRESULT GeneralEventsLevel([out, retval] FAX_LOG_LEVEL_ENUM *pGeneralEventLevel);
		[propput, id(4), helpstring("Detail level of event logs for general (other) events")] 
			HRESULT GeneralEventsLevel([in] FAX_LOG_LEVEL_ENUM GeneralEventLevel);
		[id(5), helpstring("Refresh the object")] 
			HRESULT Refresh();
		[id(6), helpstring("Save the object")] 
			HRESULT Save();
	};
	[
		object,
		uuid(235CBEF7-C2DE-4BFD-B8DA-75097C82C87F),
		dual,
		helpstring("IFaxOutboundRoutingGroups interface"),
		pointer_default(unique)
	]
	interface IFaxOutboundRoutingGroups : IDispatch
	{
        [id(DISPID_NEWENUM), propget] 
			HRESULT _NewEnum([out, retval] IUnknown **ppUnk);
        [id(DISPID_VALUE), propget] 
			HRESULT Item([in] VARIANT vIndex, [out, retval] IFaxOutboundRoutingGroup **pFaxOutboundRoutingGroup);
        [id(1), propget] 
			HRESULT Count([out, retval] long* plCount);
		[id(2), helpstring("Add a group")] 
			HRESULT Add([in] BSTR bstrName, [out, retval] IFaxOutboundRoutingGroup **pFaxOutboundRoutingGroup);
		[id(3), helpstring("Remove a group")] 
			HRESULT Remove([in] VARIANT vIndex);
	};
	[
		object,
		uuid(CA6289A1-7E25-4F87-9A0B-93365734962C),
		dual,
		helpstring("IFaxOutboundRoutingGroup interface"),
		pointer_default(unique)
	]
	interface IFaxOutboundRoutingGroup : IDispatch
	{
		typedef enum FAX_GROUP_STATUS_ENUM 
		{
			fgsALL_DEV_VALID, 			
			fgsEMPTY,
			fgsALL_DEV_NOT_VALID,
			fgsSOME_DEV_NOT_VALID
		} FAX_GROUP_STATUS_ENUM;

		[propget, id(1), helpstring("Name of the group")] 
			HRESULT Name([out, retval] BSTR *pbstrName);
		[propget, id(2), helpstring("Status of the group")] 
			HRESULT Status([out, retval] FAX_GROUP_STATUS_ENUM *pStatus);
		[propget, id(3), helpstring("Ordered collection of device IDs")] 
			HRESULT DeviceIds([out, retval] IFaxDeviceIds **pFaxDeviceIds);
	};
	[
		object,
		uuid(2F0F813F-4CE9-443E-8CA1-738CFAEEE149),
		dual,
		helpstring("IFaxDeviceIds interface"),
		pointer_default(unique)
	]
	interface IFaxDeviceIds : IDispatch
	{
        [id(DISPID_NEWENUM), propget] 
			HRESULT _NewEnum([out, retval] IUnknown **ppUnk);
        [id(DISPID_VALUE), propget] 
			HRESULT Item([in] long lIndex, [out, retval] long *plDeviceId);
        [id(1), propget] 
			HRESULT Count([out, retval] long* plCount);
		[id(2), helpstring("Add a device")] 
			HRESULT Add([in] long lDeviceId);
		[id(3), helpstring("Remove a device")] 
			HRESULT Remove([in] long lIndex);
		[id(4), helpstring("Set order of the device")] 
			HRESULT SetOrder([in] long lDeviceId, [in] long lNewOrder);
	};
	[
		object,
		uuid(DCEFA1E7-AE7D-4ED6-8521-369EDCCA5120),
		dual,
		helpstring("IFaxOutboundRoutingRules interface"),
		pointer_default(unique)
	]
	interface IFaxOutboundRoutingRules : IDispatch
	{
        [id(DISPID_NEWENUM), propget] 
			HRESULT _NewEnum([out, retval] IUnknown **ppUnk);
        [id(DISPID_VALUE), propget] 
			HRESULT Item([in] long lIndex, [out, retval] IFaxOutboundRoutingRule **pFaxOutboundRoutingRule);
        [id(1), propget] 
			HRESULT Count([out, retval] long* plCount);
        [id(2), helpstring("Get a rule by criteria")] 
			HRESULT ItemByCountryAndArea(
				[in] long lCountryCode, 
				[in] long lAreaCode, 
				[out, retval] IFaxOutboundRoutingRule **pFaxOutboundRoutingRule);
        [id(3), helpstring("Remove a rule by criteria")] 
			HRESULT RemoveByCountryAndArea([in] long lCountryCode, [in] long lAreaCode);
		[id(4), helpstring("Remove a rule")] 
			HRESULT Remove([in] long lIndex);
		[id(5), helpstring("Add a rule")] 
			HRESULT Add(
				[in] long lCountryCode, 
				[in] long lAreaCode, 
				[in] VARIANT_BOOL bUseDevice, 
				[in] BSTR bstrGroupName,
				[in] long lDeviceId,
				[out, retval] IFaxOutboundRoutingRule **pFaxOutboundRoutingRule);
	};
	[
		object,
		uuid(E1F795D5-07C2-469F-B027-ACACC23219DA),
		dual,
		helpstring("IFaxOutboundRoutingRule interface"),
		pointer_default(unique)
	]
	interface IFaxOutboundRoutingRule : IDispatch
	{
		typedef enum FAX_RULE_STATUS_ENUM
		{
			frsVALID, 			
			frsEMPTY_GROUP,
			frsALL_GROUP_DEV_NOT_VALID,
			frsSOME_GROUP_DEV_NOT_VALID,
			frsBAD_DEVICE
		} FAX_RULE_STATUS_ENUM;

		[propget, id(1), helpstring("Country code")] 
			HRESULT CountryCode([out, retval] long *plCountryCode);
		[propget, id(2), helpstring("Area code")] 
			HRESULT AreaCode([out, retval] long *plAreaCode);
		[propget, id(3), helpstring("Status")] 
			HRESULT Status([out, retval] FAX_RULE_STATUS_ENUM *pStatus);
		[propget, id(4), helpstring("Uses single device or group")] 
			HRESULT UseDevice([out, retval] VARIANT_BOOL *pbUseDevice);
		[propput, id(4), helpstring("Uses single device or group")] 
			HRESULT UseDevice([in] VARIANT_BOOL bUseDevice);
		[propget, id(5), helpstring("Destination device")] 
			HRESULT DeviceId([out, retval] long *plDeviceId);
		[propput, id(5), helpstring("Destination device")] 
			HRESULT DeviceId([in] long DeviceId);
		[propget, id(6), helpstring("Group name")] 
			HRESULT GroupName([out, retval] BSTR *pbstrGroupName);
		[propput, id(6), helpstring("Group name")] 
			HRESULT GroupName([in] BSTR bstrGroupName);
		[id(7), helpstring("Refresh the object")] 
			HRESULT Refresh();
		[id(8), helpstring("Save the object")] 
			HRESULT Save();
	};
	[
		object,
		uuid(2F6C9673-7B26-42DE-8EB0-915DCD2A4F4C),
		dual,
		helpstring("IFaxInboundRoutingExtensions interface"),
		pointer_default(unique)
	]
	interface IFaxInboundRoutingExtensions : IDispatch
	{
        [id(DISPID_NEWENUM), propget] 
			HRESULT _NewEnum([out, retval] IUnknown **ppUnk);
        [id(DISPID_VALUE), propget] 
			HRESULT Item([in] VARIANT vIndex, [out, retval] IFaxInboundRoutingExtension **pFaxInboundRoutingExtension);
        [id(1), propget] 
			HRESULT Count([out, retval] long* plCount);
	};
	[
		object,
		uuid(885B5E08-C26C-4EF9-AF83-51580A750BE1),
		dual,
		helpstring("IFaxInboundRoutingExtension interface"),
		pointer_default(unique)
	]
	interface IFaxInboundRoutingExtension : IDispatch
	{
		[propget, id(1), helpstring("Extension's friendly name")] 
			HRESULT FriendlyName([out, retval] BSTR *pbstrFriendlyName);
		[propget, id(2), helpstring("Full path and file name of the extension DLL")] 
			HRESULT ImageName([out, retval] BSTR *pbstrImageName);
		[propget, id(3), helpstring("Extension's unique name")] 
			HRESULT UniqueName([out, retval] BSTR *pbstrUniqueName);
		[propget, id(4), helpstring("The major part of extension's version number")] 
			HRESULT MajorVersion([out, retval] long *plMajorVersion);
		[propget, id(5), helpstring("The minor part of extension's version number")] 
			HRESULT MinorVersion([out, retval] long *plMinorVersion);
		[propget, id(6), helpstring("The major part of extension's build number")] 
			HRESULT MajorBuild([out, retval] long *plMajorBuild);
		[propget, id(7), helpstring("The minor part of extension's build number")] 
			HRESULT MinorBuild([out, retval] long *plMinorBuild);
		[propget, id(8), helpstring("Is extension built in debug environment")] 
			HRESULT Debug([out, retval] VARIANT_BOOL *pbDebug);
		[propget, id(9), helpstring("Load and initialization status of the extension")] 
			HRESULT Status([out, retval] FAX_PROVIDER_STATUS_ENUM *pStatus);
		[propget, id(10), helpstring("Last error code at load or initialization")] 
			HRESULT InitErrorCode([out, retval] long *plInitErrorCode);
		[propget, id(11), helpstring("Array of methods exposed by extension")] 
			HRESULT Methods([out, retval] VARIANT *pvMethods);
	};
	[
		object,
		uuid(783FCA10-8908-4473-9D69-F67FBEA0C6B9),
		dual,
		helpstring("IFaxInboundRoutingMethods interface"),
		pointer_default(unique)
	]
	interface IFaxInboundRoutingMethods : IDispatch
	{
        [id(DISPID_NEWENUM), propget] 
			HRESULT _NewEnum([out, retval] IUnknown **ppUnk);
        [id(DISPID_VALUE), propget] 
			HRESULT Item([in] VARIANT vIndex, [out, retval] IFaxInboundRoutingMethod **pFaxInboundRoutingMethod);
        [id(1), propget] 
			HRESULT Count([out, retval] long* plCount);
	};
	[
		object,
		uuid(45700061-AD9D-4776-A8C4-64065492CF4B),
		dual,
		helpstring("IFaxInboundRoutingMethod interface"),
		pointer_default(unique)
	]
	interface IFaxInboundRoutingMethod : IDispatch
	{
		[propget, id(1), helpstring("The name of the method")] 
			HRESULT Name([out, retval] BSTR *pbstrName);
		[propget, id(2), helpstring("GUID of the method")] 
			HRESULT GUID([out, retval] BSTR *pbstrGUID);
		[propget, id(3), helpstring("Internal function name")] 
			HRESULT FunctionName([out, retval] BSTR *pbstrFunctionName);
		[propget, id(4), helpstring("Friendly name of the extension exposing this method")] 
			HRESULT ExtensionFriendlyName([out, retval] BSTR *pbstrExtensionFriendlyName);
		[propget, id(5), helpstring("Image name of the extension exposing this method")] 
			HRESULT ExtensionImageName([out, retval] BSTR *pbstrExtensionImageName);
		[propget, id(6), helpstring("Priority of the method")] 
			HRESULT Priority([out, retval] long *plPriority);
		[propput, id(6), helpstring("Priority of the method")] 
			HRESULT Priority([in] long lPriority);
		[id(7), helpstring("Refresh the object")] 
			HRESULT Refresh();
		[id(8), helpstring("Save the object")] 
			HRESULT Save();
	};
	
[
	uuid(2BF34C1A-8CAC-419F-8547-32FDF6505DB8),
	version(1.0),
	helpstring("Microsoft Fax Service Extended COM Type Library")
]
library FAXCOMEXLib
{
	importlib("stdole32.tlb");
	importlib("stdole2.tlb");

	[
		uuid(2E037B27-CF8A-4abd-B1E0-5704943BEA6F),
		helpstring("_IFaxServerNotify Interface")
	]
	dispinterface IFaxServerNotify 
	{
		properties:
		methods:
		[id(1), helpstring("An incoming job was added to the fax server's incoming queue")] 
			HRESULT OnIncomingJobAdded([in] IFaxServer *pFaxServer, [in] BSTR bstrJobId);
		[id(2), helpstring("An incoming job was removed from the fax server's incoming queue")] 
			HRESULT OnIncomingJobRemoved([in] IFaxServer *pFaxServer, [in] BSTR bstrJobId);
		[id(3), helpstring("An incoming job's status was changed")] 
			HRESULT OnIncomingJobChanged(
				[in] IFaxServer *pFaxServer, 
				[in] BSTR bstrJobId, 
				[in] IFaxJobStatus *pJobStatus);
		[id(4), helpstring("An outgoing job was added to the fax server's outgoing queue")] 
			HRESULT OnOutgoingJobAdded([in] IFaxServer *pFaxServer, [in] BSTR bstrJobId);
		[id(5), helpstring("An outgoing job was removed from the fax server's outgoing queue")] 
			HRESULT OnOutgoingJobRemoved([in] IFaxServer *pFaxServer, [in] BSTR bstrJobId);
		[id(6), helpstring("An outgoing job's status was changed")] 
			HRESULT OnOutgoingJobChanged(
				[in] IFaxServer *pFaxServer, 
				[in] BSTR bstrJobId, 
				[in] IFaxJobStatus *pJobStatus);
		[id(7), helpstring("An incoming message was added to the fax server's incoming archive")] 
			HRESULT OnIncomingMessageAdded([in] IFaxServer *pFaxServer, [in] BSTR bstrMessageId);
		[id(8), helpstring("An incoming message was removed from the fax server's incoming archive")] 
			HRESULT OnIncomingMessageRemoved([in] IFaxServer *pFaxServer, [in] BSTR bstrMessageId);
		[id(9), helpstring("An outgoing message was added to the fax server's outgoing archive")] 
			HRESULT OnOutgoingMessageAdded([in] IFaxServer *pFaxServer, [in] BSTR bstrMessageId);
		[id(10), helpstring("An outgoing message was removed from the fax server's outgoing archive")] 
			HRESULT OnOutgoingMessageRemoved([in] IFaxServer *pFaxServer, [in] BSTR bstrMessageId);
		[id(11), helpstring("Receipt options change")] 
			HRESULT OnReceiptOptionsChange([in] IFaxServer *pFaxServer);
		[id(12), helpstring("Activity logging configuration change")] 
			HRESULT OnActivityLoggingConfigChange([in] IFaxServer *pFaxServer);
		[id(13), helpstring("Security configuration change")] 
			HRESULT OnSecurityConfigChange([in] IFaxServer *pFaxServer);
		[id(14), helpstring("Event logging configuration change")] 
			HRESULT OnEventLoggingConfigChange([in] IFaxServer *pFaxServer);
		[id(15), helpstring("Outgoing queue configuration change")] 
			HRESULT OnOutgoingQueueConfigChange([in] IFaxServer *pFaxServer);
		[id(16), helpstring("Outgoing archive configuration change")] 
			HRESULT OnOutgoingArchiveConfigChange([in] IFaxServer *pFaxServer);
		[id(17), helpstring("Incoming archive configuration change")] 
			HRESULT OnIncomingArchiveConfigChange([in] IFaxServer *pFaxServer);
		[id(18), helpstring("Devices configuration change")] 
			HRESULT OnDevicesConfigChange([in] IFaxServer *pFaxServer);
		[id(19), helpstring("Outbound routing groups configuration change")] 
			HRESULT OnOutboundRoutingGroupsConfigChange([in] IFaxServer *pFaxServer);
		[id(20), helpstring("Outbound routing rules configuration change")] 
			HRESULT OnOutboundRoutingRulesConfigChange([in] IFaxServer *pFaxServer);
		[id(21), helpstring("Server activity change")] 
			HRESULT OnServerActivityChange(
				[in] IFaxServer *pFaxServer, 
				[in] long lIncomingMessages,
				[in] long lRoutingMessages, 
				[in] long lOutgoingMessages, 
				[in] long lQueuedMessages);
		[id(22), helpstring("Queues status change")] 
			HRESULT OnQueuesStatusChange(
				[in] IFaxServer *pFaxServer, 
				[in] VARIANT_BOOL bOutgoingQueueBlocked, 
				[in] VARIANT_BOOL bOutgoingQueuePaused,
				[in] VARIANT_BOOL bIncomingQueueBlocked);
		[id(23), helpstring("Incoming call")] 
			HRESULT OnNewCall(
				[in] IFaxServer *pFaxServer, 
				[in] long lCallId, 
				[in] long lDeviceId, 
				[in] BSTR bstrCallerId);
		[id(24), helpstring("Server shut down")] 
			HRESULT OnServerShutDown([in] IFaxServer *pFaxServer);
		[id(25), helpstring("Device status change")] 
			HRESULT OnDeviceStatusChange(
				[in] IFaxServer *pFaxServer, 
				[in] long lDeviceId, 
				[in] VARIANT_BOOL bPoweredOff, 
				[in] VARIANT_BOOL bSending, 
				[in] VARIANT_BOOL bReceiving,
				[in] VARIANT_BOOL bRinging);
	};

	[
		uuid(CDA8ACB0-8CF5-4F6C-9BA2-5931D40C8CAE),
		helpstring("FaxServer Class")
	]
	coclass FaxServer
	{
		[default] interface IFaxServer;
		[default, source] dispinterface IFaxServerNotify;
	};
	[
		uuid(EB8FE768-875A-4F5F-82C5-03F23AAC1BD7),
		helpstring("FaxDeviceProviders Class"),
		noncreatable
	]
	coclass FaxDeviceProviders
	{
		[default] interface IFaxDeviceProviders;
	};
	[
		uuid(5589E28E-23CB-4919-8808-E6101846E80D),
		helpstring("FaxDevices Class"),
		noncreatable
	]
	coclass FaxDevices
	{
		[default] interface IFaxDevices;
	};
	[
		uuid(E80248ED-AD65-4218-8108-991924D4E7ED),
		helpstring("FaxInboundRouting Class"),
		noncreatable
	]
	coclass FaxInboundRouting
	{
		[default] interface IFaxInboundRouting;
	};
	[
		uuid(C35211D7-5776-48CB-AF44-C31BE3B2CFE5),
		helpstring("FaxFolders Class"),
		noncreatable
	]
	coclass FaxFolders
	{
		[default] interface IFaxFolders;
	};
	[
		uuid(1BF9EEA6-ECE0-4785-A18B-DE56E9EEF96A),
		helpstring("FaxLoggingOptions Class"),
		noncreatable
	]
	coclass FaxLoggingOptions
	{
		[default] interface IFaxLoggingOptions;
	};
	[
		uuid(CFEF5D0E-E84D-462E-AABB-87D31EB04FEF),
		helpstring("FaxActivity Class"),
		noncreatable
	]
	coclass FaxActivity
	{
		[default] interface IFaxActivity;
	};
	[
		uuid(C81B385E-B869-4AFD-86C0-616498ED9BE2),
		helpstring("FaxOutboundRouting Class"),
		noncreatable
	]
	coclass FaxOutboundRouting
	{
		[default] interface IFaxOutboundRouting;
	};
	[
		uuid(6982487B-227B-4C96-A61C-248348B05AB6),
		helpstring("FaxReceiptOptions Class"),
		noncreatable
	]
	coclass FaxReceiptOptions
	{
		[default] interface IFaxReceiptOptions;
	};
	[
		uuid(10C4DDDE-ABF0-43DF-964F-7F3AC21A4C7B),
		helpstring("FaxSecurity Class"),
		noncreatable
	]
	coclass FaxSecurity
	{
		[default] interface IFaxSecurity;
	};
	[
		uuid(0F3F9F91-C838-415E-A4F3-3E828CA445E0),
		helpstring("FaxDocument Class")
	]
	coclass FaxDocument
	{
		[default] interface IFaxDocument;
	};
	[
		uuid(265D84D0-1850-4360-B7C8-758BBB5F0B96),
		helpstring("FaxSender Class"),
		noncreatable
	]
	coclass FaxSender
	{
		[default] interface IFaxSender;
	};
	[
		uuid(EA9BDF53-10A9-4D4F-A067-63C8F84F01B0),
		helpstring("FaxRecipients Class"),
		noncreatable
	]
	coclass FaxRecipients
	{
		[default] interface IFaxRecipients;
	};
	[
		uuid(8426C56A-35A1-4C6F-AF93-FC952422E2C2),
		helpstring("FaxIncomingArchive Class"),
		noncreatable
	]
	coclass FaxIncomingArchive
	{
		[default] interface IFaxIncomingArchive;
	};
	[
		uuid(69131717-F3F1-40E3-809D-A6CBF7BD85E5),
		helpstring("FaxIncomingQueue Class"),
		noncreatable
	]
	coclass FaxIncomingQueue
	{
		[default] interface IFaxIncomingQueue;
	};
	[
		uuid(43C28403-E04F-474D-990C-B94669148F59),
		helpstring("FaxOutgoingArchive Class"),
		noncreatable
	]
	coclass FaxOutgoingArchive
	{
		[default] interface IFaxOutgoingArchive;
	};
	[
		uuid(7421169E-8C43-4B0D-BB16-645C8FA40357),
		helpstring("FaxOutgoingQueue Class"),
		noncreatable
	]
	coclass FaxOutgoingQueue
	{
		[default] interface IFaxOutgoingQueue;
	};
	[
		uuid(6088E1D8-3FC8-45C2-87B1-909A29607EA9),
		helpstring("FaxIncomingMessageIterator Class"),
		noncreatable
	]
	coclass FaxIncomingMessageIterator
	{
		[default] interface IFaxIncomingMessageIterator;
	};
	[
		uuid(1932FCF7-9D43-4D5A-89FF-03861B321736),
		helpstring("FaxIncomingMessage Class"),
		noncreatable
	]
	coclass FaxIncomingMessage
	{
		[default] interface IFaxIncomingMessage;
	};
	[
		uuid(92BF2A6C-37BE-43FA-A37D-CB0E5F753B35),
		helpstring("FaxOutgoingJobs Class"),
		noncreatable
	]
	coclass FaxOutgoingJobs
	{
		[default] interface IFaxOutgoingJobs;
	};
	[
		uuid(71BB429C-0EF9-4915-BEC5-A5D897A3E924),
		helpstring("FaxOutgoingJob Class"),
		noncreatable
	]
	coclass FaxOutgoingJob
	{
		[default] interface IFaxOutgoingJob;
	};
	[
		uuid(8A3224D0-D30B-49DE-9813-CB385790FBBB),
		helpstring("FaxOutgoingMessageIterator Class"),
		noncreatable
	]
	coclass FaxOutgoingMessageIterator
	{
		[default] interface IFaxOutgoingMessageIterator;
	};
	[
		uuid(91B4A378-4AD8-4AEF-A4DC-97D96E939A3A),
		helpstring("FaxOutgoingMessage Class"),
		noncreatable
	]
	coclass FaxOutgoingMessage
	{
		[default] interface IFaxOutgoingMessage;
	};
	[
		uuid(A1BB8A43-8866-4FB7-A15D-6266C875A5CC),
		helpstring("FaxIncomingJobs Class"),
		noncreatable
	]
	coclass FaxIncomingJobs
	{
		[default] interface IFaxIncomingJobs;
	};
	[
		uuid(C47311EC-AE32-41B8-AE4B-3EAE0629D0C9),
		helpstring("FaxIncomingJob Class"),
		noncreatable
	]
	coclass FaxIncomingJob
	{
		[default] interface IFaxIncomingJob;
	};
	[
		uuid(17CF1AA3-F5EB-484A-9C9A-4440A5BAABFC),
		helpstring("FaxDeviceProvider Class"),
		noncreatable
	]
	coclass FaxDeviceProvider
	{
		[default] interface IFaxDeviceProvider;
	};
	[
		uuid(59E3A5B2-D676-484B-A6DE-720BFA89B5AF),
		helpstring("FaxDevice Class"),
		noncreatable
	]
	coclass FaxDevice
	{
		[default] interface IFaxDevice;
	};
	[
		uuid(F0A0294E-3BBD-48B8-8F13-8C591A55BDBC),
		helpstring("FaxActivityLogging Class"),
		noncreatable
	]
	coclass FaxActivityLogging
	{
		[default] interface IFaxActivityLogging;
	};
	[
		uuid(A6850930-A0F6-4A6F-95B7-DB2EBF3D02E3),
		helpstring("FaxEventLogging Class"),
		noncreatable
	]
	coclass FaxEventLogging
	{
		[default] interface IFaxEventLogging;
	};
	[
		uuid(CCBEA1A5-E2B4-4B57-9421-B04B6289464B),
		helpstring("FaxOutboundRoutingGroups Class"),
		noncreatable
	]
	coclass FaxOutboundRoutingGroups
	{
		[default] interface IFaxOutboundRoutingGroups;
	};
	[
		uuid(0213F3E0-6791-4D77-A271-04D2357C50D6),
		helpstring("FaxOutboundRoutingGroup Class"),
		noncreatable
	]
	coclass FaxOutboundRoutingGroup
	{
		[default] interface IFaxOutboundRoutingGroup;
	};
	[
		uuid(CDC539EA-7277-460E-8DE0-48A0A5760D1F),
		helpstring("FaxDeviceIds Class"),
		noncreatable
	]
	coclass FaxDeviceIds
	{
		[default] interface IFaxDeviceIds;
	};
	[
		uuid(D385BECA-E624-4473-BFAA-9F4000831F54),
		helpstring("FaxOutboundRoutingRules Class"),
		noncreatable
	]
	coclass FaxOutboundRoutingRules
	{
		[default] interface IFaxOutboundRoutingRules;
	};
	[
		uuid(6549EEBF-08D1-475A-828B-3BF105952FA0),
		helpstring("FaxOutboundRoutingRule Class"),
		noncreatable
	]
	coclass FaxOutboundRoutingRule
	{
		[default] interface IFaxOutboundRoutingRule;
	};
	[
		uuid(189A48ED-623C-4C0D-80F2-D66C7B9EFEC2),
		helpstring("FaxInboundRoutingExtensions Class"),
		noncreatable
	]
	coclass FaxInboundRoutingExtensions
	{
		[default] interface IFaxInboundRoutingExtensions;
	};
	[
		uuid(1D7DFB51-7207-4436-A0D9-24E32EE56988),
		helpstring("FaxInboundRoutingExtension Class"),
		noncreatable
	]
	coclass FaxInboundRoutingExtension
	{
		[default] interface IFaxInboundRoutingExtension;
	};
	[
		uuid(25FCB76A-B750-4B82-9266-FBBBAE8922BA),
		helpstring("FaxInboundRoutingMethods Class"),
		noncreatable
	]
	coclass FaxInboundRoutingMethods
	{
		[default] interface IFaxInboundRoutingMethods;
	};
	[
		uuid(4B9FD75C-0194-4B72-9CE5-02A8205AC7D4),
		helpstring("FaxInboundRoutingMethod Class"),
		noncreatable
	]
	coclass FaxInboundRoutingMethod
	{
		[default] interface IFaxInboundRoutingMethod;
	};
	[
		uuid(7BF222F4-BE8D-442f-841D-6132742423BB),
		helpstring("FaxJobStatus Class"),
		noncreatable
	]
	coclass FaxJobStatus
	{
		[default] interface IFaxJobStatus;
	};
	[
		uuid(60BF3301-7DF8-4bd8-9148-7B5801F9EFDF),
		helpstring("FaxRecipient Class"),
		noncreatable
	]
	coclass FaxRecipient
	{
		[default] interface IFaxRecipient;
	};

	typedef enum FAX_ROUTING_RULE_CODE_ENUM 
	{
		frrcANY_CODE    = 0
	} FAX_ROUTING_RULE_CODE_ENUM;


    [dllname("FxsComEx.dll")]
    module FaxConstants
    {
		[helpstring("Default prefetch size for message iterators")]
        const long lDEFAULT_PREFETCH_SIZE = prv_DEFAULT_PREFETCH_SIZE;

		[helpstring("Name of the group which contains all devices")]
        const BSTR bstrGROUPNAME_ALLDEVICES = L"<All Devices>";
    }
};
