The present teachings relate to systems and methods for auto-configuring installable device options in a Windows™ print queue, and more particularly, to platforms and techniques for invoking transient processes for generating configuration information for printers and other output devices on an event-triggered basis, using operating system resources.
In the field of print driver architectures and platforms, printer manufacturers have long integrated print driver and related software for their particular output devices with commonly available computer operating systems, including the Windows™ family of operating systems. In versions of the Windows™ operating system up to and including the Windows™ 7 operating system, for example, it was possible for original equipment manufacturers (OEMs) to develop executable code as part of a print driver which would query a networked printing device and retrieve data describing the configuration of the device via any protocol, including proprietary protocols. The print driver could then use these data to automatically configure itself based on the capabilities and optional equipment installed on that particular printing device. That code was executed using a callback mechanism and ran with administrative privileges.
However, starting with the Windows™ 8 operating system, a new 4th generation print architecture was introduced. The callback mechanism to allow a print driver to query device configuration data was eliminated. The only remaining mechanism requires the printing device to support specific protocols. Print drivers declare query strings in data files and the operating system, not the print driver executes the queries. Data files are then also used to map query results to installable option states in order to configure the print driver automatically.
Many printing devices do not support the specific protocols or queries necessary to enable automatic configuration in 4th generation print drivers for Windows™ 8 and future versions of the operating system. System administrators would need to manually configure the 4th generation print driver for every printing device that does not support the specific required protocols and queries even if 3rd generation print driver for the same printing device could successfully configure itself.
It may be desirable to provide methods and systems for auto-configuring installable device options in a Windows™ 8 or later print queue, in which printer driver, print queue, and other software or resources can be accessed and used to generate output on printers and other devices which do not support the specific required protocols to enable automatic configuration under the Microsoft Windows™ 8 or later operating system.
The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate embodiments of the present teachings and together with the description, serve to explain the principles of the present teachings. In the figures:
Embodiments of the present teachings relate to systems and methods for auto-configuring installable device options in a Windows™ 8 print queue. More particularly, embodiments relate to platforms and techniques for establishing and executing print queue and related output operations under the Windows™ 8 and later-developed operating systems, in which operating system resources are invoked to allow the monitoring of print queue and other events via the operating system, itself. Once a print queue event is detected, a print configuration module and associated processes and logic can be invoked to execute code to query the device and obtain configuration data via any useful protocol, without a need for the output device itself to be configured to support Windows™ 8-specific standards and protocols.
Reference will now be made in detail to exemplary embodiments of the present teachings, which are illustrated in the accompanying drawings. Where possible the same reference numbers will be used throughout the drawings to refer to the same or like parts.
More specifically and as for instance illustrated in
In aspects, a setup module 50 can be installed under the operating system 62 to install a set of software, resources, and settings related to printing and other output operations. The setup module 50 can install tasks or processes including a monitoring task 52 and a polling task 54, which can operate in conjunction with a task scheduler 64. The task scheduler 64 can be a part of the operating system 62, and operate to monitor various events, threads, applications, and/or processes executing under the operating system 62 on the host device 70. According to aspects, either or both of the monitoring task 52 and the polling task 54 can be instantiated as process having an administrative level of privilege. In aspects, the setup module 50 can also instruct or cause the operating system 62 to begin logging output-related events to an event log 72, including the establishment or updating of a print queue 68 (or queues), the installation or updating of a printer or other output device, and/or other events. In aspects, the operating system 62 can install and manage one or more print driver 66, using which print jobs and other output can be directed to the print queue 68.
The monitoring task 52 can be configured to monitor the event log 72 to detect the occurrence of a print-related task, and/or other output activity. When a print-related task, such as the addition of a print job to the print queue 68, or other event occurs, the monitoring task 52 can detect that event in the event log 72 and perform a set of additional tasks to automatically configure the installable options for the print queue 68 based on the actual current configuration of the printer or other output device. In aspects, the polling task 54 can operate to perform query operations by interrogating connected printers or other devices, but can do using a predetermined time interval, rather than on an event-triggered basis like the monitoring task 52. In aspects, the polling task 54 can be configured to query connected printers or other devices every 4 hours, 6 hours, 8 hours, I day, and/or other periods of time, so that printers and other devices which are attached, detached, and/or updated can have their configuration data regularly refreshed so that users can utilize those devices conveniently, without having to manually update the configuration options.
Once a print queue-related event is detected via the event log 72, the monitoring task 52 can launch the print configuration module 56. The printer configuration module 56 manages relatively short-lived or transient child processes to automatically configure the print driver 66. Each processes launched by or under the printer configuration module 56 can run with the lowest possible privileges under the operating system 62, to minimize security risks. When the host device 70 comprises a print server, the host device 70 can provide BiDi data exchange capabilities for all connected clients.
In general, the use of BiDi data communications allows the printer configuration module 56 to manage and support a number of print-related data and resources, including installable options and/or auto-configuration data set directly in Windows™ 8 format so that the core drivers contained in Windows™ 8 and/or later operating systems will correctly recognize installable output options, transparently. Those options can include features or options such as, for example, stapling, punching, or folding, with details regarding the number, type, location, etc. of each of those paper handling options for each.
The printer configuration module 56 can invoke or instantiate further tasks, logic, or processes to manage print or other output events, on an event-driven basis, for instance executing code using any useful protocol to query a printing device for configuration information. The further tasks or processes invoked by the printer configuration module 56, as illustrated, can be or include a query component module 58 and a data writer module 60. The data writer module 60 can be configured to store the processed results of queries in the manner established in the Windows™ 8 and later family of operating systems so that the print driver will respond as if it has been configured directly by the native method supported by the operating system. The printer configuration module 56 can manage the polling interval and periodically launch the query component module 58 and data writer module 60 as transient child processes, as noted, as well as periodically check for changes such as changes in port assignments, the IP address or host name of output devices, or others.
Once launched, the query component module 58 can, more particularly, access any connected network to which the host device 70 is connected, running as a network service. In aspects, the query component module 58 does not require administrator privileges, or even user-level privileges. The query component module 58 can access and interact with dynamic link libraries (DLLs) and other resources designed to query printing device configuration under pre-Windows™ 8 operating systems in the Windows™ family of operating systems, without necessary modifications to those resources. Those DLLs and other resources can be used to extract and read printer configuration data and/or auto-configuration data for other types of output devices, and report that configuration data to the operating system 62 using standard or proprietary BiDi query structures supported by the printing device. Those and related operations performed by the query component module 58 can include parsing of data files to obtain the attribute and value names for all installable options supported by the printing device. The query component module 58 can query the requested BiDi data for the print queue 68 or other queues specified when the printer configuration module 56 launches the query component module 58. The query component module 58 can likewise convert any legacy data formats into a standard format, such as XML (extensible markup language)-based formats, or others. Query results developed by the query component module 58 can be written to XML or other files on disk or other memory or media. Once the configuration data needed to populate the print queue 68 is acquired, the query component module 58 can exit or terminate promptly as a process under the operating system 62, to avoid processor overhead and enhance security of the operating system 62. In implementations, the print driver module 66 can be configured to apply installable option constraints or rules, for instance, rules which prevent an A3-sized print job from being loaded into print queue 68 for a printer which is not capable of handling that size stock. Other rules, parameters, constraints, or logic can be used.
In addition to the query component module 58, the printer configuration module 56 can invoke the data writer module 60 to perform data output or writing tasks associated with the print queue 68. According to aspects, the data writer module 60 can execute with administrative privileges, and write to a registry key in operating system 62 such as the “PrinterDriverData” registry key in Windows™ 8, and/or to the Queue Property Bag associated with the print queue 68 in Windows™ 8. In connection with writing operations, the data writer module 60 can parse the auto-configuration data from the XML or other files created by the query component module 58 while performing query operations. The data writer module 60 can use that data to configure the print queue 68 using that data, for instance by writing corresponding attribute values to the registry of Windows™ 8 or other operating system. It may be noted that as used herein, a “module” can refer to one or more applications, utilities, threads, processes, services, and/or other logic, or processors or other hardware configured to execute that logic, and/or other resources. A “module” can likewise in cases be discrete, or combined with other modules or resources.
After performing those or other writing or output operations, the data writer module 60 can likewise exit or terminate promptly, both to minimize processor load and reduce security risks. The printer configuration module 56, query component module 58, and data writer module 60 thus cooperate to configure the print driver by writing data to the same locations and in the same format as the native BiDi query architecture of Windows™ 8 would do so that the source of these data is transparent to the print driver.
In 310, the monitoring task 52 can detect the creation, modification, and/or other status of the print queue 68 installed or operating on the host device 70. In aspects, activity related to the print queue 68 can be detected by detecting the entry of events in the event log 72 of the operating system 62. In 312, the printer configuration module 56 can be invoked via the monitoring task 52 and/or other logic based upon the detection of a creation or modification event related to the print queue 68. In 314, the query component module 58 can be initiated via the printer configuration module 56, to execute as relatively short-term or ad hoc tasks.
In 316, the query component module 58 can interrogate the output device to obtain configuration settings, values, and/or options. In 318, the query component module 58 and/or data writer module 60 can retrieve, qualify, and/or install one or more installable options in the configuration of the print queue 68, such as to specify that the printing device has the capability to staple print jobs. In 320, the data writer module 60 can be invoked and/or initiated. In 322, the data writer module 60 and/or related logic can periodically poll any attached printing devices or other output devices for possible configuration changes since the last query, as appropriate. If the polling of 322 detects configuration changes, processing can return to 316. If the polling of 322 does not detect configuration changes, processing can proceed to 324 to repeat, return to a prior processing point, jump to a further processing point, exit, and/or end.
It will be appreciated that while various processing activity, logical decisions, and/or other operations illustrated in
It will likewise be appreciated that the foregoing description is illustrative, and variations in configuration and implementation may occur to persons skilled in the art. For example, while embodiments have been described in which the output delivered to the print queue consists of a printed page, in implementations, the output can take other forms such as a facsimile transmission page, output from a copier or multi-function device, or other output. Similarly, while embodiments have been described in which a print queue is built in a host device such as a print server, in implementations, the print queue can be hosted in other devices or locations, such as a laptop or personal computer, a smartphone or other mobile device, an application or service running in a local or remote network and/or in a cloud network, or others.
Further, while implementations have been described which incorporate a printer configuration module 56, query module 58, data writer module 60, and other modules, logic, and/or services as distinct units, in implementations, any one or more of those modules or related logic can be combined into one or more other modules, logic, and/or services. Likewise, while implementations have been described which incorporate a printer configuration module 56, query module 58, data writer module 60, and other modules, logic, and/or services as individual units, in implementations, those modules or related logic can be divided into two or more other internal or external modules, software logic, and/or services. Other resources described as singular or integrated can in embodiments be plural or distributed, and resources described as multiple or distributed can in embodiments be combined. The scope of the present teachings is accordingly intended to be limited only by the following claims.