Fax service

zhaozj2021-02-08  353

This is also posted to the notepad and then passed, the format is gone, huh, huh.

This is also something long ago. If there is something wrong, please please forgive me!

Inside the illustration, you can watch MSDN (here you can't copy in the graphic, so trouble, sorry)

Fax Services Chapter 1 Microsoft Fax Services Introduction Microsoft® Fax Service is a system service that makes network users to send and receive faxes from the application, this service can be in Microsoft® Windows® 2000 and Subsequent versions are obtained and have the following features: (1) Transfer Fax (2) Flexible Receive Fax (3) Archive The Fax Fax file server and device configuration management The following table details the application interface that can be used to develop fax clients and extension fax services ( API). Fax Services Customer API software developers can merge basic fax functions in the client application, including output fax services, query, and managing fax jobs and fax devices. Fax Route Extended API Third Party's software vendors expand the fax service by defining input fax routing extensions. This extension provides a flexible way to connect applications that receive faxes, such as printing, saving faxes, transform fax graphics images to text files, etc. Fax Service Provider API Fax Equipment Manufacturer provides fax service providers supported by non-modulated demodulator telephone equipment that meets the International Telecommunication Union (ITU) T.30 specification. (Microsoft Modem Fax Service Provider provides the T.30 fax protocol support with fax service modem devices.) The following figure shows the basic structure fax service provider and fax routing extension dynamic link library (DLLS) by the fax service. Equipment Manufacturer (OEM) is available. Chapter 2 Fax Service Customer Application Interface (API) Fax Service Customer API allows customers to merge basic fax features in their applications. This technique is suitable for computers running Windows 2000 and higher. The API includes Win32 functions and COM dual interface implementation. The first part of this chapter is a task that uses the fax service customer API and supports the components needed for this feature. It also describes the security of the fax service. Finally, the fax port, transmission fax, fax cover, and fax route method are simple. discuss. The second part discusses the difference in fax programs in the environment in the environment. Fax client functions, COM dual interfaces, and the following related programming tasks are also discussed. (1) Connect to the Fax Server (2) Fax Server Configuration Management (3) Fax Device Management ⑷ Management Fax Routing Data ⑸ Send Fax ⑹ Management Fax Jobs Release Fax Resource ⑻ Disconnect connection Note: Before reading this article, you should apply Programming Interface (TAPI) and Microsoft® Telephone Service Providers (TSPI) are familiar, if you plan to use a COM implementation of fax customers, you should be familiar with COM (Part Object Model) and Automation Programming Concept. 2.1, Fax Service Customer API Introduction Microsoft® Fax Services provides fax services to customers on the local network (LAN). Fax Service Customer API allows developers to merge services in their applications and activate basic fax features. Fax Service Customer API includes Win32 function interfaces and COM interfaces. (1 )WIN32 Environment WIN32 function is implemented as dynamic link library Winfax.dll file. This is a client / server implementation mode that allows fax customers on remote computers to communicate with fax servers using RPC. The client can use the shared network fax printer access to the output fax service, or the application can call the function in the fax service customer API to connect a remote fax server for fax delivery. (2) COM implementation Environment COM interface as a dual interface is received and implemented by VB and C / C programmers. This article provides reference materials for both programming languages. The following figure shows the outline of the fax client application: To implement the fax service, you must include Winfax.h header files in the original code file, and the fax customer COM implementation to be supported using Microsoft must contain the faxcom.h header file. 2.1.1 Fax Service Customer API Features Fax Services Customer API enables fax client applications to perform the following tasks: (1) Passing a document stored in your computer. The application can transmit the document as an acceptor that is transmitted to a plurality of programs definitions as a fax. (2) Transfer a cover page.

The user can use the fax to transfer a cover page, which can be a public cover page on the server, or a personal cover page. (3) Transfer an active document by using the print document as the device context. Document-based applications prevent the display of the fax transmission wizard. The program can provide the fax customer graphics device interface (GDI) to provide transmit information, and print it into a fax device context to transmit a movable document. ⑷ Transfer a fax document to the activity call. Use the existing input link line to transfer documents to save the fees for sending faxes, which is called "FaxBack service". ⑸ Use a fax sending wizard to send an active document. The user can transfer the document by printing a document into a fax printer. Fax Sending Wizard collects user transfer information, while developers only need to use the print function. ⑹ Change the configuration of the fax device and the fax server. The application provides configuration management or can be configured using fax configuration service management applications in the Microsoft Management Console (MMC) plug-in component. 2.1.2, Fax Service Customer API software requires the following components to be required to support fax service customer API features: (1) Fax Service (FaxSvc.exe). Supporting fax services can manage fax devices, configure data, provide print services and send and receive fax files. The extension fax service can also be initialized and retransmitted by the fax routing fax service. (2 )winfax.Lab. Contains a static link library with a fax service customer API feature. WINFAX.DLL. A dynamic link library that includes fax service client API features. In addition, you must include a WinFax.h header file in the source code file; and the Fax Customer COM implemented using Microsoft, it must be included in the faxcom.h header file. Fax service can communicate with a network client using RPC. Although there is no need to install a fax service on each customer computer, the service must be accessible from the RPC to the client computer. 2.1.3, Fax Services Executable Files and related files The following table describes executables, DLLs, and header files related to fax services. File Name Description FaxSvr.exe Management Fax device, configuration data, fax service support application for printing services and sending and receiving fax files, FaxAdmin.dll Microsoft Management Console (MMC) plug-in components, provides configuration Management function. Faxmon.dll contains dynamic link library for fax print monitor Winfax.dll contains dynamic link library with fax service client API function. EXE Fax Cover Page Edit Application Faxext32.dll The dynamic link library containing the MAPI user interface extension FAXXP32.DLL contains the dynamic link library that contains the fax mail transfer function. Faxroute.dll contains a dynamic link library with Microsoft® fax routing extensions. Faxdev.h includes a header file with a fax service provider API prototype. Faxroute.h includes fax routing extended API prototype head file winfax.h includes fax customer service API WIN32 environment prototype head file faxt30.dll contains a dynamic link library of Microsoft® Modem Fax Service Provider Dynamic Link Link FaxDrv.dll Fax Printer Drive Dynamic Link Library Faxi.dll Fax Printer Driver Dynamic Link Library 2.1.4, Device and Configuration Management Fax Service Provided Fax Service Management Application is one of the Microsoft Management Console (MMC) plug-in components, fax clients can configure or use The management program performs the following configuration management tasks: (1) Device (2) Specify the route method that can be performed on the port (3) Configuration Global Service Data 2.1.5, Fax Port This chapter is always seen as a fax device and Configure and input information route with the device, the fax service provides the user with one or more fax ports as the end point of the fax transmission. Fax virtual devices also exist fax ports, which means that the fax can be output to the non-harvest physical device terminal connected to the fax server. Fax service providers supporting Internet transfer faxes are examples of vendors using virtual fax devices. 2.1.6, Fax Port Access Level Fax Service Customer API Allows the application to query and modify the configuration data of the fax port.

(1) Win32 Environment In order to enable users to access the port configuration data, the fax client application must specify the correct fax port access level when calling the FaxOpenPort function. FaxOpenPort returns the fax port handle and opens the port based on the specified access level. The application can query the following value according to the user's needs and license: Value port_open_query call FAXGETPORT, FAXENUMPORT, and FAXGETDEVICESTATUS Function Query Fax port information Port Access level port_open_modify calls the port access level of the fax port configuration, default is to be with port_open_query Access level contact access. In addition to the appropriate access level open, the fax service also requires the user to query and modify port data, there is appropriate access. To get a fax port handle and query port data, the user must get a FAX_PORT_QUERY license; to modify port data, the user must get a FAX_Port_set license. Fax client application can call the FaxAccessCheck function to query the user's access. You can also use a fax service management application for one of the Microsoft Management Console (MMC) plug-in components to modify user port access rights. (2) COM implementation Environment Before the application calls the modified FaxPort property, you must call the IFAXPORT: CANMODIFY method (retrieve the CANMODIFY properties of the FaxPort object in V B) to ensure that the customer has the right to modify the port configuration. 2.1.7, Fax Customer User Access Fax Service is a safe service. In the Win32 environment, the user must have access to successfully call a fax client function, and each customer program calls the fax client function before the service is accessed. The application can check the user's access rights by calling the FaxAccessCheck function. If you use Microsoft® COM implementation, the fax client application cannot get the function. If the customer does not perform access rights for a specific task, the method or function fails and returns HRESULT_FROM_WIN32 (ERROR_ACCESS_DENIED). Microsoft Management Console (MMC) Plug-in Components Fax Service Management Application provides users with query and modify job access, port access, and global configuration data access. The content of the fax access authority will be described in detail below. 2.1.7.1, Specific Fax Access Rights If you use Microsoft COM implementation, the fax client application cannot take this feature. Fax Service Customer API Defines the following specific access to provide security for users, fax, fax, fax documents, providing security. Value Fax_Config_Query Allows Fax_Config_SET to allow Fax_Config_SET to allow the Fax_Job_Manage to terminate the fax job or change the status of the fax job in the program to terminate the fax job or change the status of the fax job queue to allow the query queue and the event fax job Fax_JOB_SUBMIT allows sending a fax to one or more recipients fax_port_query to configure, status, and routing algorithm data at port-level query; this access is capable of obtaining and closing the fax port handle FAX_PORT_SET Allows to modify configuration and routing method data in port level; Permissions have the ability to enable or block the fax routing algorithm 2.7.2, General Fax Access Rights If you use Microsoft COM implementation, the fax client application cannot take this feature. Fax Service Customer API Defines the following general fax access, public rights default users have specific fax access: Value Fax_read contains read-only permissions approved by specific access fax_job_query, fax_config_query, and fax_write, FAX_WRITE, this access is equivalent to FAX_JOB_SUBMIT Specific Access Permission License. Note that this permission is not included in the port or server-level modification data license.

FAX_ALL_ACCESS including all accredited by the following specific read and write access to the license: FAX_CONFIG_QUERY, FAX_CONFIG_SET, FAX_JOB_MANAGE, FAX_JOB_QUERY, FAX_JOB_SUBMIT, FAX_PORT_QUERY and FAX_PORT_SET2.1.7.3, fax function requires access to the following table lists the under win32 environment, the user successfully Access access available after a fax customer function is called. Access function FAX_CONFIG_QUERY (fax configure the query) FaxEnumGlobalRoutingInFo FaxGetConFiguration FaxGetLoggingCategoriesFAX_CONFIG_SET (fax configuration settings) FaxSetConFiguration FaxSetGlobalRoutingInFo FaxSetLoggingCategoriesFAX_JOB_QUERY (fax job inquiries) FaxEnumJobs FaxGetJob FaxGetPageDataFAX_JOB_SET (fax job settings) FaxAbort FaxSetJobFAX_JOB_SUBMIT (fax job submission) FaxSendDocument FaxSendDocumentForBroadcast FAX_PORT_QUERY (fax port query) FaxClose FaxEnumPorts * FaxEnumRoutingMethods FaxEnumRoutingMethods FaxGetDeviceStatus * FaxGetPort * FaxGetRoutingInFo FaxOpenPortFAX_PORT_SET (fax port settings) FaxEnableRoutingMethod FaxSetPort * FaxSetRoutingInFo * this function requires a specific fax port access level. Note: The FAX_JOB_MANAGE access level allows the user to call the Faxabort function and the FaxSetJob function. 2.1.8, the transfer fax transmission output fax has the following points: (1) Document file. Fax service conversion data is a fax tag image file format f class format (TIFF 6.0 F). (2) Send information. This information includes fax serial numbers, senders, and recipient data, optional billing encoding methods, and job arrangements. In the Win32 environment, if the application is printed onto the device context, the FAX_PRINT_INFO structure contains this information. Otherwise, information is included by the FAX_JOB_PARAM structure. If you use Microsoft®com implementations, you can set multiple properties of the FaxJob object to specify the send information. (3) Optional cover page file. In the Win32 environment, the FAX_COVERPAGE_INFO structure includes this data that provides a cover page template file name (.cov) and user-defined template information. If you use a Microsoft®com implementation, you can set multiple properties of the FaxDoc object to specify the cover page. 2.1.9, cover page cover page is a cover page template file (.cov) and a user-defined information provided to the template when fax transmission. Fax Service Customer API supports cover page printing. The cover page can be a personal cover page file stored on the local computer, or a public cover page stored on the fax server. To get a cover page, the user must provide a complete legal path to the cover page file or the relative path of the public cover page file.

Typically, the manager stores the public cover page file in the following position: // ServerName / Fax $ / Cover on your personal computer system, public cover page file is stored in: csidl_appdata / microsoft / windows NT / MSFAX / COVERPG users can By using a fax control panel application to add a personal cover page file, this file must be stored in the user's "My Document" standard folder as follows: CSIDL_PERSONAL / FAX / PERSONAL COVERPAGES In addition, if the user wants to specify in the Win32 environment A public cover page file must set the USEServerCoverPage member of the Fax_CoverPage_info structure. In the COM implementation environment, you must set the servercoverPage property of the FaxDoc object. A fax client application can call the FaxPrintCoverPage function to print the cover page to the fax printer device context. 2.1.10, Fax Routing Method Fax Routing Method is a program that is defined by the fax routing extension dynamic link library (DLL). When the fax port receives the input fax, the fax routing method is performed in the priority order. For the following reasons, we need to use GUID to determine a fax routing method: (1) A fax route extension DLL can support multiple routing methods. (2) A fax route extended DLL can provide unique configuration data for each routing method and fax device. (3) Multi-fax routing DLLS can be used to output routing methods with the same name. 2.1.11, Fax Customer API Programming Tasks Let's specifically describe a typical task that requires the merge fax service customer API function in the fax client application. 2.1.11.1, Win32 Fax Customer Programming Tasks The following steps summarize the typical programming tasks that make a fax client application requires a fax client application in Win32 programming environments. (1) Call the FaxConnectFaxSever function to connect to the fax server. Note that the application must provide server name unless the server is a local computer. (2) When necessary, one or more fax service enumeration functions can be called. These functions allow users to view fax ports connected to the fax server and routing information connected to ports, also allow users to view the active fax job list. These enumeration functions include FaxenumGlobalRoutingInfo, FaxenumJobs, Faxenumports, and FaxenumRoutingMethods functions. (3) Call the FaxOpenPort function to get the fax port handle. ⑷ When necessary, you can call one or more of the FaxGetRoutingInfo, FaxEnableInfo, and FaxEnableRuntingMethod functions, and modify the routing information of the fax port. ⑸ You can call the FaxsendDocument or FaxsendDocumentForBroadcast function to transfer the fax file. Note that the application must provide transmission information such as fax serial number and receiver data. ⑹ Call the FaxFreeBuffer function to release the application to call the FaxCompleteJobParams function and the resources assigned when the Faxenum or FaxGet starts. The FaxClose function is called twice. The first call disconnects the application and the fax port, the second call disconnects the application and the fax server. In addition, the application needs to call other functions to query devices or server configuration data, manage fax jobs, and print faxes. 2.1.11.2, using COM implementation in C / C programs Summarizing the COM implementation environment, writing a fax client application with C / C requires a typical programming task that merges the fax service customer API function. (1) Call the CocreateInstance function Create a FaxServer object instance, then call the IFAXServer :: Connect interface method to connect to the active fax server.

(2) Call one or more of the following IFAXSever interface methods to create the required objects: a. Call the iFaxServer :: getJobs method Create a FaxJobs object, then use this object to create FaxJob objects and enumerate related fax jobs with the connected fax server . b. Call the IFAXServer :: getPorts method Create a FAXPORTS object and then use this object to create a FaxPort object and enumerate the related fax port configuration information with the connected fax server. c. Call the ifaxserver :: createDocument method Create a FaxDoc object, then use this object to send a fax and retrieve and set the faxdoc object properties. (3) After creating a FaxPort object instance for a specific port, you can call the iFaxport :: getRoutingMethods interface method to create a FaxRoutingMethod object, of course, you can also call the IFAXROUTINGMETHODS :: GET_ITEM interface method to create a FaxROUTINGMETHOD object. The FaxRoutingMethod object allows the programmer to query and modify the fax route information of the fax port. ⑷ Call the IFAXPORT :: GetStatus interface method to create a FaxStatus object, which allows the programmer to provide real-time status information about ports. ⑸ After creating a faxdoc object instance, you can call the iFaxdoc :: Send interface method to send a fax file. Note that applications must provide information such as fax serial numbers and names that will send files. Users can also provide additional data on the cover page by setting a variety of properties of the FaxDoc object. ⑹ Call the sysfreestring function to release the resources allocated by all interface methods that end_propertyname ends. ⑺ Call the IFAXServer :: Disconnect interface method Terminate the connection with the fax server, then call the iunknown :: release method to release the FaxServer object itself. In addition, you want to query the device or server configuration data, manage the fax job, and destroy the additional interface pointer application to call other interface methods, and the user needs to create a FAXTIFF object instance and call ifxtiff. Interface method. Note that the client application must call the CoCreateInstance function to create an instance of the FaxServer or fixtiff object. However, you cannot call the CocreateInstance function to create Faxdoc, Faxjobs, Faxjob, Faxports, Faxport, Faxstatus, FaxRoutingMethods, or FaxRoutingMethod objects. 2.1.11.3, using a COM implementation in the VB program summarizes the COM implementation environment, writing a fax client application with VB requires a typical programming task that merges the fax service customer API function. (1) Call the CreateObject function of the VB Create a FaxServer object instance, and then call the object's Connect method to connect to the active fax server. (2) One or more of the following FaxServer object methods can be called to create other objects required: a. After calling the getJobs method, you can use the object to create a FaxJob object and enumerate the fax associated with the connected fax server. operation. b. After calling the getPorts method, after creating a FAXPORTS object, you can use the object to create a FaxPort object and an enumerated fax port configuration information for the connected fax server. c. After calling createDocument, the method creates a FaxDoc object, you can use this object to transfer the fax and retrieve and set the faxdoc object properties. (3) After creating a FAXPORT object instance for a specific port, you can create a FaxRoutingMethods object. ⑷ Call the Item method of the FaxRoutingMethods to create a FaxRoutingMethod object that allows the user to query and modify the fax route information of the fax port.

⑸ Call the GetStatus method for the FaxPort object to create a FaxStatus object that allows the user to provide real-time fax port status information. ⑹ After creating an instance of the FaxDoc object, you can call the SEND method of the object to transfer a fax file. Note that the application must provide information such as fax serial number and transfer file name. Customers can also provide other data that appears on the cover page by setting different properties of the FaxDoc object. ⑺ Call the disconnect method of the FaxServer object to terminate the connection to the server. In addition, you want to query the server and device configuration parameters and the management fax job application needs to set other properties and call other methods, and users need to retrieve information about the fax service has sent and receiving files, you need to create a FAXTIFF object instance to complete the task. . 2.1.12, in most cases connected to the fax server, fax client applications must be connected to the fax server before using the fax feature. (1) Win32 environment To connect to the fax server, fax customer application must first call the FaxConnectFaxServer function before calling any other fax client function. This function returns the fax server handle that calls other fax client functions. Note that the connection to the fax server does not require printing the fax document to the fax printer device context. The program can provide transfer information directly to the fax customer graphics device interface (GDI) function, and transmit the active document by printing to the printer device. Fax customer GDI functions include FaxStartPrintJob and FaxPrintCoverPage functions. Call the FaxClose function to disconnect to the fax server and release the Handle returned by the FaxConnectFaxServer function. (2) COM implementation Environment In the C / C application, developers must call the CocreateInstance function to retrieve pointers to the IFAXServer interface and create an instance of a FaxServer object. The IFAXServer :: Connect method then initializes the connection to the active fax server. Before the application can access most of the interfaces starting with IFAX, they must be connected to the server. (If you access the ifxtiff interface, you don't have to connect to the fax server.) In the VB application, developers must call the vbcreateObject function to create a FaxServer object instance, then call the Connect method of the FaxServer object to initialize the connection to the active fax server. Before the application can access most of the objects starting with FAX, they must be connected to the server. (If you access the FAXTIFF interface, you do not have to be connected to the fax server.) 2.1.12, Fax Server Configuration Management Fax Service Customer API supports changing the fax server configuration data and provides a server-level configuration option. 2.1.12.1 Management Global Configuration Data must be connected to the active fax server to retrieve and change its configuration information, including settings for transfer, tag, archive, and cover pages, and discount rate cycles and fax server status queues. (1) Win32 Environment FaxGetConfiguration function allows the fax client application to query the global configuration settings for the fax server. The function returns query information in the FAX_CONFIGURATION structure. The FaxGetConfiguration function assigns memory required by the Fax_Configuration structure, so the application must call the FaxFreeBuffer function to release the allocated resources. The application can call the FaxSetConfiguration function to modify the global configuration settings for the fax server. Note; the application must call the FaxConnectFaxServer function before calling the FaxGetConfiguration function and the FaxSetConfiguration function to get the handle of the fax server. (2 ).com Implementation Environment Before retrieving and setting information about the FaxServer object, you must first connect to the active fax server.

In the C / C application, you can use the properties method of the IFAXServer interface to retrieve and set the global information of the FaxServer object; in the VB application, you can directly retrieve and set the properties of the FaxServer object. 2.1.12.2, the management log classification The current function is only available in the Win32 environment; it is not available to the COM implementation environment. The log classification determines the error type or the fax server records other event types in the application event log file. The log level describes the seriousness of the event recorded by the fax server. The FAXGETLOGGGINGCATEGORIES function allows the fax client to query the current log classification of the fax server. The function returns query information in one or more FAX_LOG_CATEGORY structures, and each structure describes a current log classification. Data includes a description name, classification number, and current log level. The memory required by the FAXGETLOGGGINGCATEGORIES function, so the application must call the FaxFreeBuffer function to release these resources. The application can modify the global configuration settings for the fax server by calling the FaxsetLogGingCategories function. Note: Before calling the FaxGetConfiguration function and the FaxSetConfiguration function, the application must call the FaxConnectFaxServer function to get the fax server handle. 2.1.13, Fax Device Management Fax Services Customer API supports changing fax route and device configuration data, and provides port level configuration option information. 2.1.13.1, Query Fax Port Data (Win32 Environment) Fax client application calls the FaxEnumports function to display all fax devices connected to the fax server, and to query a separate fax device, you must call the FaxGetPort function. The two functions returned to detailed device information through the FAX_PORT_INFO structure, and one device corresponds to a structure. The data includes a permanent line identifier, status and compatibility of the current port. Note: The application must call the FaxOpenport function before calling the FAXGETPORT function and specify the access level of the port_open_query port. You can call the FaxGetDeviceStatus function to display the status of a fax device connected to the current fax server, and the function returns data in the FAX_DEVICE_STATUS structure. Structure includes current device status flag bits, devices, and their location identifiers, transmission, and receiver names, and fax routing information. Note Applications Before calling the FaxEnumports function, you must call the FaxConnectFaxServer function to get the fax server handle; before calling the FaxGetDeviceStatus function and the FaxGetPort function, you must call the FaxOpenport function first specify the access level of the Port_Open_Query port and get the fax port handle. Because the functions starting with FAXGET and FAXENUM assigns the memory required by the data buffer, the application must call the FaxFreeBuffer function to release these resources. The application can call the FaxSetPort function to modify the configuration settings for a fax device. 2.1.13.2, Query Fax Port Data (COM Implementation) FAXPORT object provides a permanent line identifier for the fax client application and the port current state, or you can retrieve priority transfer rights assigned to the port. Before the port response call, enter the ring of the fax call in the waiting state, regardless of whether the current port is transferred and accepted. Once you have created a Faxport object instance, you can call your ifaxport :: getStatus method (STATUS method in VB to use the FaxPort object) Create a FaxStatus object. Use the FaxStatus object to retrieve real-time status information for the father FAXPORT object. Call the faxport :: getRoutingMethods method Create a FaxRoutingMethods object.

(GetRoutingMethods method for faxport objects in VB) and you can use this object to create a FaxROUTINGMETHOD object instance. Use the FaxRoutingMethod object to retrieve the fax routing configuration information for the fax port connected to the fax server. In the C / C application, after the FAXPORT object is created for the specified fax, the IFAXPORT interface method can be called to retrieve the attribute of the port; and after the VB application creates a FAXPORT object for the specified fax port, you can retrieve the port. Multiple properties. 2.1.13.3, Modify Fax Port Data Fax client application can modify a configuration data of the fax port, including the transfer priority and port response to the port, and the port response is input, and the port is included. The current state and function and the identifier of the transfer and call position. (1 )WIN32 Environment The fax client application can call the FaxSetPort function to change the configuration of the fax port connected to the fax server. Note; the application must call FaxOpenport before calling the FaxSetport function to specify the port_open_modify port access level to get the fax port handle. (2) After the Environment Create an instance of the FAXPORT object, you can call the IFAXPORT:: GetRoutingMethods method (GetRoutingMethods method that can be called in VB can be called to create the FaxRoutingMethod object. This object is then used to create an instance of the FaxROUTINGMETHOD object. Use the FaxRoutingMethod object to enable or block the fax routing method on a particular fax port. Note that before the application calls modify the faxport property, you can call the IFAXPORT:: GET_CANMODIFY method (a CANMODIFY property in VB in VB) to confirm that the client has the right to modify the port configuration. In the C / C application, after the FAXPORT object is created for the specified fax port, the IFAXPORT interface method can be invoked to change the properties of the port. In the VB application, after the FAXPORT object is created for the specified fax port, multiple properties of the object will be retrieved. 2.1.14, Managing Fax Routing Data Some routing methods properties, such as method priority, can set and apply to all ports connected to the fax server, while other fax routing methods attributes are set in port level. The relevant content of the management fax route data is discussed in detail below. 2.1.14.1 To manage global fax route data, this feature is only available in Win32 environments, and is not available in COM implementation. A fax client application can call the FaxEnumGlobalRoutingInfo function to query the global routing method data, the function returns data in the FAX_GLOBAL_ROUTING_INFO structure, and the return information includes the priority of the fax routing method and the DLL name of the route method, including GUID and determining the fax routing method. The function name and the friendly user name of the method. The application calls the FaxenumGlobalRoutingInfo function to allocate the required memory, so the program is required to call the FaxFreeBuffer function to release the allocated resources. Program call FaxSetGlobalRoutingInfo function modifies the global routing method data. (Current routing method priority is the only full-time value that the application can modify.) Note: Before calling the FaxEnumGlobalRoutingInfo function and the FaxSetGlobalRoutingInfo function, you must first call the FaxConnectFaxServer function to get the fax server handle.

2.1.14.2 Manage the Fax Routing Data (Win32 Environment) Fax Management Application for Manage Separate Port Can call all fax routing methods associated with a particular device; call the FaxGetroutingInfo function to query a single method associated with the device. Both functions are returned by the Fax_ROUTING_METHOD structure, and each structure corresponds to a method. Return data includes a DLL name that the fax routing method is enabled and outputting a routing method, further comprising a friendly user name of GUID and a function name and method of a routing method. The program calls the FAXSETROUTINFO function to change routing data for a particular fax routing method. Note: The application must call the FaxOpenPort function before calling the FaxEnumGlobalRoutingInfo function, the FaxSetglobalRoutingInfo function, and FaxGetRoutingInfo, must first call the FaxOpenport function to get the fax server handle. Since the FAXGET and FAXENUM starts to assign memory for the data cache, the application must call the FaxFreeBuffer function to release these resources. 2.1.14.3, Manage the Fax Routing Data (COM Implementation), which enables or block the fax routing method on a particular fax port, the fax client application can also retrieve data about the method, including the DLL name of the output method, GUID And the only user name and the friendly user name of the method. In the C / C program, you can call the iFaxRoutingMethod interface method after the specified port is created for the fax route method to create a FaxROUTINGMETHOD object. These methods can retrieve the attributes of the routing method and enable or block a routing method on the port; in the VB application, after the specified port creates a FaxRoutingMethod object, you can retrieve a variety of properties of the object. Of course, you can also enable or block a routing method on the port. 2.1.14.4 Enabling or Shielding Fax Routing Method The fax routing method is the behavior that is executed after the fax is received each time. Fax Services only perform routing methods enabled when sending input faxes. (1 )WIN32 Environment Fax Customer Application You can call the FaxEnableRuntingMethod function Enable a fax routing method for a particular fax device, which can also call the function to block the routing method that is enabled by calling the FaxEnableRETHOD or fax service management application. The application calls the faxenumroutingMethods function to query whether the current fax routing method is enabled. Note that before calling faxenableroutingmethod or faxenumroutingMethods, the application must call the FaxOpenport function first to get the fax port handle. (2) Communication Methical :: PUT_ENABLE attribute method can be called to enable or block the fax routing method on a specific port. To enable the fax routing method, the fax client must pass the "true" value to the ifaxRoutingMethod :: PUT_ENABLE method. IfaxRoutingMethod :: get_enable method retrieves the enable property for the FaxRoutingMethod object. Before creating a FaxROUTINGMETHOD object, you must retrieve a pointer to the iDispatch interface for the FaxPort object; in the VB program, you can set the Enable property of the FaxROUTINGMETHOD object to enable or block the fax routing method at a specific port. If this property is "true", the port enables the routing method. But before creating a FaxROUTINGMETHOD object, you must first create a FaxPort object instance. 2.1.15, the transfer fax fax client application can transmit any file, but the file must be the correct registration file type, and the fax server must be able to access the file.

2.1.15.1, Send a Cover Page Fax Service Customer API Support Print Optional Cover Page, the client can transmit a public cover page in the fax document or a private cover page. If you request a cover page, the user must provide complete Cover page file path, or relative path of the public cover page file. (1) Send a cover page (Win32 Environment) You can send a fax to the personal or public cover page on the server. The FaxsendDocument function or FaxsendDocumentForBroadcast function is required to transfer the cover page. When the FaxsendDocument function is transferred, the pointer to the Fax_CoverPage_Info structure must be provided. This structure provides a cover page template file name and file located in the local or fax server, and the structure also provides the user-supported cover page information. A. Send a public cover page 1 When calling a FaxsendDocument function, a pointer to the Fax_CoverPage_info structure is provided. 2 Set the USEServerCoverPage member of the Fax_CoverPage_Info structure. 3 UserVoverPage members of the FAX_COVERPAGE_INFO structure specify a valid public cover page file .b, send a personal cover page 1 When calling the FaxSendDocument function, provide a pointer to the Fax_coverPage_info structure. 2 Set the USESERVOVERPAGE member of the Fax_CoverPage_Info structure as a fake. 3 Specify a valid personal cover page file that a fax server accessed in the CoverPageName member of the Fax_CoverPage_Info structure. You can call the FAXGETCONFIGURATION function to determine if the fax server allows you to set your personal cover page. If the application calls the FaxsendDocumentForBroadcast function, this function is required to call the fax_recipient_callback function. When you call FAX_Recipient_Callback and set members mentioned above, the program must provide a pointer to the Fax_CoverPage_info structure. The callback function can search for each particular fax recipient to specify the cover page information of the specified user. (2) Send a cover page (COM implementation environment) By setting the following FaxDoc object properties, you can send a public cover page or a personal cover page in the fax .A, send a public cover page 1 Set the sendcoverPage property is true. 2 Set the servercoverPage property is true. 3 Set the cover page name property as a valid public cover page file. b, send a personal cover page 1 Set the sendCoverPage property as true. 2 Set the servercoverPage property as a false. 3 Set the cover page name property as a valid public cover page file. You can call ifaxserver :: get_servercoverpage method to determine if the fax service allows you to set a personal cover page. To transfer a cover page in the fax, you can call the ifaxdoc :: Send method (the Send method of the Faxdoc object). 2.1.15.2, Send a Fax to a Receiver (Win32 Environment) Fax Customer Application calls the FaxsendDocument function to specify the file stored on the disk, which is arranged to send to a recipient's fax job. The program must specify the transfer file and provide a pointer to the Fax_Job_PARAM structure. The fax server will arrange the fax job based on the details specified by FAX_JOB_PARAM. This structure includes the recipient's fax number, sends and accept data, optional account, and job arrangement information. To send a cover page, the application must provide a pointer to the Fax_CoverPage_info structure, which contains data that will be displayed on the fax cover page. The program must call the FaxCompleteJobParams function before calling the FaxsendDocument function. The FaxCompleteJobParams function provides data for members of the Fax_CoverPage_Info and Fax_Job_Param structure. Call the FaxFreeBuffer function to release the memory associated with these structures.

To effectively send a fax file to a number of recipients, the application should call the FaxsendDocumentForBroadcast function, not multiple times called the FaxsendDocument function. Note: The application must call the FaxConnectFaxServer function before calling the FaxSendDocumentForBroadcast function to get the fax server handle. 2.1.15.3, send a fax to a recipient (COM implementation) If the program uses fax customer COM implementation, unless the existing connection line is set to enable the fax transmission, send a FileName property and FaxNumber property. . When the fax is transferred, the user can specify other optional properties, such as cover page settings, fax reception, and sender information, and some data displayed on the cover page. In the C / C application, you can call the IFAXServer :: createDocument method to create a FaxDoc object after connecting to the active fax server. A plurality of IFXDoC interface methods are then called to set the optional or must-have properties of the object. Finally call the Ifaxdoc :: Send method to transfer the file. In the VB application, call the CREATEOBJECT function in the VB to create a FaxServer object. The CREATEDocument method of the object is then called created a FaxDoc object and set the must and optional properties of the FaxDoc object. Finally, call the SEND method of the Faxdoc object to send a fax file. 2.1.15.4, Broadcast Fax to Multiple Receiver The current function is only available in the Win32 environment, while the COM environment is not available. The FaxsendDocumentForBroadcast function is arranged, and these jobs pass files stored on the disk to multiple recipients. The program must specify the file to be transmitted. Once the fax recipient is specified, the FaxSendDocumentForBroadcast function will call the Fax_Recipient_Callback function multiple times to retrieve the information, each corresponding to a recipient, and if there is a request, the information also includes cover information. The program must call the FaxCompleteJobParams function before calling the FAX_Recipient_Callback function. The FaxCompleteJobParams function provides data for members of the Fax_CoverPage_Info and Fax_Job_Param structure. The FaxFreeBuffer function can be called to release the memory associated with these structures. Note The FaxConnectFaxServer function must first call the FaxConnectFaxServer function before calling the FaxSendDocumentForBroadcast function. 2.1.15.5, passing the fax to the active input call to use the existing input line connection to pass the fax file to save fax, that is, the so-called FaxBack service. To successfully pass the file using an existing input line connection, the call must be in the LineCallState_Connected status. (1) Win32 Environment To pass the existing line connection to pass the fax, when calling the FaxsendDocument or FaxsendDocumentForBroadcast function, you need to specify the CallHandle member of the Fax_Job_Param structure. The call handle must be one of the messages retrieved by TAPI LINE_CALLSTATE. If you specify a CallHandle member, the program uses an existing connection to fax pass instead of initializing a new call. (2), COM implementation Environment C / C program, you can set the CallHandle or ConnectionObject property to enable the existing connection line to pass the fax. If you want to pass a fax to the active input TAPI 2.x call, you can call the iFaxdoc :: PUT_CALLHANDLE interface method.

To store a reference to the TAPI call object in the FaxDoc object, you must call the iFaxdoc :: Putref_ConnectionObject method. When you transfer your fax using the existing line connection, the ConnectionObject property provides all of the COM-based feature. In the VB program, you can set the ConnectionObject property of the FaxDoc object, which provides a full function based on COM when the fax is delivered using the existing connection line. 2.1.15.6, Print Fax to Device Context The current function is only available in the Win32 environment, while the COM environment is not available. Fax client does not require a connection to the fax server to print a fax to the printing device context (DC). You don't have to call the FaxsendDocument or FaxsendDocumentForBroadcast function, and the program can provide delivery information directly to the fax customer service API. This allows the program to pass the event text from the printer DC directly. Fax customers' GDI functions include FaxStartPrintJob and FaxPrintCoverPage functions. Since the fax GDI function uses a fax printer device, the FaxStartPrintJob function is called, you must specify the connected fax printer name. The printer can be a local printer such as "printername" or remote printer, such as "// MachineName / Printername". If the NULL PRINTERNAME parameter is passed to FaxStartPrintJob, then the local printer, the FaxStartPrintJob function returns the handle of the printer DC. Note: Fax client should not call the CREATEDC WIN32 GDI function to create a fax printer DC, or call the StartDoc print function to start printing. Instead, the program should call the FaxStartPrintJob function. Procedure for printing fax to device context: (1) Call the FaxStartPrintJob function to retrieve the handle of the fax printer DC. The function returns the handle in the FAX_CONTEXT_INFO structure. (2) If the fax requires a cover, the FaxPrintCoverPage function can be called to pass the pointer to the Fax_Context_info structure returned to the FaxStartPrintJob function. (3) When printing a fax document into the printer DC in a conventional manner, the Handle returned to the FaxStartPrintJob function, including calling the StartPage and EndPage Win32 GDI functions. (4) Call the EndDoc or AbortDoc function, pass the handle to the DC returned to the FaxStartPrintJob function, which will close the document and end the fax print job. (5) Call the deletedc function to release the handle assigned to the DC. 2.1.16, Managing Fax Job Fax Services Customer API supports flexible queue management and event fax job management. The management of the output transfer will be described in detail below. 2.1.16.1, Query Fax Job Fax client can query the fax serial number related to the fax job, fax recipient, and sender information, and you can also retrieve the type of job, status, and unique marking; timing, job order, and page number . (1 )WIN32 Environment FAXENUMJOBS function allows fax client applications to retrieve a list of fax job queues on the fax server. Call the FAXGetJob function to query a separate fax job. Both functions can return detailed information in the FAX_JOB_ENTRY structure, one structure corresponding to one job. Because the FaxenumJobs and FaxGetJob functions assign its required memory for the Fax_Job_ENTRY structure, the application must call the FaxFreeBuffer function to release these resources. Note: The application must call the FaxConnectFaxServer function to get the fax server handle before calling the FaxenumJobs and FaxGetJob function.

(2) C / C application, after creating a FaxJob object for the specified fax job, you can call the iFaxjob interface method to query the nature of the job; in the VB application, you can query after you create a FaxJob object for the specified fax job. Multiple properties of objects. 2.1.16.2 Displaying the document in the fax job queue The current function is only available in the Win32 environment; the environment is not available in the COM implementation environment. The program can call the FAXGETPAGEDATA function to manage the document in the fax queue. The function returns the first page of the fax data in the F class label image file format (TIFF 6.0 Class F). The call function must decode the data stream. Calling the FaxFreeBuffer function Release resource 2.1.16.3 assigned by the FaxGetPageData function, modifying the fax job fax client application After the fax job is sorted, the nature or attribute of the transfer fax cannot be modified. (1) Win32 Environmental Fax Customer Application cannot be modified after the fax job sorting, because many of the facts contained in many FAX_JOB_ENTRY structures in the job is unable to change after text transfer. Applications can call the FaxSetJob function to pause, recover, cancel, and restart the queue fax job. Note: The application must call the FaxConnectFaxServer function before calling the FaxSetJob function to get the fax server handle. (2) COM implementation Environment C / C application, after creating a FaxJob object, you can call, recovery, cancel, or restart your job; in the VB application, create a FaxJob object, you can call the object SetStatus method pause, recovery, cancel, or restart your job. 2.1.16.4, Termination Fax Job Fax Customer Application can terminate the fax in delivery. (1) The fax client application can call the FaxSetJob function or the Faxabort function to cancel the fax that is being transmitted. Note Applications must call the FaxConnectFaxServer function before calling the FaxAbort function or the FaxSetJob function to get the handle of the fax server. (2) C / C application, after creating a FaxJob object, you can call the iFaxjob :: setStatus method to terminate the fax job, but you must specify JC_DELETE in the Command parameter. In the VB application, after creating the FaxJob object, call the object's setStatus method, which can be canceled by the specified JC_Delete constant, but it should be noted that this constant must be defined first. 2.1.17, Release Fax Resources In some cases, calling a fax client application to manage allocation resources, which is applicable to the C / C application and Win32 environments that refer to COM implementation. (1) The Win32 Environment Fax client application must call a specific fax customer function to release resources. This includes calling the FaxCompleteJobParams function and starting with Faxenum or FaxGet. These resources can be released to call the FaxFreeBuffer function. If the application has called the FaxFreeBuffer function to release the reference, the data can no longer be referenced. (2) C / C application, you must call the sysfreestring function to release resources associated with buffers that are directed by all PVAL parameters. This is because all attribute methods of retrieval properties (ends with GET_PROPERTYNAME) are required for buffer allocation. The VB application does not have to release resources. 2.1.18 Disconnecting the connection with the fax server Only the calling fax client application can disconnect the connection to the fax server. (1 )win32 Environment Fax Customer Application must call the FaxClose function as the last function before it is terminated. The function is disconnected from the fax server from the fax server from the fax server: a. Call the FaxConnectFaxServer function Returns the fax server handle.

b. Call the FaxOpenPort function to return to the fax port handle. (2) C / C applications in Environment, you can call the IFAXServer :: Disconnect method to terminate the connection to the fax server. Then call the IUNKNOWN :: Release method to make the FaxServer object release yourself. It is also possible to call iUnknown :: Release again to eliminate the pointer to the additional interface. In the VB application, you must call the Disconnect method of the FaxServer object before the application termination is disconnected from the connection to the fax server. 2.1.19, General Fax Client Programming Tasks The additional information required to develop fax client applications will be described below. 2.1.19.1 Checking User Access Permissions Microsoft Fax Services is a safe service. Fax Service Management Application is a Microsoft Management Console (MMC) plug-in component that allows users to query and modify jobs, ports, and global configuration data. (1 )WIN32 Environmental User To successfully call a particular fax service function must have specific access rights, you can call the FaxAccessCheck function to query the user's fax access. (2) C / C applications in Environment, must ensure that customers have the permissions to modify the specified port. You can first call the iFaxport :: Get_canModify method to specify the fax port before calling the method that starts with Ifaxport :: PUT_. In the VB application, you can determine whether the user has the right to modify the fax port configuration information by retrieving the CANMODIFY nature of the FAXPORT object. 2.1.19.2, Startup Application Receive Fax event Notification The current function is only available in Win32 environments, and is not available in COM implementation. Call the FAXInitializeEventqueue function creates a fax event queue for the fax client application. The queue enables the application to receive a notification of an asynchronous event from the fax server. The application specifies how the fax server notifies the client application. The application can request the fax server to arrange the I / O complete port, or specify a fax service notification to send messages. Fax Customer Application During a fax service, you can only call the fax service meeting FaxInitializeEventqueue function once (when the service sends a FEI_FAXSVC_STARTED message, the fax service starts; the fax is transmitted when the FEI_FAXSVC_ENDED message is ended). This will prevent the fax service from sending copy messages to the client computer. If FAXInitializeEventQueue is called multiple times during one transmission, the function will fail and return error code error_INVALID_DATA. After the application turns off the fax server handle, the fax client application can continue to receive fax events for fax services. (1) Receive the notification message from the fax service The current function is only available in the Win32 environment and is unavailable in COM implementation. When the client application calls the FaxInitializeEventQueue function, use the notification message instead of I / O complete package to specify the notification. The application specifies the effective window handle of the HWND parameter and the MessageStart parameter value to complete this. Fax Service Call PostMessage function Sends a notification message to the destination window specified by the client application in the HWND parameter. The client application's window program handles the received message. In addition, developers must consider the following factors to ensure that the client application can receive a notification message. a. Running a fax service fax service under the Localsystem account and local login users run a fax client application on a different desktop. Because the notification message cannot span the desktop, the service application of the control panel must make the Allow Service to Interact With Desktop fax service options in the local computer's localsystem account. This allows the fax service to access the customer's desktop and enable the service to send a message to the customer. b. Running a fax service user account User Account You can configure a fax service running under the User Account instead of a localSystem account, such as activating the MAPI function.

In this case, the Allow Service To Interact With Desktop will not be selected by the fax service. To enable the receiving notification message, the fax service must open the access flag for the fax client application. When the customer calls the FaxInitializeEventQueue function, the service opens the flag and specifies the notification message. When the fax service is to pass the message to the customer, the service imitate the customer and send a message to the customer. Developers do not need to consolidate any code in the client application to enable the above features. However, when the fax service is running under the user account, the application must merge the code to enable the customer to be successfully logged out. This is because if the fax service has a client desktop open handle, the user cannot be logged out. When the client application receives the WM_ENDSESSION or WM_DESTROY message, the FAXInitializeEventQueue function must be called again, specify the same window handle specified by the HWND parameter when the initial is specified. However, the program must specify a -1 value in the CompletionKey parameter to notify the customer to be logged out and the service should turn on the ethical access flag to the customer, which makes the customer can log out. Note: Fax services do not need to run under the localsystem account to enable this feature. To optimize performance, when the user is trying to log out of the fax service, the client application should determine if the fax service is running. If the customer receives the FEI_FAXSVC_ENDED message, the fax service is not running. Because the service turns off the access flag open to the customer, the customer no longer needs to call the FaxInitializeEventqueue function. (2) Receive I / O Complete Package from Fax Services The current function is only available in the Win32 environment, and is unavailable in COM implementation. When the client application calls the FaxInitializeEventQueue function, you can use the I / O complete package to replace the notification message specify a notification. The application passes the valid handle to the I / O complete port and passing the completionKey parameter value to complete this work. If the application specifies the I / O complete package, the fax service does not open the sign on the application. This situation is not necessary to add encoding because the complete package can interact with the desktop. Fax service calls the PostQueuedCompletionStatus function to notify the customer of an asynchronous event. Customers must call the getQueuedCompletionStatus function to retrieve I / O complete packages containing the Fax_Event structure. 2.1.19.3, enable MAPI function fax service in fax client applications Support two levels of client applications integrated with MAPI-Aware: Summary Passwords and email delivery methods. When the fax server sends or receives the fax transmission, one of these transfer methods can be used to transmit the delivery report (NDRS) and the non-delivery report (NDRS). Fax service may not require a delivery report, the application can specify that no non-transmission report is sent. Preventing transmission report transmission method as follows: a.Win32 FaxSendDocument calling function or environment and DeliveryReportType FaxSendDocumentForBroadcast function item specified DRT_NONE FAX_JOB_PARAM structure; FaxStartPrintJob or calling function with the DrProfileName and DrEmailAddress members FAX_PRINT_INFO structure to NULL. B.COM implementation of the environment ignition of the EmailAddress nature of the Faxdoc object; it is also not required to set the servermapiProfile nature of the FaxServer object. (1) Summary Pass Report The current function is only available in the Win32 environment and is unavailable in COM implementation. If the system has a primary user or system is not in the network, the Profile Transfer Report of the Fax Transfer Report is feasible. (NDRS) is feasible.

Fax client application can request a summary of DRS and NDRS with one of the following methods: a. Call the FaxStartPrintJob function and specify a valid MAPI introduction in the DRPROFILENAME member of the FAX_PRINT_INFO structure, DremailAddress member must be empty. b. Call the FaxSendDocument function or FaxsendDocumentForBroadcast function and specify a valid MAPI profile in the DeliveryReportaddress member of the Fax_Job_Param structure. DeliveryReportType members must also specify DRT_INBOX. When the fax server uses this method to transfer the report, the default message storage location for the specified MAPI user profile is set, typically, the inbox folder stored for the user local personal information. If you specify a brief transfer report in a network environment, the default message is stored in the inbox on Microsoft®Exchange Server. The fax server must allow the stored default message to read and write, using Microsoft Management Console Plug-in Components Manage Computer / Services (Computer Management / Services Application) can change the fax service account. (2) Email Transfer Report If there is a plurality of users or systems in the system, the Report (DRS) and the Universal Report (NDRS) are used in the system with multiple users or systems. A multi-user routine is a fax server system coupled to one or more clients. Email DRS and NDRS transmission, the fax server requires the following items: a. Detailed MAPI introduction, the fax server generates an email; b. To the Microsoft®Exchange server connection; c. Fax Server Transfer email to the Exchange server Mailbox name or alias request email DRS and NDRS transmission, Fax client must perform the steps of the following Win32 and COM implementations. A.WIN32 Environment 1 Call the FaxSetConfiguration function and specify a valid MAPI user profile in the InboundProfile member of the Fax_Configuration structure. Fax Services must access the specified profile (requires Microsoft Management Console Plug-in Component Manage Computer / Services to change the fax service account). 2 Call the ChangeServiceConfig function Change the configuration parameters of the fax service account (otherwise using the Microsoft Management Console plug-in component system service management application to change the fax service account). 3 Use the Fax Microsoft Management Console (MMC) Plug-in Component Service Monitoring the application to restart the fax service or call the StartService function. 4 One of the following steps You may require email DRS and NDRS to transfer: l call the FaxStartPrintJob function and specify the DremailAddress member of the Fax_Print_info structure. The specified email address must be a valid address name or alias in the Microsoft Exchange Server Global Address List (gal); l calls the FaxsendDocument function or the FaxsendDocumentForBroadcast function and specifies a valid email address in the Fax_Job_Param structure of DeliveryReportaddress, and must also DeliveryReportType member specifies DRT_EMAIL. The fax server transmits the address of the DRS or NDR to step 4 DREMAILADDRESS or DeliveryReportaddress members specified by the address of the address of the InboundProfile member of the step 1. B.COM Implementation Environment 1 Set the servermapiProfile nature of the FaxServer object, which must specify a valid MAPI profile. 2 Set the EmailAddress property of the Faxdoc object.

The email address must be a valid address name or alias of the Global Address Table (GAL) of the Microsoft Exchange server. The following steps are the Win32 environment. The server will send an email DRS or NDR to the email address of the EmailAddress property from the serverMapiProfile nature. 2.1.19.4, retrieving fax file data The current function is only available in COM implementation, and is not available in the Win32 environment. Fax service transformation process is filed with the tag image file format of the F class fax (Tiff6.0 C). Services embedded in the custom TIFF label stores the information of the fax propagation. Fax client application uses the FaxTiff object to retrieve the file information transmitted or received by the fax service. The application can query the nature of the fixtiff object. This property includes equipment and status identifiers, fax serial numbers, and senders and recipient names. You don't need to create a FaxServer object in advance before creating a FaxTiff object. In the C / C application, after the FAXTIFF object is created for the fax file, you can call the nature of the IFAXTIFF interface method; in the VB application, you can retrieve the multiple properties of the object after the FAXTIFF object is created for the fax of the specified file.

2.1.19.5, Fax Route Extensions Local Registration Fax Routing Extensions can be installed directly on the fax server (local installation) or a computer installation from the network (remote installation). It is recommended to use local installation. The local registration fax service is recommended to use the fax route extended DLL to perform the following steps. The following steps are not directly accessing the registry. a. Copy routing DLL to the address of the imagename parameter of the FaxRegisterRoutingExtension function. b. To get a local server's fax server handle, call the FaxConnectFaxServer function to specify a NULL pointer to the MachineName parameter. c. Call the FaxRegisterRoutingExtension function Route extension DLL. The function calls a FAX_ROUTINSTALLATION_CALLBACK function for each fax routing method in the fax route extension DLL. If you call the FaxRegisterRoutingExtension function to install the fax routing extension, you must use the fax route method for this extended output to restart the fax service. 2.1.19.6, Local registration fax service providers of fax service vendors can be installed directly on the Fax Server (local installation) or network computer (remote installation). However, it is recommended to install locally. In order to register a fax service locally, the recommended fax service provider performs the following steps instead of directly accessing the registry. a. Install a phone service provider for abstract equipment. Telephone service providers Specify all fax devices controlled by the fax service provider and enable the fax service to use external fax devices. b. Copy service provider DLL to the location of the ImageName parameter specified by the FaxRegisterServiceProvider function. c. Call the FaxRegisterServiceProvider function Configuring a new device for the fax service user and registered a fax service dynamic link library (DLL) for the Fax Service Provider. 2.1.20, Using Fax Customer COM implementation In addition to the fax service customer API Win32 function, Microsoft® also provides a COM implementation interface for fax client application developers. And programs work with VB, VBScript, JScript, and Java provide dual interface access and C / C programmers provide VTABLE access, and the interface uses the ActiveX® template library to improve performance and minimize the requirements. Introduction to this chapter, fax service customer API, outlines the difference between the Fax client running in the Win32 environment and the COM implementation environment. The reference material implemented for C / C developers is organized around a single COM interface; the reference material implemented for the COM developer is an object of the fax customer object model. Note: The C / C program cannot implement any interfaces starting with IFAX; and the VB program cannot implement any classes starting with FAX. Microsoft standard implementation will provide complete features. To support the fax customer COM implementation, require FaxCom.h and faxcom.dll files. 2.1.20.1, Fax Customer Object Model Most Fax Customer Object Models Objects Tissue in a hierarchical manner. But except for fixiff objects, it is a non-standard object. The following chart describes this level. There can be multiple FaxJob, Faxport, and FaxRoutingMethod objects Most fax server client API's COM interfaces from essentially layers. For example, the client application must call the IFAXServer :: Connect method (or the Connect VB method of the FaxServer object) to establish the iFaxServer :: Connect method (or the Connect VB method of the FaxServer object) before accessing the IFAX starting interface or other fax customer object. (The fixtiff object is an exception, the connected fax server does not require access to the FaxTiff object). After the client application establishes the connection to the active fax server via the RPC, the application can call other interface methods. This is because the event's FAXSERVER object "knows" it connects the fax service. For example, the program can call one of the following methods: a. Call the IFAXServer :: getJobs method (or getJobs VB method for the FaxServer object) Create a FaxJobs object and retrieve the fax job list associated with the connected fax server.

b. Call the FaxServer :: getPorts method (or getPorts VB method for the FaxServer object) Create a Faxports object and retrieve the port list associated with the connected connection fax server. c. Call the IFAXServer :: Createdocument method (or the CreateDocument VB method of the FaxServer object) Create a FaxDoc object and transmit a fax. The client application cannot invoke the CocreateInstance function to create these objects or export objects. 2.1.20.2, using the VB implementation Fax Customer COM Interface VB programmer Used Fax Service Customer API COM Interface Document Failed to organize the fax customer object model. Each object document includes a detailed description list, an object properties, and a method list, access attribute, and a VB routine that calls an object method. Note; the corresponding C / C interface method theme will contain information from VB programmers. For example, these equivalents provide cross-references between associated topics and include detailed parameter description. The C / C interface method name begins in IFAX. Chapter III Fax Service Provider Application Interface Fax Services API allows the fax device to be integrated into the Microsoft Fax service. The first part of this chapter describes the components and API functions that support fax service providers, including short discussions for virtual fax services and error control; Finally, the fax service vendor registration requirements and describe a fax service provider activity link Program Guide for Library (DLL). The second part of this chapter includes how to create and send a fax service vendor status to the code example of the fax service, and also describe how to use the virtual fax device to transfer faxes. Before reading an overview, you should be familiar with the concept of the Phone Application Programming Interface (TAPI) and Microsoft Telephone Service Provider (TSPI). 3.1, Fax Service Supplier Structure The following figure provides Overview of the fax service provider environment: Must include Fax Services Supply Business File (Faxdev.h) 3.2, Fax Service Provider API Introduction Fax Service Provider API Supports multiple fax devices and provides a stand-alone device interface for the implementation fax. The following components are required to support fax service providers API features. a. Fax device manufacturer must provide a fax service provider Dynamic Link Library (DLL) for fax services. Each fax device series must have at least one fax service provider DLL. b. Fax Service (FaxSvc.exe). This support service application provides the fax service provider DLL to perform the context. Fax service communicates with a fax service provider with a fax service provider. Fax Services Management Fax device and configuration data provide print services and transmits and receives fax files. Fax Services Create a file (TIFF class f) for all Fax Documents (TIFF class f). c. Telephone application interface (TAPI) establishes, invocation, and provides details, status, and notification changes of fax equipment. d. Fax service providers that only provide physical fax equipment must also provide equipment abstraction for telephone service providers. The telephone service provider determines all fax devices controlled by the fax service provider and enables the fax service to use the fax device. If a fax service provider provides a virtual fax device, no call service provider is required. In addition, you must include a fax service supply business head file Faxdev.h in the source code file, which contains a function prototype, structural definition, and fax state constant. Fax service providers are responsible for storing all customer interface features and configurations. 3.2.1 Fax Service Overview Fax Service is a collection of fax operations, and the fax operation includes sending and receiving operations. At the beginning of each fax service, the fax service calls FaxdevStartJob for the fax service provider to perform a call installation opportunity and initialize a new fax service. Since each fax operation is performed in separate threads, the fax service is also called the FaxdevStartJob function at the beginning of the fax operation. The figure below shows the order in which the fax service is functioning during the fax transmission operation, and the fax service provider must output these functions. Fax service sequentially calls the following functions in the synchronous thread: a.faxdevStartJob. Initialize the fax business and the fax operation start signal. B.FaxDevsend (or FaxdevReceive).

Notifying Fax Service Providers Initializing Output Fax Pass (or receives an input fax delivery). C.FAXDEVREPORTSTATUS. Query the status information of the active fax operation to the fax service provider. d. faxdevendjob. Close the event fax business. Fax Service During the transmission or reception operation, the FaxdevAbortStatus and the FaxdevabortOperation function is asynchronously in the executive thread independent of the fax operation, and FaxdevabortOperation requires the fax service provider to terminate the active operation. 3.2.2, Initialization Fax Service Provider At the beginning of the fax service, the TAPI LineInitializeEx function is called to retrieve the number of devices available on the line. During the initialization, the fax service checks the fax service provider DLL for the FaxDevvirtualDeviceCreation function. If the vendor output Optional Function FaxdevvirtualDeviceCreation, the fax service will expect fax service providers to provide one or more virtual fax devices. Fax service also calls the faxdevinitialize function at each service starting to initialize the service with the fax service provider DLL. When the fax service calls Faxdevinitialize, the fax service provider must register the T Fax_LineCallback function by providing a function pointer. Service call FAX_LINECALLBACK to deliver TAPI events for fax service providers. Fax service providers must output Faxdevinitialize and FaxdevStartJob. The following chart shows the general event stream when initializing the fax service provider: Once initialized the fax service provider, the supplier can send and receive faxes on their supported devices. 3.2.3, Transfer Fax Fax Service Call FaxDevsend Function Notification Fax Service Provider DLL must initialize the output fax. Unless the CallHandle member of the FAX_SEND structure specifies a valid TAPI call handle, the vendor must call the function to send a fax data stream and terminate call. In this case, the vendor should use the existing connection instead of initialization, the fax is transmitted. The Fax_send structure is used to specify a file containing the output fax document and contain information that calls and receives the fax device. Fax service provides a pointer to the fax_send_callback function. Fax service vendor calls FAX_SEND_CALLBACK Function Notification Fax Service Output Fax Call is in progress. Send TAPI messages must have a fax_send_callback function. Fax Service Call FaxDevRecEive Function Notification Fax Service Provider DLL When you have an input fax. The supplier must accept the input call and store the fax data stream. The FAX_RECEIVE structure determines the fax service provider stores the file that enters the fax data stream and contains information that receives the fax device. Fax service vendors must output FaxDevsend and FaxDeVReceive functions. 3.2.4, Termination Fax Fax Service Call the FaxDevendJob function After the fax operation is completed, the fax job can be closed smoothly. At this point, the fax service provider should release instance data of a particular job assigned by the FaxDevStartJob function during job initialization. Fax Service Asynchronous Call Faxdevabortoperation Functions Request Fax Service Vendors Terminate Still Afault Transfer or Receive Fax Operation. Even if FaxdevabortOperation terminates the operation, the fax service can still call the FaxDevendJob function. Fax service vendors must output FaxDevendJob and Faxdevabortoperation functions. 3.2.5, obtain the fax status fax service asynchronously call the FaxDevReportStatus function for the active fax operation Query the status information of the fax service provider DLL or the status information after the fax operation failed. The FAX_DEV_STATUS structure contains status error code, Win32 error code, and fax operation transmission information. Fax service vendors must output the FaxDevReportStatus function. 3.2.6, Fax Operation Error Control Fax Service calls the FaxdevStartJob function to mark the beginning of the fax service provider fax operation.

If the fax operation starts, but the fax service provider cannot access the line of the fax service indication, this situation is called Glare. At this point, the fax service provider should take the following steps: a. Returns 0 values ​​from the FaxDevsend or FaxDeVReceive function call. b. Setting the StatusID member of the Fax_DEV_STATUS structure as the FS_LINE_UNAVAILABLE status. When the fax service calls the FaxDevReportStatus function, the line is not available. Fax service will select additional lines and call the fax operation again. 3.2.7, Fax Service Provider Register a Fax Service Supplier Can be installed directly on the fax server (local installation) or network computer (remote installation). It is recommended to use local installation. (1) Local installing fax service local registration, suppliers should implement the following steps rather than direct access to the registry. a. Install a telephone service provider for abstract equipment. Telephone service providers Specify all fax devices controlled by the fax service provider, and enable the fax service to use the fax device. b. Copy the fax service provider DLL to the image of the ImageName parameter specified by the FaxRegisterServiceProvider function. c. Call the FaxRegisterServiceProvider function to set up a new device to use the fax service. (2) Remote installation during remote installation, each fax service vendor DLL must be registered by the information provided by the following keys of the remote computer registry: HKEY_LOCAL_MACHINE / SOFTWARE / Microsoft / Fax / Service Provider / Oem To register DLL, here Settings under the keyword should be the three values ​​in the table: Value FriendlyName The fax service vendor DLL contains the REG_SZ string iMagename for the friendly customer display name to the fax service provider DLL contains all paths and file names REG_EXPAND_SZ string providerName contains The REG_SZ string of the telephone service supplier is recommended to store the registry data of the fax service provider specified under this button. Because the fax service provider is responsible for configuring the data stored under this key value. 3.2.8, Virtual Fax Equipment Virtual Fax Device is a device that is contacted by the customer as if the customer seems to exist but does not actually do not have the corresponding fax server. Fax service on the Internet is an example of a supplier virtual fax device. In this example, physical fax devices do not exist, only to the Internet connection. If the vendor outputs the FaxdevirtualDeviceCreation function, the fax service provider can provide a plurality of virtual fax devices for the fax service. During the initialization, the fax service checks the fax service provider DLL for FaxDevvirtualDeviceCreation. If the function exists, the fax service allows users to send and receive faxes using virtual equipment customers. 3.2.8.1 Signaling Variation Fax Services Call the Fax Service Provider's FAX_LINECALLBACK Function Notification Service Supplier When the FAMCA is activated or shields the fax transceiver of the virtual fax device. When the fax service calls the FaxDevinitialize function, the fax service provider is registered with the callback function by the transferred address. Fax service uses the following value to call the faxdevinitialize function. Parameter Value FaxHandle NullHDevice Virtual Fax Device Mogic DWMESSAGE LINE_DEVSPECIFIC DWINSTANCE 0DWPARAM1 Fax Services Generate a value for this parameter. If the virtual fax device is activated, this parameter has a non-zero value. This parameter is zero if the fax reception is masked. DWPARAM2 fax service generates a value for this parameter. If the virtual fax device is activated, the parameter has a non-zero value. If the fax transmission is blocked, the parameters are equal to zero. DWPARAM2 0 Even if only one virtual device changes state, the fax service will call Fax_LineCallback multiple times, each corresponding to a virtual device supported by the fax service provider. 3.2.9, Fax Service Supplier Programming Guide The programming issues for the development of fax service providers DLL for fax services will be discussed below. 3.2.9.1, memory allocation All fax service providers must use private stacks to make memory allocation.

When the fax service loads the fax service provider DLL and passes the pile handle when calling the FaxDevinitialize function, the fax service creates a private heap for each fax service provider. When the DLL is uninstalled, the fax service releases the stack. Fax service vendors should use private functions to package all memory allocation and release in DLL. Private functions should be used to call the HeapAlloc and HeapFree functions that are transferred to the Faxdevinitialize. This method obtains a robust server with scalability of the service provider model and can separate the memory issues of a particular fax service provider. 3.2.9.2, Multithreaded Environment Action Since the fax operation is executed in the separated thread, the fax service calls FaxdevStartJob at the beginning of a new fax job and is called in each fax operation. Fax service vendors must be in multi-threaded environment. Fax service vendors must allocate memory for a particular job instance data for each fax thread to ensure the security of the fax service provider DLL. When the fax operation is complete, the fax service provider will release memory for the instance data. 3.2.9.3, processing exception TRY-Except exception processing block protects all the calls to the fax service vendor function. If the fax service detects an exception of the fax service provider DLL, the service calls the FaxDevabortoperation function to terminate the failed fax operation. Recommended fax service providers use the TRY-Except block to capture errors and handle errors in an appropriate manner. 3.2.9.4, Transform String Parameters Fax Service Provider Function Prototype Use the LPWSTR data type to string parameters. Fax service provider DLLS must be compiled into a Unicode code. If the fax service provider is not compiled into Unicode, the fax service provider DLL only receives Unicode, the function call failed. 3.2.9.5, Set the latest error code fax service vendor function returns a Boolean value that indicates success or failure. If the function fails, the fax service calls the getlasterror function to retrieve the extended error message. When the function fails, the fax service provider must immediately call SetLastError to set the latest error code. If the fax service provider calls another Win32 function after setting the latest error code, this function overwrite the latest error code of the fax service provider. 3.2.10, Fax Image Form Fax Service Based on TIFF 6.0 Specification to create a tag image file format class F file (TIFF F class) for fax files. In addition to the requirements of TIFF 6.0 specification, fax services have the following requirements for TIFF class F files: A.TIFF files must be able to modify the modified read (MMR) 2D encoded data compression format. This format is defined by CCITT (International Telephone Advisory Committee) Group 4. The command byte format of the B.TIFF file must match the command byte format of the CPU processing file. If the Little-Endian CPU receives a TIFF file, the file must be the Little-Endian format. C.TIFF field (tab) RowsPerstrip must contain value 1 because the fax service does not support the transmission of data image bar. RowsPerstrip describes the scan line of each image bar when fax image. 3.3, Fax Service Provider API Application This section mainly discusses that fax service supplier status is created and mailed to fax a fax service and use virtual fax equipment to transfer faxes. 3.3.1, Create a Full Package Leading Circuit Description The process of creating an I / O complete package and mailing to the fax service. When the fax supplier changes the state, the service provider must mail I / O complete package to the fax service in the form of a FAX_DEV_STATUS structure. The routine first calculates the size of the FAX_DEV_STATUS structure, and calls the HeapAlloc function to assign memory to the structure according to the HeapHandle parameter of the FaxDevinitialize function. The routine then assigns a value to each member in the structure. Finally, the routine uses the FaxdevStartJob function to call the PostQueuedCompletionStatus function mailing complete package.

Routine: BOOL rVal; DWORD StatusSize; PFAX_DEV_STATUS FaxStatus; //// Compute the size of the status structure // StatusSize = 0; //// Allocate memory for the status structure // FaxStatus = (PFAX_DEV_STATUS) HeapAlloc (.. HeapHandle, HEAP_ZERO_MEMORY, StatusSize);!. if (FaxStatus) {. // // Process some errors //} //// Assign values ​​to the status structure // FaxStatus-> SizeOfStruct = sizeof (FAX_DEV_STATUS); FaxStatus-> StatusId = 0; FaxStatus-> stringId = 0; faxstatus-> pagecount = 0; faxstatus-> csi = null; faxstatus-> Callerid = null; faxstatus-> routingInfo = null; faxstatus-> errorcode = 0; //// Post the packet to the fax service // rVal = PostQueuedCompletionStatus (CompletionPortHandle, // from FaxDevStartJob sizeof (FAX_DEV_STATUS), CompletionKey, // from FaxDevStartJob (LPOVERLAPPED) FaxStatus);. if (rVal!) {// // Process some errors 3.3.2, using virtual equipment to transfer fax support virtual fax device's fax service provider must lose FAXDEVVIRTUALDEVICECECREATION function. Fax service calls the function during initialization. You can use a virtual fax device to send and receive a lot of work. (1) Transferring a fax using a virtual fax device to send a fax using a virtual fax device without any special steps. There is no difference between physical fax equipment and virtual fax devices when transmitting fax. When the customer arranges a fax job, the fax service selects a device with the highest transfer priority to transfer the fax, which can be a physical device or virtual device. (2) Receive a fax using a virtual fax device When the fax service calls FaxdevvirtualDeviceCreation, the service specifies the handle of the CompletionPort parameter I / O complete port and the completionKey parameter value. When the supplier mailing I / O complete port package signaling fax service, the vendor will use these values ​​when receiving a fax on the vendor virtual port. These Value Letter Fax Services call the FaxDevStartJob function to initialize the fax service of the fax job and the FaxDeVReceive function. (This step is necessary because the virtual device does not make the associated telephone service provider generates a ringing event for the fax service.) Use the virtual fax device to receive a fax, the fax service provider must perform the following steps: a. Output FaxdevvirtualDeviceCreation function. b. Call the PostQueuedCompletionStatus function, use the signaling fax service provider to receive the fax.

Specifies when to call the FaxdevirtualDeviceCreation function by using the CompletionKey and CompletionPort parameter fax service. The complete port package must be the LineMessage structure. c. When the fax service calls the FaxdevStartJob function, the appropriate response is appropriate. d. When the fax service calls the FaxDevRecrecept function, the appropriate response is appropriate. e. Continue to call the PostQueuedCompletionStatus function, receive the message and mail the update state until the fax service calls FaxDevendJob. Specify when the FaxDevStartJob function is called by specifying the fax service when specifying the CompletionPort and CompletionKey parameter values. The complete port package must be a Fax_Dev_status structure. Chapter 4 Fax Routing Extension Application Interface Fax Route Extension Application Interface (API) Allows the increase of routing functions for Microsoft® fax services. The API provides a variety of routing methods for third-party software sellers to connect to the fax software program. This chapter describes the functions that support fax route extended API components and APIs, and also provide registration fax routing DLL and management fax equipment requirements. The fax route method in this chapter refers to the programs that fax routing DLL support and definitions. 4.1 Fax Route Extension API Introduction Fax Route Extension API Allows third-party software sellers to receive faxes using multiple fax routing methods while using Microsoft® fax service interfaces. These methods are mainly: printing fax, storing fax, converting fax images for text files. The following figure provides an overview of the fax routing process:

The fax routing expansion header file faxroute.h must be included in the source file. 4.1.1 Fax Routing Extension Software requires the following components to support fax routing expansion API: a. Fax Routing Extension Dynamic Link Library (DLL), the DLL is the defined connection between the third-party seller's fax routing software and fax service. b. Fax Service (FaxSvc.exe). This service support program provides fax route extensions to perform context. Fax service management fax device and configuration data, providing print devices, and sending and receiving fax files. Fax service also provides initialization and resend fax routing methods for fax routing extensions. In addition, the program source code file must contain fax route extension header file faxroute.h. 4.1.2, Fax Routing Expansion Fax Routing Extensions is an dynamic link library (DLL) that increases routing functions to the fax service. Multiple fax router extensions can be on the same server. When the fax server receives a fax, the received file is transmitted by each fax route through each fax route. Customers use the Microsoft® Management Console (MMC) plugin Fax service management application to set the priority of the sender. Each fax routing extension must generate a series of registration aise and notify the fax service to extend the key value of the extension and fax routing method. If there is a correct entry in the registry, the fax routing extension is loaded when the service is initialized. 4.1.3, Fax Routing Method Introduction The fax routing method is a program that fax routing extension definitions. The fax routing method mainly includes printing fax, store fax, and fax files received. When the service receives a fax file, the fax service calls the fax routing method in priority order. Fax Routing Extensions can support multiple fax routing methods, but the extension must output a specific function named FaxRouRTHOD for each routing method. Routing Extensions must create a registry subkey for each fax route method of extended output. Fax routing methods can perform multiple operations. For example: read the received fax file and convert it from the graphic file to an editable text file. Fax Routing Method cannot delete or modify the original logo image file format, TIFF class F file. 4.1.4, Fax File List Fax Services Contacts the fax document with the fax document with its reception and processing. Fax Routing Method can use the fax route function to add files, delete files and enumeration tables for file lists. Before each fax routing method is run, the unique file in the Fax file list is the received fax file, which is a TIFF Class F file. The fax routing method can create and add one or more files to the fax file list as a read-only source file. Fax service then transmits the received files through multiple fax routing extensions and multiple routing methods in each extension. This increased function is in fact the traditional file filter. For example, the fax routing method of the fax route extension contains the following steps: a. Convert the received TIFF file to text using Optical Character Identification Technology (OCR). b. Create a Microsoft Word document from text. c. Add Word text files to the fax file list related to the received fax. After this instance is executed, any fax routing method can access the Word document in the list of fax files. If the fax route transmits the received fax by using the E-mail program, you can include a Word document and TIFF file in the customer's email information. The fax routing method cannot modify the original TIFF file or remove it from the fax file list. 4.1.5, Initialization Fax Route Extended Fax Service Each time, the FaxRouteInitialize function is called to initialize the fax route extension. If the function call is successful, the fax service is routed by this extended fax routing method by priority order. When the fax service calls FaxRuoteInitialize, the fax routing extension must perform all necessary initialization operations. When the fax service calls FaxrouteInitialize, the fax service passes the pointer to FaxRouteaddFile, FaxRoutedeletefile, FaxRoutegetFile, FaxRouteModifyROUTINGDATA, and FAXROUTEENUMFILES callback function. The service passes the pointer in the Fax_Route_CallbackRoutines structure. The extended fax route method calls these functions management and the fax file list file associated with the receiving fax document. Fax Routing Extensions must store this callback function with a global variable to prepare.

Fax Routing Extensions must output the FaxRouteInitialize function. 4.1.6, Send Fax Fax Routing Extensions Output Multiple FaxRouteMethod routing functions, each routing method corresponds to a function, each function must have a unique name. FaxrouteMethod is the placeholder of the extended definition fax routing method. Fax service transmits the FaxRoute structure to the fax routing method. This structure determines a fax job related to the received fax, including routing information and data to call and receive the fax device. The fax routing method can call the FaxRoutemodifyROUTINGDATA function to change or add routing information for the Fax_Route structure used by the routing method. The routing method to be modified must be lower than the routed method of the call, and must also be run after the route method called. (The priority defines the relative order of the fax service call fax routing method when the service receives fax documents) When the fax service calls the FaxRouteInitialize function, the fax service passes a pointer to the FaxRouteModifyROUTINGDATA callback function and puts this pointer in the FaxRouteCallbackRoutines structure. The FaxRoutegeTroutingInfo function and the FaxRoutetRoutingInfo function retrieves and modifies the fax route configuration information for the specified fax device. Fax Routing Extensions must output the FaxrouteGetroutingInfo and FaxRoutetRoutingInfo functions. 4.1.7, Managing Fax File List Fax Routing Method can call one or more functions to manage a list of fax files related to the receiving fax document. Before the first fax routing method is run, the only file in the Fax file list is the received label image file format, TIFF C. Fax Routing Method can be created with the received TIFF file as a read-only source file to create a fax file list, add one or more files. For example, the routing method can convert the received TIFF file to an editable text file. The text file is then added to the list of fax files associated with the received fax. When adding a file to the fax file list, the fax routing method must call the FaxRouteAddFile function to provide a pointer to the path and name of the text file. Fax Routing Method Call the FaxRoutedeleteFile function to delete the fax routing extension method has increased to files in the fax file list. The fax route method cannot modify the original TIFF file or remove it from the fax file. In order to list files in the fax file list, the fax route can be able to call the FaxROUTEENUMFILES callback function. FaxRouteeEnumFiles delivers a pointer to the FaxRouteEnumFile callback function (routing extension must define a FasRouteEnumFile function). Fax Services Call a FaxRouteNumFile for each file in the fax file list, which returns the full valid path and name of each file in the list. The fax routing method can also use the file index call to modify the FaxRoutegetFile callback function to retrieve a specific file name from the fax file list. The fax routing method must call the FaxRoutegetFile function twice. When the first call, pass a NULL (empty) pointer to the FileNameBuffer parameter. Fax service Set the requiredSize parameter to the size of the filenamebuffer. The fax route method gives the FaxRouteInitialize function specified by the stack you need, then calls FaxRoutegetFile again, this time call faxroutegetFile must pass a valid pointer in the FileNameBuffer parameter. When the fax service calls the FaxRouteInitialize function, the fax service passes the function pointer to FaxrouteaddFile, FaxRoutedeletefile, FaxRoutegetFile, FaxRouting, and FaxRoutenumfile functions. The service delivers pointers in the FaxRouteCallbackRoutines structure.

4.2, Fax Routing Extensions Register Each Fax Routing Extension The fax service must be registered at the time of installation to provide information about the extension and fax routing methods. 4.2.1 Route Route Extended Fax Routing Extensions can be installed directly on the fax server (local installation) or from a computer installation (remote installation). It is recommended to use local installation. (1) Local Install To local registration fax service, the recommended fax route extended DLL follows the following steps instead of directly accessing the registry. a. Copy Fax Route Extended DLL to the ImageName parameter specified by the FaxRegisterRoutingExtension function. b. Call the FaxConnectFaxServer function, define a null (empty) pointer in the MACHINENAME parameter to get the handle of a local server's fax server. c. Call the FaxRegisterRuntingextension function, register the fax route extension DLL. The fax service must be restarted to use the fax route method output from the fax route extension installed by the FaxRegisterRoutingExtension. (2) Remote installation Each fax routing extension DLL must provide the fax service to the fax service by creating a sub-key under the remote computer registry: hkey_local_machine / software / microsoft / fax / routing extensions / Here is a registered independent registration designer name created by fax routing extensions. It is recommended to describe the fax route extension with the primary key name, and the marker can be the company name. To register an extension, you need to set the following two values ​​under the registration deactivation. Value Description FriendlyName Contains Friendly User Display Name Reg_sz String ImageName Contains Fax Route Extensions All Paths and Name Reg_expand_sz strings, or a legal environment variable. 4.2.2, the registration fax routing method provides routing method information about fax routing extensions to fax services. Extensions must create the following registration keys. HKEY_LOCAL_MACHINE / SOFTWARE / Microsoft / Fax / Routing Extensions / / Routing Methods Here is a registered self-key name created by fax routing extensions. Fax Routing Extensions must create a registry subkey for the extended output of each fax routing method. The fax route method extension described by the child key name should be registered. HKEY_LOCAL_MACHINE / SOFTWARE / Microsoft / Fax / Routing Extensions / / Routing Methods / To register the fax routing method, set the following requirements in the registry subkey: Value Description FunctionName Contains Fax Route Extension of Fax Routing Method Function The actual name of the actual name of the output is the REG_SZ string. The GUID contains the legal global unique marker (GUID) REG_SZ string of the fax routing method. The FuncionName entry must include the exact name of the running fax routing method function. The entry is case sensitive, and must include name decoration, and the fax server uses the entry to retrieve the function address of the specified fax routing method when calling the getProcAddress function. To generate a GUID to the routing method, you can run the Voidgen.exe tool, and the GUID formatted for the registry must be an invalid termination string included in the curly brackets. Such as: GUID Due to the following reasons, a fax route must be specified: a. Fax Routing Extended DLL can support multi-routing methods; b. Fax Routing Extension DLL can be per routing method and each Fax device sets unique configuration data; c. Multi-channel fax route extension DLL can output routing methods with the same name.

转载请注明原文地址:https://www.9cbs.com/read-988.html

New Post(0)