(12) United States Patent (10) Patent No.: US 8.493,600 B2 Hutchings Et Al
Total Page:16
File Type:pdf, Size:1020Kb
USOO8493600B2 (12) United States Patent (10) Patent No.: US 8.493,600 B2 Hutchings et al. (45) Date of Patent: Jul. 23, 2013 (54) MULTI-LAYERED PRINTER DRIVER 8,365,164 B1* 1/2013 Morgenstern ................. 717/175 MODEL 2003/0093581 A1 5/2003 Oliver et al. 2005/0O28172 A1 2/2005 Yoshikawa et al. 2007/001393.0 A1 1/2007 Emerson et al. ............. 358,113 (75) Inventors: Justin Hutchings, Issaquah, WA (US); 2007, OO67499 A1 3, 2007 Wolfe et al. Anthony X. Francisco, Woodinville, 2008/0180723 A1 7/2008 Selvaraj WA (US); Shawn Maloney, Redmond, 2008/0250430 A1 10/2008 Salgado et al. WA (US); Andrew Harper, Seattle, WA 2009/0063563 A1* 3/2009 Khangaonkar et al. ... 707/104.1 (US) s s s 2009/0190.150 A1 7/2009 Selvarajet al. 2009/0213395 A1 8, 2009 Ozaki (73) Assignee: Microsoft Corporation, Redmond, WA (US) OTHER PUBLICATIONS c Notice: Subiect t disclai the t f thi “Advances in High-Speed Parallel Port Performance and Port Shar (*) Notice: O E. als N ing.” Warp Nine Engineering, IEEE 1284.3 and 1284.4, Published p is, 36 s CC UC Aug. 16, 2008, 2 pages http://www.fapo.com/1284adv.htm. M YW- y yS. “International Search Report'. Mailed Date: Aug. 14, 2012, Appli (21) Appl. No.: 12/968,051 cation No. PCT/US2011/064751, Filed Date: Dec. 14, 2011, pp. 8. (22) Filed: Dec. 14, 2010 * cited by examiner (65) Prior Publication Data Primary Examiner — Gabriel Garcia US 2012/0147416A1 Jun. 14, 2012 (51) Int. Cl. (57) ABSTRACT G06F 3/12 (2006.01) GO6K 1.5/OO (2006.01) Embodiments of the invention provide a layered printer driver (52) U.S. Cl. model in which, at the “bottom layer a rendering component USPC ......................................... 358/1.15:358/1.13 provides rendering functionality to format information con (58) Field of Classification Search stituting a print job initiated according to a page description USPC ... 358/1.1, 1.13, 1.14, 1.15, 1.18; 707/1043; language that a printer device is designed to process, and one 709/203; 717/108, 175: 719/321 or more other components that provide configuration and/or See application file for complete search history. user experience functionality may “sit atop' the bottom layer. AnVy or all of these higher-level componentsp mavy Suppsupport not (56) References Cited just a single printer device, but a class of printer devices defined by one or more shared characteristics. U.S. PATENT DOCUMENTS 5,926,775 A 7/1999 Brumley et al. 7,505,170 B2 * 3/2009 Emerson et al. ............... 358, 13 20 Claims, 5 Drawing Sheets RequiredFlies= 306 22 RequiredFiles= 34 309 Unidry rendering XPS rendering filters XPS rendering filters SW driver component Configuration data Corfiguration data 305 RequiredClass= RequiredClass=" 2O6 31 XPS rendering fiers Configuration data Outfox river 316 Driver component component Corfiguration data Printexperience app 37 Print experience app 313 U.S. Patent Jul. 23, 2013 Sheet 1 of 5 US 8.493,600 B2 U.S. Patent Jul. 23, 2013 Sheet 2 of 5 US 8.493,600 B2 ZOZ U.S. Patent Jul. 23, 2013 Sheet 3 of 5 US 8.493,600 B2 U.S. Patent Jul. 23, 2013 Sheet 4 of 5 US 8.493,600 B2 U.S. Patent Jul. 23, 2013 Sheet 5 of 5 US 8.493,600 B2 S 5. O US 8.493,600 B2 1. 2 MULTI-LAYERED PRINTERDRIVER the user community that new computing devices will be able MODEL to interoperate with a printer device to print information, many printer device vendors have struggled to keep pace and FIELD OF THE INVENTION provide the drivers needed to support the number of different configurations in use. Perhaps as a result, printer drivers can This invention relates to device drivers, and more particu be error-prone. Because a printer driver is often loaded into larly to printer drivers. the process of a higher-level program attempting to print, the failure of a printer driver often causes the failure of the higher BACKGROUND level program and/or operating system. As a result, printer 10 drivers are one of the most common causes of system failures. A device driver is a body of software code that enables one Applicant has further appreciated that one reason for the or more higher-level computer programs to interact with a deficiencies described above is the model employed by con hardware device. Often, a device driver accepts generic com ventional printer drivers. For example, conventional printer mands from a higher-level computer program with which a drivers include the code that provides rendering, configura user interacts, and translates the commands into lower-level 15 tion and user experience functionality as a unitary body in commands appropriate for the device being driven. By acting which each component is commingled with and interrelated as a translator between a higher-level program and the hard to other components. The various components use data in ware device, the device driver can simplify the programming “helper files' provided by the print subsystem and/or with the of those programs, since providing a standardizedway for the printer driver, and each component employs specific coded programs to interface with a device can allow developers of references to each helper file. Thus, a conventional printer the programs to focus on higher-level program code, and not driver requires full knowledge of each helper file it employs on lower-level machine commands needed to make the device and the entity that provides it. Any changes to the underlying operate. operating system or the printer driver can severely impact the A printer driver is a body of software code that enables driver's operation. As a result, conventional printer drivers are higher-level programs to employ a printer device. In general, 25 difficult to maintain. a printer driver provides three main types of functionality: Some embodiments of the present invention replace this rendering, configuration and user experience functionality. conventional printer driver model with one that is flexible and Rendering functionality provided by a printer driver trans extensible. For example, some embodiments of the invention lates information that the underlying operating system gen provide a printer driver model in which rendering, configu erates when a print function is invoked by a higher-level 30 ration and user experience functionality is provided by sepa computer program into commands and data that comply with rate components, each of which may be made available by a page description language (PDL) used by the printer device any suitable entity, including but not limited to a software (e.g., PostScript, PDF, XPS, PCL5, etc.). Information gener Vendor (e.g., the maker of an operating system under which ated by a printer driver in PDL form may, for example, com the printer driver is designed to execute), hardware vendor prise a stream of data, in text and/or binary format, to be 35 (e.g., the maker of one or more printers which the printer processed by a printer device in printing information. driver is designed to drive), or other entity(ies). Configuration functionality provided by a printer driver Some embodiments of the invention provide a printer enables the printer device to provide information relating to driver model that is both layered and modular. At the “bottom its configuration, Such as the paper sizes it Supports, the layer of this model, a rendering component provides the number of papertrays presently in or out, whetherit Supports 40 rendering functionality needed to translate information gen Stapling, color printing, etc. User experience functionality erated by the operating system when printing is initiated into manages various user dialogues presented to a user via a a format that complies with a PDL which the printer device is screen display, such as options presented during print opera designed to process. The rendering component may, for tion, etc. Often, a “default” user experience is provided by the example, be provided by the maker of the operating system, operating system, but the feature set provided by this default 45 and be tightly integrated with (e.g., incorporated into) the is extended (e.g., by the independent hardware vendor, or print Subsystem of the operating system. Other components IHV... that Supplies the printer device), to Support Such goals as that provide configuration and/or user experience functional branding. ity may “sit atop' this bottom layer. The rendering component may provide a standardized interface for higher-level compo SUMMARY 50 nents, and each higher-level component may take a depen dency from the rendering component. Because higher-level Applicant has appreciated various deficiencies with con components are functionally decoupled from the rendering ventional printer drivers. For example, conventional printer component, but still capable of interoperating with the ren drivers are developed to be device-, operating system-, and dering component in Standardized fashion, the rendering architecture-specific. As a result, a particular conventional 55 component may be modified over time without affecting the printer driver enables higher-level programs to interface with operation of the higher-level components. only a certain brand and model of a printer device, executes As a further improvement over conventional approaches, only under a certain operating system, and only under a some embodiments of the invention provide a printer driver particular processor architecture (e.g., a 32-bit architecture, model in which any or all of the higher-level components that 64-bit, etc.). Thus, if a user employs, as an example, a par 60 provide configuration and user experience functionality may ticular printer brand and model, and a computer executing a Support not just a single device, but a class of devices.